Используется SequentialFeatureSelector, но не повышает точность модели - PullRequest
0 голосов
/ 29 января 2019

Я выбираю функции для построения модели прогнозирования оттока.С RandomForestClassifier я получил точность 0,9517, и она показала 16 объектов, выбранных как часть этого.

Однако, если я подгоняю модель, используя тот же список из 16 объектов с RandomForestClassifier отдельно, он показывает показатель точности0,8714, Почему существует огромная разница в показателе точности, хотя я использовал тот же список функций, выбранный SequentialFeatureSelector?

[2019-01-28 17:51:16] Особенности: 16/16- счет: 0,9517879681082387 [Параллельно (n_jobs = 1)]: выполнено 1 из 1 |прошло: 3,6 с: 0,0 с

rand_forest = RandomForestClassifier(bootstrap=True, 
                class_weight=None, criterion='gini',
                max_depth=None, max_features='auto', 
                max_leaf_nodes=None,
                min_impurity_decrease=0.0, min_impurity_split=None,
                min_samples_leaf=1, min_samples_split=2,
                min_weight_fraction_leaf=0.0, n_estimators=100, n_jobs=1,
                oob_score=False, random_state=None, verbose=0,
                warm_start=False)

SequentialFeatureSelector(clone_estimator=True, cv=0,
             estimator=rand_forest,
             floating=False, forward=True, k_features=16, n_jobs=1,
             pre_dispatch='2*n_jobs', scoring='accuracy', verbose=2)

xtr, xtst, ytr, ytst = train_test_split(x, y, random_state=5, test_size=0.2)

rfst = RandomForestClassifier(n_estimators=100)

rfstmodel = rfst.fit(xtr, ytr)

rfstmodel.score(xtst, ytst)

>>> 0.8714975845410629

1 Ответ

0 голосов
/ 29 мая 2019

Классификаторы произвольного леса не просто рандомизируют объекты, они также случайным образом разделяют эти функции, поэтому, даже если ваши объекты остаются прежними, ваши функциональные разделения генерируются случайным образом каждый раз, что может вносить некоторую разницу вмодель.Для более упорядоченной модели с в среднем меньшей дисперсией я рекомендую модель с усилением градиента или еще лучше XGBoost .

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

Следовательно, в случайном лесу алгоритм случайного подбора узла учитывает только случайное подмножество признаков. Вы даже можете сделать деревья более случайными, дополнительно используя случайные пороговые значения для каждой функции вместо поиска наилучших возможных порогов (как это делает обычное дерево решений).

Источник:https://towardsdatascience.com/the-random-forest-algorithm-d457d499ffcd

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