随机森林小结

随机森林是一种组合方法,由多个决策树组成,适用于多分类问题,具有训练快、抗过拟合等优点。每棵树独立生成,通过多数投票决定分类结果。随机森林可处理离散和连续属性,可用于特征选择。缺点包括对属性级别敏感,单棵决策树预测效果差。应用包括分类、回归、特征选择。

机器学习中,随机森林是一种组合方法,由许多的决策树组成,因为这些决策树的形成采用了随机的方法,因此也叫做随机决策树。随机森林中的树之间是没有关联的。当测试数据进入随机森林时,其实就是让每一颗决策树进行分类,最后取所有决策树中分类结果最多的那类为最终的结果。因此随机森林是一个包含多个决策树的分类器,并且其输出的类别是由个别树输出的类别的众数而定。

随机森林由决策树组成,决策树实际上是将空间用超平面进行划分的一种方法,每次分割的时候,都将当前的空间一分为二,使得每一个叶子节点都是在空间中的一个不相交的区域,在进行决策的时候,会根据输入样本每一维feature的值,计算信息增益,或者Gini值,一步一步往下分裂,最后使得样本落入N个区域中的一个(假设有N个叶子节点,对于二元分类,N=2)。

 

随机森林可以既可以处理属性为离散值的量,比如ID3算法,也可以处理属性为连续值的量,比如C4.5算法。(Q:sklearn模块中调用的RandomForestClassifier需要对连续属性离散化,如何处理连续属性???)

 

随机森林的优点:

1.适合做多分类问题;当存在分类不平衡的情况时,随机森林能够提供平衡数据集误差的有效方法(通过属性评估?);

2.训练和预测速度快;

3.对训练数据的容错能力,是一种有效估计missing值的方法,当数据集中有大比例的数据缺失时仍然可以保持精度不变;

4.能够有效地处理大的数据集;

5.它能够处理很高维度(feature很多)的数据,并且不用做特征选择

6.能够在分类的过程中可以生成一个泛化误差的内部无偏估计(OOB error可以作为泛化误差的一个估计);

7.能够检测到特征之间的相互影响以及重要性程度(通过feature_importances_方法);

8.不容易出现过度拟合;实现简单容易并行化(通过n_jobs)。

9.模型的上述性能可以被扩展运用到未标记的数据集中,用于引导无监督聚类、数据透视和异常检测(如何实现???);


随机森林的缺点:

随机森林的流程步骤如下: 1. 确定用例(样本)个数N和特征数目M。 2. 对于每棵树的构建,通过有放回的抽样,取样N次,形成一个集(即bootstrap取样),并用未抽到的用例(样本)作预测,评估其误差。 3. 对于所有树中的每个节点的构建,从M个特征中随机选择m个(m应远小于M,根据Leo Breiman的建议,假设总的特征数量为M,这个比例可以是sqrt(M)、1/2sqrt(M)、2sqrt(M))用于确定决策树上一个节点的决策结果,树不需要进行剪枝。 4. 按上述的方法构建多个树。 5. 将生成的多棵决策树组成随机森林。 6. 对于分类问题,按多棵树分类器投票决定最终分类结果;对于回归问题,由多棵树预测值的均值决定最终预测结果。 小结为每棵树的集通过有放回的抽样N个组成,每个节点的候选属性从特征集中无放回的取m个组成[^2]。 ### 示例代码 ```python from sklearn.ensemble import RandomForestClassifier from sklearn.datasets import make_classification from sklearn.model_selection import train_test_split from sklearn.metrics import accuracy_score # 生成一些示例数据 X, y = make_classification(n_samples=1000, n_features=10, n_informative=5, n_redundant=0, random_state=42) X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42) # 创建随机森林分类器 rf = RandomForestClassifier(n_estimators=100, random_state=42) # 模型 rf.fit(X_train, y_train) # 进行预测 y_pred = rf.predict(X_test) # 计算准确率 accuracy = accuracy_score(y_test, y_pred) print(f"Accuracy: {accuracy}") ```
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值