我与机器学习 - [Today is RF] - [随机森林]

条件熵:

H(X,Y) - H(X) : (X,Y)发生所包含的熵,减去X单独发生包含的熵,即在X发生的前提下,Y发生新带来的熵。

该式子定义为X发生前提下,Y的熵  H(Y|X)

推导:

 即:

即:1 * H(Y|X) 所以 H(X,Y) - H(X) = H(Y|X)

信息增益:

当熵和条件熵中的概率是由数据估计(极大似然估计)得到的,则称对应的熵和条件熵为经验熵和经验条件熵 。

信息增益表示得知特征A的信息而使得类X的信息不确定性减少的程度

定义特征A对训练数据集D的信息增益g(D,A),定义为集合D的经验熵H(D)与特征A给定条件下D的经验条件熵H(D|A)之差,即g(D,A) = H(D) - H(D|A),显然这就是训练数据集D和特征A的互信息

Gini系数:

 复习决策树:

决策树是以实例为基础的归纳学习

决策树学习采用的是自顶向下的递归方法,其基本思想是以信息熵为度量构造一棵熵值下降最快的树,到叶子节点处的熵值为0,此时每个叶节点都属于同一类别

决策树学习算法的最大优点就是,他可以自学习。在学习过程中,不需要使用者了解过多背景知识,只需要对训练数据进行良好的标注就可以进行学习。

因为有标注信息因此属于有监督学习

选择最佳特征的数学思想:

      数据集D的经验熵为:H(D)

      计算特征A对数据集D的经验条件熵:H(D|A)

      计算特征A的信息增益:g(D,A) = H(D) - H(D|A)

      选择信息增益最大的特征作为当前分裂的特征

损失函数:

当某个叶节点上的类别数目等于1,则称该叶节点为纯节点,纯节点的熵等于0

当某个叶节点的上类别数目等于总类别数目,则成该叶节点为均节点,均节点的熵等于LnK

对所有叶节点的熵求和,该值越小说明对样本的分类越精确。

由于各个叶节点包含的样本数目不同,可使用样本数目加权求熵和

评价函数:

过拟合:

决策数对训练有很好的分类能力,但对未知的测试数据未必有好的分类能力,泛化能力弱,即可能发生过拟合的现象

可以通过剪枝来避免

Bagging的策略:

从样本集中重采样(有重复的)选出n个样本,在所有属性上,对这n个样本建立分类器(ID3,ID4.5, CART,SVM)等等

重复建立m个分类器,将数据放在这m个分类器上,最后根据这m个分类器的选择,决定数据属于哪一分类。

随机森林:

随机森林在bagging的基础上做了修改。步骤为:

      1.从样本集中用Bootstrap采样选出n个样本

      2.从所有属性中随机选择k个属性,选择最佳分割属性作为节点建立cart决策数

      3.重复以上步骤m次,即建立了m棵cart决策树

      4.这m个cart树形成了随机森林,通过投票表决结果,决定数据属于哪一类。

当然可以使用决策树作为基本分类器,也可以使用SVM,logistic回归等其他分类器作为基本分类器,习惯上这些分类器所组成的总分类器,仍然叫做随机森林。

样本不均衡的常用处理方法:

假定样本数目A类比B类多,且严重不均衡,可以采用:

      1.A类欠采样

            随机欠采样

            A类分成若干子类,分别与B类进行训练

            基于聚类对A进行分类后,与B进行训练

      2.B类过采样

            随机插值得到新样本

            SMOTE

      3.代价敏感学习

            降低A类的权值,提高B类的权值

使用随机森林建立样本间相似度的计算:

      原理:若两样本同时出现在相同的叶节点的次数越多,则二者越相似

      算法过程:记样本数目为N,初始化一个N x N的零矩阵S,S[i,j]表示样本i与样本j的相似程度,对于有m棵决策树的随机森            林,遍历所有决策树的所有叶节点,若样本i和j同时出现在该叶节点上,则样本i和j同时出现在同一叶节点的数目加1,S[i,j]            += 1。遍历结束后,S即为样本间相似度矩阵。

项目代码:https://github.com/HanGaaaaa/MLAPractice/tree/master/RandomForest

猜你喜欢

转载自blog.csdn.net/weixin_43409627/article/details/84816984