决策树学习的算法通常是一个递归地选择最优特征,并根据该特征对训练数据进行分割,使得各个子数据集有一个最好的分类的过程。这一过程对应着对特征空间的划分,也对应着决策树的构建。
历史上流行的决策树模型有3种:ID3、C4.5、分类回归树(CART)。C4.5是ID3的进阶版,建树过程相似,计算不纯净度的方式不同。可以是二叉树,也可以是多叉树,而CART只能是二叉树,既可以做分类也可以做回归。
其中N为数据集中的样本数目,Ni为第i个类别数据子集的样本数目。显而易见,p(xi)表示的就是该类别在总样本出现的频率。经过计算得出信息熵,也就是样本类别分布的散布程度。熵越大,表示数据集中的不同类别样本的分布越均衡,数据集越不纯净。
经验条件熵表示了各子集中样本的类别分布的平均散布程度,也可视为数据集分为多个子集后的平均不纯净程度。
信息增益:信息增益是相对于特征而言的。所以,特征A对训练数据集D的信息增益g(D,A),定义为集合D的经验熵H(D)与特征A给定条件下D的经验条件熵H(D|A)之差。
公式: g(D,A)=H(D)−H(D∣A)
信息增益刻画了根据特征A的值,将数据集D分为M个子集后,各子集的平均不确定减少量。
信息增益比:特征A在训练集D的信息增益比为g_R (D,A)定义为信息增益g(D,A)关于特征的熵H_A (D)之比
公式:
HA (D)表征了特征A对训练集D的拆分能力。信息增益比本质上是对信息增益乘的一个加权系数,希望增加信息不要以分割太细为代价。当特征A的取值集合较小时,加权系数较大,表示鼓励该特征。
基尼指数(Gini Index):基尼系数最早应用在经济学中,主要用来衡量分配公平度的指标。在决策树CART算法中基尼指数来衡量数据的不纯度或者不确定性。
公式:
Gini(D,a)表示经过特征a分割后的集合D的不确定性,基尼指数越大,不确定性越大。因此我们需要寻找基尼指数越小的特征作为结点。
已知以社会调查,调查人们对工作好与不好的评判,评判因素主要有工资、压力、平台。工资1为高工资,0为低工资;压力1为压力大,压力0为压力小;平台分别为0、1、2,代表着平台降低。接下来会对此表用三种算法进行决策分类,表如下表所示
ID3算法选择信息增益最大的特征属性为分割属性
计算整个集合的信息熵:H(D)=-(3/8 log_2〖3/8+5/8 log_2〖5/8〗 〗)=0.95
计算工资的经验条件熵:H(D|工资)= 3/8*(-3/3 log_2〖3/3-0/3 log_2〖0/3〗 〗 )+5/8*(-3/5 log_2〖3/5-2/5 log_2〖2/5〗 〗 )=0.63
得到工资的信息增益为:g(D,工资)=H(D)-H(D|工资)=0.95-1.63=0.34
同理可得:g(D,压力)=H(D)-H(D|压力)=0.16
g(D,平台)=H(D)-H(D|平台)=0.36
因为平台的的信息增益最大,所以选择平台优先选择平台作为特征属性分割。进行迭代该过程,此时数据集被分为三个模块,以三个模块为总数据集进行上述迭代操作,算出其他特征的信息增益,选出信息增益最大的特征作为特征属性再次进行分割。经过计算得出工资的信息增益大于压力的信息增益,所以以工资作为特征属性再次分割,得到多叉树如下图所示
C4.5算法选择信息增益比最大的特征属性为分割属性
上述内容已算出信息熵与信息增益
计算工资特征的熵:H(工资)=-( 3/8 log_2〖3/8+5/8 log_2〖5/8〗 〗)=0.95
同理计算出:H(压力)=0.95
H(平台)=1.56
计算信息增益比:g_R (D,工资)=(g(D,工资))/(H(工资))=0.34/0.95=0.36
同理计算出:g_R (D,压力)=0.17
g_R (D,压力)=0.23
因为工资的的信息增益比最大,所以选择平台优先选择工资作为特征属性分割。进行迭代该过程,此时数据集被分为两个模块,以两个模块为总数据集进行上述迭代操作,算出其他特征的信息增益比,选出信息增益比最大的特征作为特征属性再次进行分割。经过计算得出平台的信息增益大于压力的信息增益,所以以平台作为特征属性再次分割,得到多叉树如下图所示
CART算法选择基尼系数最小的特征属性为分割属性
计算基尼系数并计算出基尼增益:
Gini(D,工资)=3/8*(1-(3/3)2-(0/3)2 )+5/8*(1-(3/5)2-(2/5)2 )=0.3
同理可计算出:
Gini(D,平台)=0.37
因为平台有3的属性,CART只能形成二叉树,所以需要对三个条件都进行基尼增益运算:
Gini(D,平台=0)=0.3
Gini(D,平台=1)=0.37
Gini(D,平台=2)=0.46
因为工资和平台=0的的基尼增益最小,所以选择平台优先选择工资或平台=0作为特征属性分割,在此可随意选择,此处选择工资。进行迭代该过程,此时数据集被分为两个模块,以两个模块为总数据集进行上述迭代操作,算出其他特征的基尼增益,选出基尼增益最小的特征作为特征属性再次进行分割。经过计算得出平台=0的信息增益最小,所以以平台=0作为特征属性再次分割,得到多叉树如下图所示
学习机器学习,了解人工智能,让我们了解到了计算机科研的前瞻。决策树是机器学习的一小部分较为简单的模块,学习该模块让我也回顾了不少的数学理论知识,也学习了算法的精妙。很佩服发明该算法的人,很感叹知识的奇妙,感叹到自己所掌握知识的贫乏。在之后应加强学习,好了解很多知识才能突破自己,升华人生。
[1]卿来云, 黄庆明. 机器学习从原理到应用[M]. 第1版. 北京:人民邮电出版社, 2020年10月 :105-118.
[2]Jonny的ICU. 决策树的剪枝操作[EB/OL]. 2017年7月[2021年12月1日]. https://blog.csdn.net/m0_37338590/article/details/75266989.
[3]呆呆的猫. 机器学习实战(三)——决策树[EB/OL]. 2018年3月[2021年12月1日]. https://blog.csdn.net/jiaoyangwm/article/details/79525237?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522163871318916780255211529%2522%252C%2522scm%2522%253A%252220140713.130102334…%2522%257D&request_id=163871318916780255211529&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2alltop_positive~default-1-79525237.pc_search_es_clickV2&utm_term=%E5%86%B3%E7%AD%96%E6%A0%91&spm=1018.2226.3001.4187.