hal*_*_me 9 python machine-learning decision-tree random-forest scikit-learn
我通过scikit-learn
图书馆学习机器学习.我使用以下代码将决策树分类器和随机森林分类器应用于我的数据:
def decision_tree(train_X, train_Y, test_X, test_Y):
clf = tree.DecisionTreeClassifier()
clf.fit(train_X, train_Y)
return clf.score(test_X, test_Y)
def random_forest(train_X, train_Y, test_X, test_Y):
clf = RandomForestClassifier(n_estimators=1)
clf = clf.fit(X, Y)
return clf.score(test_X, test_Y)
Run Code Online (Sandbox Code Playgroud)
为什么随机森林分类器的结果更好(100次运行,随机抽样2/3的数据用于训练,1/3用于测试)?
100%|???????????????????????????????????????| 100/100 [00:01<00:00, 73.59it/s]
Algorithm: Decision Tree
Min : 0.3883495145631068
Max : 0.6476190476190476
Mean : 0.4861783113770316
Median : 0.48868030937802126
Stdev : 0.047158171852401135
Variance: 0.0022238931724605985
100%|???????????????????????????????????????| 100/100 [00:01<00:00, 85.38it/s]
Algorithm: Random Forest
Min : 0.6846846846846847
Max : 0.8653846153846154
Mean : 0.7894823428836184
Median : 0.7906101571063208
Stdev : 0.03231671150915106
Variance: 0.0010443698427656967
Run Code Online (Sandbox Code Playgroud)
带有一个估算器的随机森林估算器不仅仅是一个决策树?我做错了什么或误解了这个概念吗?
感谢您的回复.
des*_*aut 17
带有一个估算器的随机森林估算器不仅仅是一个决策树?
嗯,这是一个很好的问题,答案结果是否定的 ; 随机森林算法不仅仅是一个单独生成的决策树的简单包.
除了集合许多树所引起的随机性之外,随机森林(RF)算法在以两种不同方式构建单个树时也包含随机性,其中没有一种存在于简单决策树(DT)算法中.
第一个是在每个树节点上寻找最佳分割时要考虑的特征数量:当DT考虑所有特征时,RF会考虑它们的随机子集,其大小等于参数max_features
(请参阅文档).
第二个是,当DT考虑整个训练集时,单个RF树只考虑它的自举子样本; 从文档再次:
子样本大小始终与原始输入样本大小相同,但如果bootstrap = True(默认),则使用替换绘制样本.
RF算法基本上是两个独立想法的组合:装袋和随机选择功能(请参阅维基百科条目以获得精彩的概述).套袋基本上是我的第二点,但适用于整体; 随机选择的特征是我上面的第一点,似乎它是由Tin Kam Ho在Breiman的RF之前独立提出的(再次参见维基百科条目).Ho已经建议单独随机特征选择可以提高性能.这不完全是你在这里所做的(你仍然使用套袋中的bootstrap采样想法),但你可以通过设置bootstrap=False
你的RandomForestClassifier()
参数轻松复制Ho的想法.事实是,鉴于这项研究,性能的差异并不出乎意料......
要准确复制单个树的行为RandomForestClassifier()
,您应该使用both bootstrap=False
和max_features=None
arguments,即
clf = RandomForestClassifier(n_estimators=1, max_features=None, bootstrap=False)
Run Code Online (Sandbox Code Playgroud)
在这种情况下,既不会进行自举采样也不会进行随机特征选择,并且性能应该大致等于单个决策树的性能.
归档时间: |
|
查看次数: |
1441 次 |
最近记录: |