LibSVM

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.