1.获取数据集
2.从数据集中找到最优的切分特征(离散变量)/最优切分特征和最优切分特征值(连续变量)
ID3算法:信息熵/条件熵/信息增益
选择决断特征时选择信息增益最大的
信息熵:[衡量信息的复杂度]
H(D) = -∑[P(i)log(p(i))]:
p(i)-->第i个类别出现的概率
条件熵:[在X给定的情况下,D的条件分布的熵对X的期望]
H(D|X) = ∑[p(j)H(D|X = x(j))]
X-->某个特征
x(j)-->特征值
H(D|X = x(j))-->数据D中特征X的特征值等于x(j)时D中相关数据的信息熵
p(j)-->特征X的特征值等于x(j)的概率
信息增益(特征X的信息增益):[在得知特征X的条件下,使得数据D不确定性减少的程度]
Gain(D,X) = H(D) - H(D|X)
备注:
信息增益是针对一个一个的特征而言的,就是看数据有他和无他时的信息熵
各是多少,两者差值就是该特征给系统带来的的信息增益
C4.5算法:以信息增益进行分类决策是,存在偏向取值较多的特征的问题,
为了解决这个问题,开发了基于信息增益比的分类决策算法,也就是说C4.5
备注:
a.C4.5与ID3都是利用贪心算法进行求解
b.选取决断特征时选择信息增益比最大的
c.分裂信息度量SplitInformatioon(D,X):
备注:
1)SplitInformation(D,X) = -∑[p(xi)log(p(xi))]
2)p(xi)-->X取特征值为xi的概率
3)就相当于特征X的熵(X取各个特征值条件概率分布的熵)
d.GainRatio(D,X) = Gain(D,X) / SplitInformation(D,X)
e.ID3中用信息增益选择属性时偏向于选择分支较多的属性值,即取值多的属性,
C4.5由于除以了SplitInformation(D,X) = H(X),可以削弱这种作用
连续数据处理:
a.对属性的取值进行排序
b.两个属性值之间的中点作为可能的分裂点,将数据集分成两部分,计算每个可能的分
裂点的信息增益
c.对每个分裂点的信息增益进行修正: 减去log(2(N-1))/|D|
备注:
数据集中同时出现连续属性和离散属性时,原始的C4.5算法倾向选择连续的
属性[特征]作为分裂属性[特征].因此连续属性的信息增益需要减去log(2(N-1))/|D|
作为修正,其中N为可能的分裂点的个数,|D|是数据集大小
d.选择修正后信息增益最大的分裂点作为该属性[特征]的最佳分裂点
备注:
选择最佳分裂点不用信息增益率,而是用信息增益,然后最大的信息增益对应
的Gain Ratio作为属性[特征]的Gain Ratio
e.计算最佳分裂点的信息增益率作为属性的Gain Ratio
f.选择Gain Ratio最大的属性[特征]作为分裂属性[特征]
叶子裁剪:
Pre-Pruning[预剪枝]:根据一些原则及早的停止树的生长
a.树的深度达到用户所要的深度
b.节点中样本数少于用户指定的个数,停止树的生长,并将该节点变为叶子结点
c.不纯度下降的最小幅度小于用户指定的幅度等
Post-Pruning[后剪枝]:通过在完全生长的树上减去分支实现,通过删除节点的分支
来减去树节点
a.代价复杂性剪枝
b.最小误差剪枝
c.悲观误差剪枝
备注:
后剪枝操作是一个边修剪边检验的过程,一般规则标准是:在决策树的不断
剪枝操作过程中,将原样本集合或新数据集合作为测试数据,检验决策树对测试
数据的预测精度,并计算出相应的错误率,如果减掉某个子树后的决策树对预测
精度或 其他测度不降低,那么剪掉该子树
来源:CSDN
作者:一个有内涵的宝宝
链接:https://blog.csdn.net/qq_22772259/article/details/103754293