选择根节点
当树的高度越大的时候,说明划分的效果越细致,切分的节点越多,导致一直切分,学到一些噪声点,树太高的原因是切的节点太多了。所以可能发生过拟合的现象。
1 如何选择根节点:分别以4个节点为根节点,计算熵值。先计算熵,然后各自的熵值乘以概率,最后在求和计算熵值之和。然后在和最初的熵值0.940比较。
2 熵值下降了,分类越纯,分类效果越明显。
3 信息增益就是衡量分类效果的一个指标,用分类之后的熵值和最初的熵值做差表示信息增益。
4 信息增益越大越好,本来就是分类之后信息熵的差。
5 信息增益率:
决策树的构建过程就是递归过程,不断用同样的方法找根节点。
评价函数,在叶子节点的纯度越好,评价函数越小越好。
基尼系数为0时候,表示已经分类彻底。
避免过拟合方法
α表示参数,Tleaf表示叶子节点的个数 Ct表示基尼系数=基尼系数乘以样本数目。
后剪枝的过程就是一个叶子节点在分支前后的ct值大小比较,然后选取基尼系数小来决定是是否分裂。
随机森林:
随机操作:1:有放回采样,数据样本选择的随机性,在原始的数量集合指定一个随机选择的比例,会使选不到异常点的随机森林的效果更好。
2:特征选择的随机性
最后在特征数据集输入到随机森林后,最后的决策分类结果用投票打分的方法进行决策判断的结果是否正确。
当值的选取比如年龄进行划分的时候采用贪婪算法。
选取连续值的分界点采用贪婪算法
随机森林的参数选择:
最主要的两个参数是n_estimators和max_features。
n_estimators:表示森林里树的个数。理论上是越大越好。但是伴随着就是计算时间的增长。但是并不是取得越大就会越好,预测效果最好的将会出现在合理的树个数。
max_features:随机选择特征集合的子集合,并用来分割节点。子集合的个数越少,方差就会减少的越快,但同时偏差就会 增加的越快。根据较好的实践经验。
如果是回归问题则: max_features=n_features,
如果是分类问题则max_features=sqrt(n_features)。
如果想获取较好的结果,必须将max_depth=None,同时min_sample_split=1。
同时还要记得进行cross_validated(交叉验证),除此之外记得在random forest中,bootstrap=True。但在extra-trees中,bootstrap=False。
总结:我对随机森林的理解,首先,根据已经有的数据进行决策树的建立,先根据原始数据集计算最初的信息熵。信息熵的建立通过最后的结果进行计算。比如在上面的例子中,很具去不去打球的比例计算出最初的信息熵A,然后根据数据中四个属性类别分别进行信息熵的求解,求解出在该类别信息熵下的值,然后选择信息熵最大的作为根节点,进行递归操作,这样可以根据属性构建出决策树。