大家好,本文将围绕python随机森林特征重要性展开说明,python随机森林分类模型是一个很多人都想弄明白的事情,想搞清楚随机森林算法python代码需要先了解以下几个事情。
Source code download: 本文相关源码
一、定义
随机森林是一种有监督学习算法,是以决策树为基学习器的集成学习算法。
那什么是有监督学习呢?有监督学习就是把有已知结果的数据集拿去训练,如果训练结果与标准答案的精度足够高就可以使用这个模型去预测或者分类未知结果的数据集python创意小作品代码。简单来说就是你写很多有标准答案的试卷,当你的准确率足够高的时候你就可以去写没有标准答案的试卷了,因为如果你平时都能考全国前三,那你高考就大概率能考到全国前三。有监督学习主要应用于分类和回归。
无监督学习的数据是没有已知结果的数据,比如清北大学自主招生考试,学校事先不知道学生平时的考试结果,但是有学生奥数经历的介绍,根据以往经验奥数高的一般考的就好,就收了,但是不排除奥数好但是成绩不行的学生存在。无监督学习主要用于聚类和降维。
集成学习故名思义就是“组合学习”,比如本文介绍的随机森林算法就是由很多个决策树组成的算法,假设有A、B两个选择,100个决策树一起投票,超过50个树投给了A那么随机森林的结果就是A。
二、模型理论
传统的决策树模型在训练时经常会出现过拟合的情况,随机森林是有效解决该问题的方法之一。随机森林本质上是很多树的组合,并且每一棵树因为取的样本略有不同所以树与树之间也是有所区别的。
随机森林的思想是每棵树的预测效果可能都相对较好但可能对部分数据过拟合,如果构造足够多的树,并且每棵树都可能有很好的预测结果但是也都会对不同的部分数据过拟合,我们可以通过取平均值来降低过拟合同时保证模型精度,这在数学上是被证明过的。
随机森林的随机性体现在两个方面,一个是特征随机性,一个是样本随机性。先随机抽取足够的样本,再根据这批样本选择最好的特征,这样每棵树的特征实际上都有可能不完全一样。因为随机性,森林的偏向可能会略有增加,但是因为取平均,它的方差也会减小,从而生成一个更好的模型。
算法过程如下:
(1)、通过有放回抽样的方法随机抽取n个样本作为决策树模型的样本
(2)、假设这些样本有M个特征,随机选择m个特征作为该决策树的分裂属性
(3)、重复(1)(2)n次就会生成n个决策树,这样就构成了随机森林,这些决策树的投票结果就是随机森林的结果。
三、优缺点
优点:
(1)、可以处理很高维度(特征很多)的数据,并且不用降维,不用做做特征选择
(2)、对数据集的适应能力强,既适用于离散型也适用于连续型数据
(3)、它可以判断特征的重要程度,筛选出重要特征,并且筛选结果也可以用于其他模型,是非常流行的特征筛选方法
(4)、由于采用集成算法,精度往往比单个模型的精度高
(5)、实现简单、精度高,不容易过拟合,可以作为基准模型
缺点:
(1)、随机森林已经被证明在某些噪音较大的分类或回归问题上会过拟合
(2)、对于有不同取值的属性的数据,取值划分较多的属性会对随机森林产生更大的影响,所以随机森林在这种数据上产出的属性权值是不可信的
四、参数介绍
n_estimators :树的数量,默认是10,就是你准备在你的森林里种多少树。这个参数是最重要的,树的数量决定了最后的准确性,但是也会让你的运行速度变的很慢,所以需要不断的测试去决定。
max_features:随机森林允许单个决策树使用特征的最大数量。
Auto/None/sqrt :简单地选取所有特征,每颗树都可以利用他们。这种情况下,每颗树都没有任何的限制。默认是auto
int:是整数
float:百分比选取
log2:所有特征数的log2值
criterion : criterion:分裂节点所用的标准,可选“gini”, “entropy”,