LibSVM – це спеціалізована бібліотека для машин опорних векторів (Support Vector Machines, SVM). ЇЇ розробку розпочали у 2000 році Chih-Chung Chang і Chih-Jen Lin в Національному тайванському університеті [Chang 2011] [LibSVM].
Ця бібліотека написана на C/C++, але має також вихідний код на Java. Підтримувані завдання навчання:
1) класифікація за допомогою опорних векторів (бінарна та мультикласова)
2) регресія за допомогою опорних векторів
3) оцінка розподілу.
Підтримувані формулювання проблем:
- C-Support Vector класифікація
- ν-Support Vector класифікація
- оцінка розподілу (однокласовий SVM)
- ɛ-Support Vector регресія
- νSupport Vector регресія.
Всі формулювання є завданнями квадратичної мінімізації і вирішуються за допомогою послідовного алгоритму мінімальної оптимізації. Час роботи з мінімізації квадратичних проблем SVM скорочується за рахунок стиснення і кешування. LibSVM надає деякі спеціальні налаштування для незбалансованих даних, використовуючи різні параметри штрафу в формулюванні проблеми SVM. Він був успішно використаний в комп’ютерному зорі, обробці природньої мови, нейровізуалізації та біоінформатиці (з 2000 по 2010 рік з 250000 завантаженнями). Він також включений до деяких середовища DM: RapidMiner, PCP і LIONsolver. Код навчання SVM з бібліотеки часто використовується в інших наборах інструментів ML з відкритим вихідним кодом, включаючи GATE [Gate], KNIME [Knime], Orange [Orange] і scikit-learn.
Бібліотека дуже популярна в громаді відкритого вихідного коду ML (випущена за ліцензією 3-clause BSD). LibSVM версія 3.24 випущена в вересні 2019 року.
Сильні сторони:
- Формат даних LibSVM – це спеціальний формат даних для інструменту аналізу даних LibSVM, який підтримується в інших середовищах і бібліотеках. Формат компактний і підходить для опису і обробки великих даних, особливо тому, що він допускає розріджене представлення.
- Має відкритий вихідний код, добре підтримуваний і спеціалізований інструмент з високою популярністю в громаді відкритого вихідного коду ML.
Слабкі сторони:
- Навчання алгоритмів LibSVM погано масштабується для дуже великих наборів даних у порівнянні з LibLinear або Vowpal Wabbit [Zygmunt 2014]. У гіршому випадку потрібен час O (n³), а в типових випадках – близько O (n²).
- Бібліотека обмежена колом проблем, для яких добре підходить SVM.