手把手教你机器学习之随机森林

常言道,不要为了一棵树去放弃一片森林。这句话在机器学习算法方面也是非常正确的。虽然决策树算法简单易理解,而且不需要对数据进行转换,但是它的缺点也很明显——决策树往往容易出现过拟合的问题。不过这难不倒我们,因为我们可以让很多树组成团队来工作,也就是——随机森林。

1.随机森林的基本概念:

随机森林有的时候也被称为是随机决策森林,是一种集合学习方法,既可以用于分类,也可以用于回归。而所谓的集合学习算法,其实就是把多个机器学习算法综合在一起,制造出更大模型的意思。

ps:在机器学习领域,实际有很多集合学习,目前应用比较广泛的就包括随机森林和梯度上升决策树。

为什么随机森林可以降低过拟合的问题呢?
这是因为随机森林是把不同的几棵决策树打包在一起,每棵树的参数都不相同,然后我们把每棵树的预测的结果取平均值,这样既可以保留决策树们的工作成效,又可以降低过拟合的风险。

2.随机森林的构建:

#导入随机森林模型
from sklearn.ensemble import RandomForestClassifier
#载入红酒数据集
from sklearn.datasets import load_wine
wine=load_wine()
X,y=wine.data[:,:2],wine.target
from sklearn.model_selection import train_test_split
X_train,X_test,y_train,y_test=train_test_split(X,y,random_state=1)
forest=RandomForestClassifier(n_estimators=6)
forest.fit(X_train,y_train)
print('测试集的得分:{}'.format(forest.score(X_test,y_test)))

我们是用max_features这个参数来控制所选择的特征数量最大值的,在不进行指定的情况下,随机森林默认自动选择最大特征数量。
而关于max_features这个参数的设置,还是有一些讲究的。假如把max_features设置为样本的全部特征数,就意味着模型会在全部特征中筛选,这样在特征选择这一步,就没有随机性可言了。而如果把max_features的值设为1,就意味着模型在数据特征上完全没有可选择的余地,只能去寻找这1个被随机选择出来的特征向量的阈值了。所以说,max_features的取值越高,随机森林里的每一颗决策树就会‘长得更像’,它们因为有更多的不同特征可以选择,也就会更容易拟合数据;反之,如果max_features取值越低,就会迫使每棵决策树的样子更加不同,而且因为特征太少,决策树们不得不制造更多的节点来拟合数据。
另外还有一个需要强调的参数,是n_estimators,这个参数控制的是随机森林中决策树的数量。

3.随机森林的优势和不足:

目前在机器学习领域,无论是分类还是回归,随机森林都是应用最广泛的算法之一。可以说随机森林十分强大,使用决策树并不需要用户过于在意参数的调节。而且和决策树一样,随机森林算法也不要求对数据进行预处理。
从优势的角度来说,随机森林集成了决策树的所有优点,而且能够弥补决策树的不足。但也不是说决策树算法就彻底被抛弃了。
还有,随机森林算法支持并行处理。对于超大数据集来说,随机森林会比较耗时间(毕竟要建立很多颗树),不过我们可以使用多进程并行处理的方式来解决这个问题。实现方式是调节随机森林的n_jobs参数,记得把n_jobs参数值设为和CPU内核数一致,
需要注意的是,因为随机森林生成的每棵决策树的方法是随机的(所以名字叫随机森林),那么不同的random_state参数会导致模型的完全不同,所以如果不希望建模的结果太过于不稳定,一定要固定化random_state这个参数的值。
虽然随机森林有诸多的优点,尤其是并行处理功能在处理超大数据集时能提供良好的性能表现,但是它也有不足,例如,对于超高维数据集,稀疏数据集来说,随机森林就有点捉襟见肘了,在这种情况下,线性模型要比随机森林表现更好一些,还有随机森林相对更消耗内存,速度也比线性模式要慢,所以如果程序希望更节省内存和时间的话,建议还是选择线性模型。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值