В sklearn есть разница между моделью SVM с линейным ядром и классификатором SGD с потерей = шарниром

Я вижу, что в scikit-learn я могу построить классификатор SVM с линейным ядром в 3 разных способах:

Теперь я вижу, что разница между первыми двумя классификаторами заключается в том, что первая реализована в терминах liblinear, а вторая - в libsvm.

Как первые два классификатора отличаются от третьего?

Ответ 1

Первые два всегда используют полные данные и решают проблему выпуклой оптимизации в отношении этих точек данных.

Последний может обрабатывать данные партиями и выполнять градиентный спуск, чтобы минимизировать ожидаемые потери в отношении распределения выборки, предполагая, что примеры являются примерами iid этого распределения.

Последнее обычно используется, когда количество образцов очень велико или не заканчивается. Обратите внимание, что вы можете вызвать функцию partial_fit и передать его кускам данных.

Надеюсь это поможет?