机器学习之决策树

本文介绍了决策树的基本原理,强调了过拟合和欠拟合的概念,并探讨了如何通过信息熵来衡量属性选择的优劣。在决策树的构建过程中,信息增益被用来选择最佳分割属性,以达到最大化数据纯度的目的。同时,讨论了停止划分节点的条件,如节点类别单一、样本属性相似或达到预设阈值。最后,提到了处理缺失值的方法和Occam's Razor原则,即在误差相近的情况下选择更简单的模型。
摘要由CSDN通过智能技术生成

决策树

决策树中,每一个内节点就是测试属性 x i x_i xi,每一个边就是去选择属性 x i x_i xi的值,每一个叶节点就会去预测 Y Y Y(西瓜书就是以西瓜的一些特征来预测西瓜的好坏,老师上课讲的PPT上就是用一些人的特点来预测是否偷税漏税的)
也就是说,决策树在理论上应该是能够表示输入属性的任何函数,但是这就会产生一个问题:如果这个决策树过于庞大,以至于他把每一个训练数据都精准的分开了,这会产生生么后果呢?答案当然是过拟合,这棵树已经可能没有泛化能力了。我们就是想要找一棵合适大小的树,并且这棵树能比较准确的预测验证集上的数据。显然,决策树也可能欠拟合,就是当节点数的大小实在是太小时就会发生欠拟合,因为样本的类别根本不能很好的区分开。
老师PPT上的一个算法(构造树):

  1. A←下一个结点node的最好属性
  2. 把A作为决策属性赋给结点node
  3. 对A的每一个取值,创建一个新的儿子结点node
  4. 把相应的训练样本分到叶结点
  5. 如果训练样本被很好的分类,则停止,否则在新的叶结 点上重复上述过程
    那么我们就会提出疑问,什么样的属性才是最好的呢?我们肯定是希望这个属性切分下去,直接就能把数据分成一半正例一半反例,这样我们就一个属性就齐活了。但是我们并不可能直接这样完成。但是我们能够使用熵来刻画我们选取的属性的好坏。
    H ( x ) = − ∑ i = 1 N P ( x = i ) l o g 2 P ( x = i ) H ( X ∣ y = j ) = − ∑ i = 1 N P ( x = i ∣ y = j ) l o g 2 P ( x = i ∣ y = j ) H ( X ∣ Y ) = ∑ j ∈ V a l ( y ) P ( y = j ) H ( X ∣ y = j ) I ( X ; Y ) = H ( X ) − H ( X ∣ Y ) = H ( Y ) − H ( Y ∣ X ) = H ( X ) + H ( Y ) − H ( X , Y ) H(x)=-\sum\limits_{i=1}^{N}P(x=i)log_2P(x=i)\\H(X|y=j)=-\sum\limits_{i=1}^{N}P(x=i|y=j)log_2P(x=i|y=j)\\H(X|Y)=\sum\limits_{j\in Val(y)}P(y=j)H(X|y=j)\\I(X;Y)=H(X)-H(X|Y)=H(Y)-H(Y|X)=H(X)+H(Y)-H(X,Y) H(x)=i=1NP(x=i)log2P(x=i)H(Xy=j)=i=1NP(x=iy=j)log2P(x=iy=j)H(XY)=jVal(y)P(y=j)H(Xy=j)I(X;Y)=H(X)H(XY)=H(Y)H(YX)=H(X)+H(Y)H(X,Y)
    证明: H ( X ) − H ( X ∣ Y ) = H ( Y ) − H ( Y ∣ X ) H(X)-H(X|Y)=H(Y)-H(Y|X) H(X)H(XY)=H(Y)H(YX)
    H ( X ) − H ( X ∣ Y ) = − ∑ i = 1 N P ( x = i ) l o g 2 P ( x = i ) − ∑ j ∈ V a l ( y ) P ( y = j ) H ( X ∣ y = j ) = − ∑ i = 1 N P ( x = i ) l o g 2 P ( x = i ) + ∑ j ∈ V a l ( y ) P ( y = j ) ∑ i = 1 N P ( x = i ∣ y = j ) l o g 2 P ( x = i ∣ y = j ) = − ∑ x ∈ V a l ( x ) P ( x ) l o g 2 P ( x ) + ∑ y ∈ V a l ( y ) P ( y ) ∑ x ∈ V a l ( x ) P ( x ∣ y ) l o g 2 P ( x ∣ y ) = − ∑ x ∈ V a l ( x ) ∑ y ∈ V a l ( y ) P ( x , y ) l o g 2 P ( x ) + ∑ y ∈ V a l ( y ) ∑ x ∈ V a l ( x ) P ( y ) P ( x ∣ y ) l o g 2 P ( x ∣ y ) = ∑ y ∈ V a l ( y ) ∑ x ∈ V a l ( x ) P ( x , y ) l o g 2 P ( x ∣ y ) P ( x ) = ∑ y ∈ V a l ( y ) ∑ x ∈ V a l ( x ) P ( x , y ) l o g 2 P ( x , y ) P ( x ) P ( y ) = H ( Y ) − H ( Y ∣ X ) H(X)-H(X|Y)\\=-\sum\limits_{i=1}^{N}P(x=i)log_2P(x=i)-\sum\limits_{j\in Val(y)}P(y=j)H(X|y=j)\\=-\sum\limits_{i=1}^{N}P(x=i)log_2P(x=i)+\sum\limits_{j\in Val(y)}P(y=j)\sum\limits_{i=1}^{N}P(x=i|y=j)log_2P(x=i|y=j)\\=-\sum\limits_{x\in Val(x)}P(x)log_2P(x)+\sum\limits_{y\in Val(y)}P(y)\sum\limits_{x\in Val(x)}P(x|y)log_2P(x|y)\\=-\sum\limits_{x\in Val(x)}\sum\limits_{y\in Val(y)}P(x,y)log_2P(x)+\sum\limits_{y\in Val(y)}\sum\limits_{x\in Val(x)}P(y)P(x|y)log_2P(x|y)\\=\sum\limits_{y\in Val(y)}\sum\limits_{x\in Val(x)}P(x,y)log_2\frac{P(x|y)}{P(x)}\\=\sum\limits_{y\in Val(y)}\sum\limits_{x\in Val(x)}P(x,y)log_2\frac{P(x,y)}{P(x)P(y)}=H(Y)-H(Y|X) H(X)H(XY)=i=1NP(x=i)log2P(x=i)jVal(y)P(y=j)H(Xy=j)=i=1NP(x=i)log2P(x=i)+jVal(y)P(y=j)i=1NP(x=iy=j)log2P(x=iy=j)=xVal(x)P(x)log2P(x)+yVal(y)P(y)xVal(x)P(xy)log2P(xy)=xVal(x)yVal(y)P(x,y)log2P(x)+yVal(y)xVal(x)P(y)P(xy)log2P(xy)=yVal(y)xVal(x)P(x,y)log2P(x)P(xy)=yVal(y)xVal(x)P(x,y)log2P(x)P(y)P(x,y)=H(Y)H(YX)

下面我们就是用熵来表示 S S S的混杂程度 H ( S ) = − p + l o g 2 p + − p − l o g 2 p − H(S)=-p_+log_2p_+-p_-log_2p_- H(S)=p+log2p+plog2p,在选择切分点时,我们就是取选择信息增益最大的点( G a i n = E n t r o p y ( p ) − ( ∑ n i n E n t r o p y ( i ) ) Gain=Entropy(p)-(\sum\frac{n_i}{n}Entropy(i)) Gain=Entropy(p)(nniEntropy(i)))增益越大,我们会发现切完之后的样本就会更纯了。

树停止:(1)节点上的所有节点都属于一个类别(2)节点上的样本属性值相似(3)提早结束(当实例的数量少于某些阀值的时候;实例的分布与可用特征无关;扩展这个点已经不能使分得的纯度更纯了)

Occam’s Razor:当两个模型的误差几乎相同的时候,我们选择尽可能小的那个模型进行输出
C o s t ( M o d e l , D a t a ) = C o s t ( D a t a ∣ M o d e l ) + C o s t ( M o d e l ) Cost(Model,Data)=Cost(Data|Model)+Cost(Model) Cost(Model,Data)=Cost(DataModel)+Cost(Model),这个基本上就是数据+正则项那个啊!!!

当有特征缺失时,我们仍然可以做决策树,我们就乘一个权重就好了(比如有10个数据,3个正例,7个反例,我们计算 E n t r o p y ( P a r e n t ) = − 0.3 l o g 0.3 − 0.7 l o g 0.7 = 0.8813 Entropy(Parent)=-0.3log0.3-0.7log0.7=0.8813 Entropy(Parent)=0.3log0.30.7log0.7=0.8813,某一个特征中一个样本缺失,我们现在只有该特征Yes正反例分别是0,3个,该特征NO正反例2,4个, E n t r o p y ( C h i l d r e n ) = 0.3 E n t r o p y ( Y e s ) + 0.6 E n t r o p y ( N o ) = 0.551 Entropy(Children)=0.3Entropy(Yes)+0.6Entropy(No)=0.551 Entropy(Children)=0.3Entropy(Yes)+0.6Entropy(No)=0.551,最后 G a i n = 0.9 ( Δ E n t r o p y ) = 0.3303 Gain=0.9(\Delta Entropy)=0.3303 Gain=0.9(ΔEntropy)=0.3303

引用:哈工大机器学习PPT、西瓜书

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值