В данном репозитории представлена реализация метода опорных векторов (далее SVM - Support Vector Machine) для классификации данных. Также были реализованы основные метрики задачи классификации и кросс-валидация.
Реализовано:
-
Бинарный SVM классификатор (на основе решения задачи квадратичного программирования (QP) методом SMO)
Используется упрощенный вариант SMO в том смысле, что для выбора оптимальных параметров ai и aj используется упрощенная эвристика - индекс j выбирается случайным образом. Такой вариант сокращает время обучения алгоритма, однако пара ai и aj может получаться не всегда самой оптимальной - поэтому от запуска к запуску качество классификации может немного отличаться.
-
Многоклассовый SVM классификатор (на основе бинарного с применением метода один против всех (OVA - Ove-vs-All или OVR - One-vs-Rest))
Каждый классификатор обучается в отдельной горутине (пояснение: горутина - легковесный поток - объект языка Go), что сокращает время обучения и оптимизирует использование ресурсов компьютера.
Реализовано:
- Бинарные метрики
- Accuracy
- Precision
- Recall
- F-score
- F-beta
-
Многоклассовые метрики метрики
Бинарные метрики представлены с возможностью следующих усреднений:
- Микроусреднение
- Макроусреднение
- Взвешенное усреднение
Реализовано:
- K-fold кросс-валидация
Для каждого фолда обучение и тестирование алгоритма происходит независимо - в отдельной горутине. Это сокращает время и оптимизирует использование ресурсов компьютера.