Как функции ранжируются в RFECV в scikit Learn (sklearn)?

Я использовал рекурсивное устранение признаков и перекрестную проверку (rfecv), чтобы найти лучший показатель точности для нескольких имеющихся у меня признаков (m = 154).

rfecv = RFECV(estimator=logreg, step=1, cv=StratifiedKFold(2),
              scoring='accuracy')
rfecv.fit(X, y)

Меня смущают рейтинги (rfecv.ranking_) и связанные с ними баллы (rfecv.grid_scores_). Как видно из 13 лучших функций (попавших в 10 лучших), их ранги не основаны на баллах. Я понимаю, что ранжирование как-то связано с тем, как и когда функция была исключена в процессе перекрестной проверки. Но тогда как оценка связана с рейтингом? Я ожидаю, что функции с наивысшим рейтингом будут иметь самые высокие оценки.

Features/Ranking/Scores
b       1       0.692642743
a       1       0.606166207
f       1       0.568833672
i       1       0.54935204
l       2       0.607564808
j       3       0.613495238
e       4       0.626374391
l       5       0.581064621
d       6       0.611407556
c       7       0.570921354
h       8       0.570921354
k       9       0.576863707
g       10      0.576863707

person Liam Hanninen    schedule 27.02.2017    source источник
comment
Вы неверно истолковываете grid_scores_ и ranking_. Никакой корреляции у них нет. grid_scores_ — это не множество функций.   -  person Vivek Kumar    schedule 28.02.2017
comment
Какие у них баллы? Можете ли вы уточнить? Тогда какие рейтинги? Спасибо, что нашли время.   -  person Liam Hanninen    schedule 28.02.2017
comment
Из документации: оценки перекрестной проверки такие, что grid_scores_[i] соответствует оценке CV i-го подмножества функций. Они не представляют собой оценку характеристик. Они представляют собой оценку оценщика при выборе определенных функций.   -  person Vivek Kumar    schedule 01.03.2017
comment
Вы запутались, потому что размер grid_scores_ такой же, как ranking_. Измените step на более чем 1, чтобы увидеть эффект.   -  person Vivek Kumar    schedule 01.03.2017


Ответы (1)


_grid_scores не является оценкой для i-го признака, это оценка, полученная оценщиком при обучении с i-м подмножеством признаков.

Чтобы понять, что это значит, помните, что рекурсивное устранение признаков (RFE) работает путем обучения модели, ее оценки, затем удаления step наименее значимых признаков и повторения.

Итак, _grid_score[-1] будет баллом оценщика, обученного по всем функциям. _grid_score[-2] будет результатом оценки с удаленными step признаками. _grid_score[-3] будет результатом оценки с удаленными 2*step признаками.

Таким образом, оценки сетки не отражают оценку отдельных функций. На самом деле, если шаг больше 1, баллов сетки будет меньше, чем признаков.

person Nimrand    schedule 18.07.2017
comment
Большое спасибо! Как узнать, какие функции входят в каждое подмножество? - person Liam Hanninen; 18.07.2017
comment
Функции исключаются в порядке, обратном ранжированию. К сожалению, вы не знаете, в каком порядке исключались признаки среди признаков ранга 1 (т. е. выбранных признаков). - person Nimrand; 19.07.2017