作家
登录

从决策树到随机森林:树型算法的原理与实现

作者: 来源: 2017-08-06 12:48:29 阅读 我要评论

随机丛林模型

固然袋装技巧(Bagging)经由过程降低方差而进步了一般决定计划树的猜测机能,但它还碰到了其他缺点:Bagging 请求我们在自助样本上生成整棵树,这就增长了 B 倍计算复杂度。此外,因为基于 Bagging 的树是相接洽关系的,猜测精度会根据 B 而饱和。

随机丛林经由过程随机扰动而令所有的树去相干,是以随机丛林要比 Bagging 机能更好。随机丛林不像 Bagging,在构建每一棵树时,每一个结点瓜分前都是采取随机样本猜测器。因为在核心思惟上,随机丛林照样和 Bagging 树一样,是以其在方差上有所削减。此外,随机丛林可以推敲应用大年夜量猜测器,不仅因为这种方法削减了误差,同时局部特点猜测器在树型构造中充当重要的决定计划。

随机丛林可以应用巨量的猜测器,甚至猜测器的数量比不雅察样本的数量还多。采取随机丛林办法最明显的优势是它能获得更多的信息以削减拟合数值和估计瓜分的误差。

平日我们会有一些猜测器能主导决定计划树的拟合过程,因为它们的平均机能始终要比其他一些竞争猜测器更好。是以,其它很多对局部数据特点有效的猜测器并不会选定作为瓜分变量。跟着随机丛林计算了足够多的决定计划树范型,每一个猜测器都至少有几回机会能成为定义瓜分的猜测器。大年夜多半情况下,我们不仅仅只有主导猜测器,特点猜测器也有机会定义数据集的瓜分。

随机丛林有三个重要的超参数调剂:

  • 结点范围:随机丛林不像决定计划树,每一棵树叶结点所包含的不雅察样本数量可能十分少。该超参数的目标是生成树的时刻尽可能保持小误差。
  • 树的数量:在实践中选择数百棵树一般是比较好的选择。
  • 猜测器采样的数量:一般来说,如不雅我们一共有 D 个猜测器,那么我们可以在回归义务中应用 D/3 个猜测器数作为采样数,在分类义务中应用 D^(1/2) 个猜测器作为抽样。 

随机丛林模型案例

应用和上文一样的收入数据,如今我们构建一个包含 500 棵树的简单随机丛林分类器模型:

它是贪婪的(greedy),这是因为在创建树过程中的每一步调,最佳瓜分都邑在每个特定步调选定,而不是对将来进行猜测,并拔取一个将会在将来步调中出现且有助于创建更好的树的分隔。留意所有的划分区域 R_j 都是矩形。为了进行递归二元瓜分,起首拔取猜测器 X_j 和切割点 s

rclf = RandomForestClassifier(n_estimators=500)rclf.fit(x_train, y_train)rclf.score(x_test, y_test)

即使没有任何优化,我们仍然发明模型机能可以和已优化决定计划树分类器相媲美,并且测试分达到了 85.1%。按照下面的混淆矩阵,我们发明简单的随机丛林和经由优化的树型分类器表示差不多,其在重要类别(<=50K 收入)的猜测精度达到了 92.1%,而在少数类别(>50K 收入)上达到了 62.6%。

rclf = RandomForestClassifier(n_estimators=500)rclf.fit(x_train, y_train)rclf.score(x_test, y_test)

正如前面所商量的,随机丛林模型还供给了特点重要性的度量办法。我们可以鄙人图中看到今朝模型不合特点的重要性:

如今我们可以测验测验优化我们的随机丛林模型,如下我们可以应用带 5-折交叉验证的 GridSearchCV() 操作来竽暌古化随机丛林:

parameters = {'n_estimators':(100, 500, 1000),'max_depth':(None, 24, 16),'min_samples_split': (2, 4, 8),'min_samples_leaf': (16, 4, 12)}clf = GridSearchCV(RandomForestClassifier(), parameters, cv=5, n_jobs=8)clf.fit(x_train, y_train)clf.best_score_, clf.best_params_0.86606676699118579{'max_depth': 24, 'min_samples_leaf': 4, 'min_samples_split': 4, 'n_estimators': 1000}
{'max_depth': 24,
'min_samples_leaf': 4,
'min_samples_split': 4,
'n_estimators': 1000}

我们可以看到如今的模型要明显地比前面的更好一些,并且猜测率达到了 86.6%。按照下面的混淆矩阵,新模型在重要类其余猜测精度上有明显的晋升,并且在少数类其余猜测大将度只稍微降低了一点。这长短均衡数据广泛存在的问题。

如今我们已经清理了数据,下面语句可以展示我们数据的概况:

rclf2 = RandomForestClassifier(n_estimators=1000,max_depth=24,min_samples_leaf=4,min_samples_split=8)rclf2.fit(x_train, y_train)y_pred = rclf2.predict(x_test)cfm = confusion_matrix(y_test, y_pred, labels=[0, 1])plt.figure(figsize=(10,6))plot_confusion_matrix(cfm, classes=["<=50K", ">50K"], normalize=True)

最后,下面展示了对优化后模型比较重要的特点。

importances = rclf2.feature_importances_indices = np.argsort(importances)cols = [cols[x] for x in indices]plt.figure(figsize=(10,6))plt.title('Feature Importances')plt.barh(range(len(indices)), importances[indices], color='b', align='center')plt.yticks(range(len(indices)), cols)plt.xlabel('Relative Importance')


  推荐阅读

  Linux下awk内置变量使用介绍

我们将逐渐揭开 awk 功能的神秘面纱,在本节中,我们将介绍 awk 内置built-in变量的概念。你可以在 awk 中应用两种类型的变量,它们是:用户自定义user-defined变量和内置变量。我们将逐>>>详细阅读


本文标题:从决策树到随机森林:树型算法的原理与实现

地址:http://www.17bianji.com/lsqh/36558.html

关键词: 探索发现

乐购科技部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与乐购科技进行文章共享合作。

网友点评
自媒体专栏

评论

热度

精彩导读
栏目ID=71的表不存在(操作类型=0)