决策树
概念
希望根据样本的若干个特征对其进行分类。
决策树是一种判别模型。
特征:X1,X2...Xm,Y
样本:x1,x2..xn
可以进行二分类也可以进行多分类。一般来说使用决策树的时候特征取值都是离散的。最终想要学习到的是特征和标签之间的关系。
X1X2...Yx110...1x201...0...
现在从列的角度出发,可能存在某一个特征,对于分类的作用大于其他的特征。考虑使用树,从根节点进行二分。设x1为我们所选的对于分类作用最大的特征,把它作为根节点,x1取1的样本放到左边,x1取0的样本放到右边。同样对于其儿子,又可以选择分类作用次大的特征继续进行分类,注意,对于同层的节点,不一定选择相同的特征,而是应该选择分类效果最好的那个特征。不断分类下去直到叶子节点停止分类。叶子节点的样本的标签相同。
熵
设Ω为概率空间,存在两个离散的随机变量X,Y。X取x1,x2...xn,Y取y1,y2...ym。
定义P(X=xi)=p(xi),P(Y=yj)=p(yj)。根据全概率公式,Σni=1p(xi)=1,Σmj=1p(yj)=1。
现在来看他们的联合分布:P(X=xi,Y=yj)=p(xi,yj)
X的边缘分布:p(xi)=Σmj=1p(xi,yj)。
条件概率:P(X=xi|Y=yj)=P(X=xi,Y=yj)P(Y=yj)=p(xi,yj)p(yj)=p(xi|yj)。
H(X)=−Σni=1p(xi)logp(xi)=Σni=1p(xi)log(1p(xi))>=0
那么熵什么时候等于0呢?p(x1)=1,p(xi)=0(i>1)。
那么熵是否存在极大值呢?是否能趋向正无穷呢?注意到p(xi)的和是1,H(x)≤logΣni=1p(xi)1p(xi)=logn。
注意这里的不等式实际上是根据琴声不等式得来的。
因此可以得到熵的范围:[0,logn]
条件熵:H(X|Y)=−Σmj=1p(yj)(Σni=1p(xi|yi)log(p(yi|xi)))
H(X)−H(X|Y)=−Σni=1p(xi)logp(xi)+Σmj=1p(yj)(Σni=1p(xi|yi)log(p(yi|xi)))=−Σni=1p(xi)logp(xi)+Σmj=1Σni=1p(xi,yj)logp(xi,yj)p(yj)=....=Σni=1Σmj=1p(xi,yj)logp(xi,yj)p(xi)p(yj)
-
有H(Y)−H(Y|X)=H(X)−H(X|Y)。信息增益?
-
X,Y独立,有p(xi,yi)=p(xi)p(yi),H(X)−H(X|Y)=0。给出Y判断X或者给出X判断Y是没有增益的,因为两者独立。
-
利用凹函数的性质,可以知道信息增益大于等于0。
决策树建立
先从根节点开始,计算熵 。
令D0=|{Y=0}|,D1=|{Y=1}|
H(Y)=−D0nlogD0n
令D00=|{X1=0,Y=0}|....D11,|{X1=0}|=D00+D01...
H(Y|X1)=−D00+D01n[D00D00+D01logD00D00+D01+D01D00+D01logD01D00+D01]−D10+D11n[D10D10+D11logD10D00+D11+D11D10+D11logD11D10+D11]
因此需要选maxi(H(Y)−H(Y|Xi))这个特征进行第一次分类。那么什么时候分类停止?节点的熵等于0.
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!
2020-04-09 Codeforces Round #632 (Div. 2) C. Eugene and an array(尺取法/前缀和)
2020-04-09 Codeforces Round #632 (Div. 2) B. Kind Anton(贪心)
2020-04-09 Codeforces Round #632 (Div. 2) A. Little Artem(水题)