Сравнение разных методов оценки важности предикторов.

17 июня 2020, 15:44
Forester
0
407

Провел сравнение разных методов оценки важности предикторов.
Тесты проводил на данных титаника (36 фичей и 891 строки) при помощи случайного леса из 100 деревьев.
Распечатка с результатами ниже.
За образец с которым можно сравнивать все методы взял результаты оценки предикторов с реальным удалением предиктора/столбца из обучающего набора и повторного обучения модели. Т.е. 35 раз обучил модель удалив один из 35 столбцов. Это долго, но это точная оценка. Изменение ошибки в сравнении с обучением на всех столбцах дает важность предиктора, которую можно считать образцом для других методов.

Итак сравниваем:

Variable importance by Frequency - совершенно неадекватный разультат, в этом методе рассчитывается количество попадания предиктора в узел (совершенно не учитывается на сколько изменилась ошибка). Сравнивать детально нет смысла.

Features Gini Importance (NRMS)  TRAIN (MDI) - сложный метод, который вычисляет изменение ошибки по каждому предиктору. Таблица сравнения приведена ниже.
Пояснения по первым строкам сравнения. Лучше всего сравнивать по смещению предиктора в таблице важности относительно образца.

1) 0 pos2=1 (+1) sign:++  - образцовая важность 0 предиктора на 1месте, pos2=1 - позиция 0 предиктора полученая из метода GINI; (+1) смещение относительно образца
2) 30 pos2=5 (+4) sign:++ (смещение +4)
3) 1 pos2=7 (+5) sign:++  (смещение +5)
4) 6 pos2=10 (+7) sign:++ (смещение +7)

Порядок важности всех предикторов очень сильно отличается от образцовой.

Features Permutation Importance и Features True Permutation Importance (просто немного усовершенствован алгоритм, но идея та же) - методы в которых проверяемый столбец перемешивается, в результате получим рандомизацию влияния проверяемого столбца, которая при большом числе строк даст в среднем нулевой результат (сумма строк белого шума примерно равна 0), что эквивалентно исключению этого столбца из обучения.

Из таблицы сравнения видно, что порядок важности предикторов тоже сильно отличается от образцового.

Выводы:

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

Еще одно замечание. При реальном удалении предиктора, его место займет самый близкий по корреляции к нему другой предиктор и почти полностью восстановит результат модели. А в тайм сериях каждому бару очень близки по 3-5 баров слева и справа.
С другой стороны для методов быстрой оценки предиктора, такой замены не произойдет и изменение ошибки в быстрых методах будет более сильным. Это видно по таблицам важности:
в методе по реальному удалению, удаление 0 предиктора ухудшает ошибку на 0,0135 (вместо удаленного лес использовал другой наилучший предиктор), а по пермутации на 0,0695 (удаленный предиктор не подменился другим, это решение не являеся наилучшим, как при настоящем обучении леса).


Colunns = 36 Rows = 891

0 class Accuracy = (T[class]=515 / Rows[class]=549) = 0.938069
Total True =772 Total Accuracy = (T=772 / Rows=891) = 0.866442
Accuracy = 0.866442

Delete 1  columns from 35
Features Importance by delete
#, #feature, absolute value, related value in %
0) 0    0.013506 100%   ##################################################
1) 30   0.008460 62%    ################################
2) 1    0.006204 45%    #######################
3) 6    0.003395 25%    #############
4) 31   0.002839 21%    ###########
5) 33   0.002665 19%    ##########
6) 22   0.001598 11%    ######
7) 3    0.001456 10%    ######
8) 20   0.001388 10%    ######
9) 18   0.001265 9%     #####
10) 4   0.001091 8%     #####
11) 29  0.001036 7%     ####
12) 11  0.001013 7%     ####
13) 26  0.000998 7%     ####
14) 8   0.000979 7%     ####
15) 2   0.000955 7%     ####
16) 12  0.000572 4%     ###
17) 16  0.000566 4%     ###
18) 32  0.000551 4%     ###
19) 25  0.000453 3%     ##
20) 28  0.000354 2%     ##
21) 14  0.000345 2%     ##
22) 24  0.000330 2%     ##
23) 23  0.000330 2%     ##
24) 15  0.000323 2%     ##
25) 19  0.000194 1%     #
26) 34  0.000181 1%     #
27) 10  0.000102 0%     #
28) 5   0.000087 0%     #
29) 9   0.000023 0%     #
30) 13  0.000010 0%     #
31) 7   -0.000095 0%
32) 21  -0.000097 0%
33) 27  -0.000448 -3%
34) 17  -0.000636 -4%
Predictors not change the error:

Variable importance by Frequency
#, #feature, absolute value, related value in %
0) 30   1334.000000 100%##################################################
1) 1    1228.000000 92% ###############################################
2) 0    272.000000 20%  ###########
3) 22   197.000000 14%  ########
4) 33   180.000000 13%  #######
5) 31   171.000000 12%  #######
6) 28   105.000000 7%   ####
7) 32   104.000000 7%   ####
8) 26   96.000000 7%    ####
9) 12   91.000000 6%    ####
10) 27  86.000000 6%    ####
11) 3   74.000000 5%    ###
12) 34  63.000000 4%    ###
13) 13  59.000000 4%    ###
14) 16  59.000000 4%    ###
15) 21  57.000000 4%    ###
16) 6   57.000000 4%    ###
17) 5   53.000000 3%    ##
18) 24  45.000000 3%    ##
19) 18  45.000000 3%    ##
20) 29  38.000000 2%    ##
21) 2   35.000000 2%    ##
22) 23  33.000000 2%    ##
23) 11  30.000000 2%    ##
24) 25  29.000000 2%    ##
25) 4   23.000000 1%    #
26) 17  3.000000 0%     #
27) 15  2.000000 0%     #
28) 14  1.000000 0%     #
Predictors not change the error: 10,9,7,8,19,20,

Features Gini Importance (NRMS)  TRAIN (MDI)
#, #feature, absolute value, related value in %
0) 3    17.941307 100%  ##################################################
1) 0    7.069130 39%    ####################
2) 24   5.258089 29%    ###############
3) 23   3.718412 20%    ###########
4) 25   3.346848 18%    ##########
5) 30   3.080207 17%    #########
6) 33   2.246968 12%    #######
7) 1    1.693750 9%     #####
8) 13   1.495716 8%     #####
9) 2    1.273467 7%     ####
10) 6   1.203215 6%     ####
11) 12  1.158759 6%     ####
12) 31  1.046759 5%     ###
13) 21  0.440127 2%     ##
14) 26  0.397393 2%     ##
15) 22  0.388954 2%     ##
16) 27  0.294210 1%     #
17) 32  0.197350 1%     #
18) 11  0.169111 0%     #
19) 18  0.165257 0%     #
20) 34  0.096547 0%     #
21) 5   0.093502 0%     #
22) 29  0.089868 0%     #
23) 28  0.079289 0%     #
24) 16  0.070346 0%     #
25) 4   0.020080 0%     #
26) 17  0.004321 0%     #
27) 15  0.002505 0%     #
28) 14  0.000128 0%     #
Predictors not change the error: 10,9,7,8,19,20,

Compare methods of feature importance (by Delete and GINI)
1) 0 pos2=1 (+1) sign:++
2) 30 pos2=5 (+4) sign:++
3) 1 pos2=7 (+5) sign:++
4) 6 pos2=10 (+7) sign:++
5) 31 pos2=12 (+8) sign:++
6) 33 pos2=6 (+1) sign:++
7) 22 pos2=15 (+9) sign:++
8) 3 pos2=0 (-7) sign:++
9) 20 pos2=34 (+26) sign:++
10) 18 pos2=19 (+10) sign:++
11) 4 pos2=25 (+15) sign:++
12) 29 pos2=22 (+11) sign:++
13) 11 pos2=18 (+6) sign:++
14) 26 pos2=14 (+1) sign:++
15) 8 pos2=32 (+18) sign:++
16) 2 pos2=9 (-6) sign:++
17) 12 pos2=11 (-5) sign:++
18) 16 pos2=24 (+7) sign:++
19) 32 pos2=17 (-1) sign:++
20) 25 pos2=4 (-15) sign:++
21) 28 pos2=23 (+3) sign:++
22) 14 pos2=28 (+7) sign:++
23) 24 pos2=2 (-20) sign:++
24) 23 pos2=3 (-20) sign:++
25) 15 pos2=27 (+3) sign:++
26) 19 pos2=33 (+8) sign:++
27) 34 pos2=20 (-6) sign:++
28) 10 pos2=29 (+2) sign:++
29) 5 pos2=21 (-7) sign:++
30) 9 pos2=30 (+1) sign:++
31) 13 pos2=8 (-22) sign:++
32) 7 pos2=31 (0) sign:-+
33) 21 pos2=13 (-19) sign:-+
34) 27 pos2=16 (-17) sign:-+
35) 17 pos2=26 (-8) sign:-+
Num errors by sign = 4

Features Permutation Importance
#, #feature, absolute value, related value in %
0) 3    0.096964 100%   ###################################################
1) 0    0.069555 71%    ####################################
2) 24   0.039199 40%    #####################
3) 23   0.030613 31%    ################
4) 30   0.026663 27%    ##############
5) 25   0.023759 24%    #############
6) 1    0.016316 16%    #########
7) 33   0.012813 13%    #######
8) 6    0.011882 12%    #######
9) 13   0.009370 9%     #####
10) 2   0.007183 7%     ####
11) 12  0.007017 7%     ####
12) 22  0.006730 6%     ####
13) 31  0.006193 6%     ####
14) 26  0.003311 3%     ##
15) 27  0.002906 2%     ##
16) 21  0.002115 2%     ##
17) 28  0.001899 1%     #
18) 34  0.001228 1%     #
19) 29  0.000783 0%     #
20) 11  0.000775 0%     #
21) 18  0.000676 0%     #
22) 5   0.000458 0%     #
23) 4   0.000090 0%     #
24) 16  0.000031 0%     #
31) 15  -0.000005 0%
32) 14  -0.000007 0%
33) 17  -0.000025 0%
34) 32  -0.000150 0%
Predictors not change the error: 20,19,7,8,9,10,
Features True Permutation Importance
#, #feature, absolute value, related value in %
0) 3    0.092543 99%    ##################################################
1) 6    0.062936 68%    ###################################
2) 0    0.057815 62%    ################################
3) 24   0.051017 55%    ############################
4) 23   0.035284 38%    ####################
5) 25   0.031870 34%    ##################
6) 12   0.021437 23%    ############
7) 30   0.019658 21%    ###########
8) 13   0.017402 18%    ##########
9) 22   0.013807 14%    ########
10) 33  0.013772 14%    ########
11) 1   0.012057 13%    #######
12) 2   0.007651 8%     #####
13) 31  0.003851 4%     ###
14) 28  0.002883 3%     ##
15) 21  0.000413 0%     #
16) 26  -0.002328 -2%
17) 11  -0.002459 -2%
18) 27  -0.002560 -2%
19) 18  -0.002718 -2%
20) 16  -0.004458 -4%
21) 5   -0.005472 -5%
22) 29  -0.006211 -6%
23) 34  -0.006267 -6%
24) 4   -0.006505 -7%
25) 17  -0.006755 -7%
26) 15  -0.006796 -7%
27) 14  -0.006904 -7%
28) 10  -0.006911 -7%
29) 7   -0.006911 -7%
30) 8   -0.006911 -7%
31) 9   -0.006911 -7%
32) 19  -0.006911 -7%
33) 20  -0.006911 -7%
34) 32  -0.012289 -13%
Predictors not change the error:

Compare methods of feature importance (by delete and true permutation)

1) 0 pos2=2 (+2) sign:++
2) 30 pos2=7 (+6) sign:++
3) 1 pos2=11 (+9) sign:++
4) 6 pos2=1 (-2) sign:++
5) 31 pos2=13 (+9) sign:++
6) 33 pos2=10 (+5) sign:++
7) 22 pos2=9 (+3) sign:++
8) 3 pos2=0 (-7) sign:++
9) 20 pos2=33 (+25) sign:+-
10) 18 pos2=19 (+10) sign:+-
11) 4 pos2=24 (+14) sign:+-
12) 29 pos2=22 (+11) sign:+-
13) 11 pos2=17 (+5) sign:+-
14) 26 pos2=16 (+3) sign:+-
15) 8 pos2=30 (+16) sign:+-
16) 2 pos2=12 (-3) sign:++
17) 12 pos2=6 (-10) sign:++
18) 16 pos2=20 (+3) sign:+-
19) 32 pos2=34 (+16) sign:+-
20) 25 pos2=5 (-14) sign:++
21) 28 pos2=14 (-6) sign:++
22) 14 pos2=27 (+6) sign:+-
23) 24 pos2=3 (-19) sign:++
24) 23 pos2=4 (-19) sign:++
25) 15 pos2=26 (+2) sign:+-
26) 19 pos2=32 (+7) sign:+-
27) 34 pos2=23 (-3) sign:+-
28) 10 pos2=28 (+1) sign:+-
29) 5 pos2=21 (-7) sign:+-
30) 9 pos2=31 (+2) sign:+-
31) 13 pos2=8 (-22) sign:++
32) 7 pos2=29 (-2) sign:--
33) 21 pos2=15 (-17) sign:-+
34) 27 pos2=18 (-15) sign:--
35) 17 pos2=25 (-9) sign:--
Num errors by sign = 17


Поделитесь с друзьями: