Что делает sklearn "RidgeClassifier"? - PullRequest
0 голосов
/ 24 декабря 2018

Я пытаюсь понять разницу между RidgeClassifier и LogisticRegression в sklearn.linear_model.Я не мог найти это в документации.

Мне кажется, я хорошо понимаю, что делает LogisticRegression. Он вычисляет коэффициенты и перехватывает, чтобы минимизировать half of sum of squares of the coefficients + C times the binary cross-entropy loss, где C - параметр регуляризации.Я проверил наивную реализацию с нуля, и результаты совпадают.

Результаты RidgeClassifier различаются, и я не мог понять, как там вычисляются коэффициенты и перехват?Глядя на код Github, я недостаточно опытен, чтобы распутать его.

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

Спасибо за возможную помощь.

1 Ответ

0 голосов
/ 24 декабря 2018

RidgeClassifier() работает иначе, чем LogisticRegression() со штрафом l2.Функция потерь для RidgeClassifier() не является кросс-энтропией.

RidgeClassifier() использует регрессионную модель Ridge() следующим образом для создания классификатора:

Для простоты рассмотрим двоичную классификацию .

  1. Создать целевую переменную со значением +1 или -1 на основе класса, к которому она принадлежит.

  2. Создайте Ridge() регрессионную модель (которая является моделью регрессии), чтобы предсказать нашу целевую переменную.Функция потерь равна RMSE + l2 penality

  3. Если значение предсказания регрессии Ridge() (рассчитанное на основе функции decision_function()) большечем 0, то прогнозировать как положительный класс, иначе как отрицательный класс.

Для мультиклассовой классификации :

  1. Использовать LabelBinarizer(), чтобы создать сценарий регрессии с несколькими выходами, а затем обучить независимые Ridge() модели регрессии, по одной для каждого класса (моделирование один-против-отдыха).

  2. Получите прогноз из Ridge() регрессионной модели каждого класса (действительное число для каждого класса), а затем используйте argmax для прогнозирования класса.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...