Sklearn F-бета-оценка реализации проблем - PullRequest
0 голосов
/ 25 мая 2018

У меня проблема с производительностью классификатора случайного леса после оптимизации гиперпараметров, по-видимому, используемый мной оценщик делает противоположное, чего я хочу.Можете ли вы помочь мне выяснить, где ошибка?Вот подробности.

Я использую функцию scikit-learn make_scorer() для реализации счетчика, который использует fbeta_score() с бета = 0,5 в качестве функции оценки:

fO5_scorer = make_scorer(fbeta_score, beta=0.5)

Я использую этот счетчик в 10-кратной процедуре перекрестной проверки , чтобы найти наилучшие гиперпараметры классификатора случайного леса с использованием рандомизированного поиска по параметрам, определенным в словаре param_dist ('min_samples_leaf', 'min_samples_split', 'n_estimators' и т. д.):

RF_clf = RandomForestClassifier(n_jobs=-1)
cv = cross_validation.KFold(len(X_train), n_folds=10)
random_search_f05 = RandomizedSearchCV(RF_clf, param_distributions=param_dist, scoring=fO5_scorer, n_iter = 50, cv=cv)
tuned_RF = random_search_f05.fit(X_train,y_train)

Затем я вычисляю матрицу путаницы для оценки производительности моей модели натестовый набор, так как я имею дело с проблемой двоичной классификации, это матрица 2x2:

[[ 1109   114]
[  557 13266]]

Поскольку моя проблема сильно разбалансирована и , поэтому точность всегда очень высока Я хочучтобы оценить мою модель, используя точность и вспомнить , поэтому из матрицы путаницы я могу вычислить, что:

  • точность модели: 0,67
  • отзыв модели: 0,90

Чтобы понятьd если моя оптимизация гиперпараметров улучшила мои результаты, я сравниваю производительность этого случайного леса с производительностью другого случайного леса с параметрами по умолчанию:

[[  826   397]
 [  154 13669]]
  • модель с неоптимизированной точностью параметров: 0,84 *Модель 1039 *
  • с неоптимизированными параметрами отзыва: 0,68

Я вижу, что отзыв модели с оптимизированными гиперпараметрами увеличил ее отзыв и снизил точность.

Проблема в том, что, поскольку я определил счетчика с помощью показателя f-0,5, я ожидал противоположного поведения!Фактически также согласно документации :

Бета-параметр определяет вес точности в комбинированном балле.бета <1 придает больший вес точности, в то время как бета> 1 способствует отзыву (бета -> 0 учитывает только точность, бета -> инфу только отзыв).

Так как я установил свою бету на0,5 у меня должна быть повышена точность.Кажется, что это также верно в соответствии с определением википедии :

F-мера была получена таким образом, что F-β "измеряет эффективность поиска по отношению к пользователю, который прикрепляет«В 10 раз важнее вспомнить, чем точность»

Так почему же у меня противоположный результат?Я неправильно определил своего бомбардира?


РЕДАКТИРОВАТЬ:

для оценки матрицы путаницы и точности и отзыва Я использую следующее:

from sklearn.metrics import confusion_matrix
from sklearn.metrics import recall_score
from sklearn.metrics import precision_score

, а затем для модели с параметрами "по умолчанию":

y_pred_def = RF_default.predict(X_test)
cm_def = confusion_matrix(y_true, y_pred_def,labels = [1,0])

и для модели с оптимизированными гиперпараметрами:

y_pred = tuned_RF.predict(X_test)
cm = confusion_matrix(y_true, y_pred,labels = [1,0])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...