Понимание точности SGD, когда вся информация присуща самим данным - PullRequest
0 голосов
/ 09 октября 2019

Я играю с Scikit, особенно использую SGD для классификации бинарного класса.

В тестовом прогоне я хотел посмотреть, насколько хорошо он работает, когда сам класс уже скрыт в самих данных.

data_X = data.drop('class', axis=1)
data_y = data['class'].copy()
data_X['dummy'] = data_y

Запустив некоторые тесты, мы увидим, что точность / точность/ отзыв довольно плох:

sgd_clf = SGDClassifier()
sgd_clf.fit(data_X, data_y)
cross_val_score(sgd_clf, data_X, data_y, cv=3, scoring="accuracy")

массив ([0.96720031, 0.96720031, 0.96720031]) # Вероятность нахождения в классе большинства

y_train_pred = cross_val_predict(sgd_clf, data_X, data_y, cv=3)

(0.0, 0.0)

Так что, как я понимаю, нет ничего необычного, что SGD делает здесь за сценой. Просто возвращение класса большинства.

Теперь я все еще далек от понимания того, как этот алгоритм работает под капотом, и в то же время мне интересно,

  1. Это его ожидаемое поведение или я пропускаюкакая-то важная часть здесь?
  2. Есть ли способ получить более сложный прогноз (не просто выбрасывая класс большинства), используя SGD для такого набора данных?
...