决策树算法

一、通俗理解熵和基尼不纯度

1.信息熵

\quad熵度量事物的不确定性,越不确定的事物,它的熵就越大。随机变量Y的熵的表达式如下:
H(Y)= - \sum_{j=1}^m p_j\ log\ p_j
其中m代表了ym种可能的离散取值;p_j表示随机变量Y的概率分布,即p_j=P(Y=y_j),j=1,2...m

2.联合熵

由单个变量信息熵可推广至多个变量的联合熵,即:
H(X,Y)=\sum_{i=1}^n \sum_{j=1}^m p_{ij}\ log\ p_{ij}
其中p_{ij}表示随机变量(X,Y)的联合概率分布,即p_{ij}=P(X=x_i,Y=y_i) ,i=1,2...n,\ j=1,2...m.

3.条件熵

\quad条件熵定义为:给定随机变量X的条件下,随机变量Y的条件概率分布的熵对随机变量X的数学期望。
则根据定义可推导条件熵公式:
\quad\ H(Y|X)=\sum_{i=1}^n P(X=x_i) H(Y|X=x_i)

=- \sum_{i=1}^n P(X=x_i) \sum_{j=1}^m P(Y=y_j|X=x_i)logP(Y=y_j|X=x_i)

=- \sum_{i=1}^n \sum_{j=1}^m P(X=x_i,Y=y_j)logP(Y=y_j|X=x_i)

条件熵表示在已知随机变量X的情况下,随机变量Y的不确定性。

4.信息增益\互信息

信息增益 = 信息熵 - 条件熵,即
I(X)=H(Y)-H(Y|X)
表示在已知随机变量X的情况下,随机变量Y的不确定性减少的程度。ID3算法使用信息增益选择最优特征。

5.基尼不纯度

\quad 基尼不纯度:指随机抽取两个样本,其类别标记不一致的概率。
\quad 假设有k个类别,选中子集为第k个类别的概率为p_k,则基尼系数表达式为:
Gini(D)=\sum_{k=1}^K p_k(1-p_k)=1 - \sum_{k=1}^K p_k^2
假设有k个类别,随机抽取一个样本,类别j出现的概率为p_j;再随机抽取第二个样本,类别j出现的概率为p_j^2,假设k个类别出现的概率是相互独立的,则随机抽取两个样本出现类别一致的概率为\sum_{k=1}^K p_k^2,则类别不一致的概率为1 - \sum_{k=1}^K p_k^2。考虑极端情况p_k=1,基尼不纯度为0,数据集不确定性为0(即固定的属于某一类别)。
CART中使用Gini不纯度做特征选择,与信息增益的理念类似,在已知某特征A分布的情况下,基尼不纯度减小的程度作为最优特征划分的标准。

二、决策树分类算法

1.ID3

决策树的生成需要考虑特征选择方法及停止条件。
停止条件为:
\quad (1)子集中同属同一类标记y,例如所有样本同属0类或1类,不纯度为0,无需继续向下划分;
\quad (2)自顶而下已使用完所有特征;
\quad (3)小于给定信息增益划分的阈值。

ID3使用信息增益进行特征选择。算法过程为:
\quad 输入:数据集D=\{ (x^{(1)},y_1),(x^{(2)} , y_2),...(x^{(n)} , y_n) \},其中x^{(i)}=(x_1^{(i)} , x_2^{(i)} , ...x_d^{(i)})。数据集D|D|个样本,d个离散特征,特征集合为A=\{A_1,A_2...A_d\}
\quad 输出:决策树T

生成决策树过程:

(1)计算信息增益:
\quad首先计算数据集D整体的信息熵H(D),假设样本标记共有K个类别,|D_k|表示标记为k的样本个数,|D|表示总样本量;则
H(D)=-\sum_{k=1}^K P(Y=k)logP(Y=k)=-\sum_{k=1}^K \frac{|D_k|}{|D|} log\frac{|D_k|}{|D|}

\quad接下来计算条件熵,在选择特征A_j(特征集合A中任意一个特征)的情况下,计算数据集的信息熵,根据定义可得:
\quad\ H(D|A_j)
=-\sum_a P(A_j=a) \sum_{k=1}^K P(Y=k|A_j=a)logP(Y=k|A_j=a)
=-\sum_a \frac{|D_a|}{|D|} \sum_{k=1}^K \frac{|D_{ak}|}{|D_a|} log\frac{|D_{ak}|}{|D_a|}
其中a表示属性A_j可能的取值,|D_a|表示取值为a的样本个数,|D_{ak}|表示特征A_j取值为a且标记为k的样本个数。
\quad则信息增益为:I(A_j)=H(D)-H(D|A_j)

(2)分别计算特征集合A中各个特征对数据集D的信息增益I(A_j),选择其中信息增益最大的特征作为当前节点划分的特征。

(3)判断是否满足停止条件,若满足输出树T;不满足继续(1)(2)步向下划分。

缺点

a)在分裂特征的选择中,会偏向取值个数较多的特征;
b)只考虑了分类特征;
c)没有考虑缺失值的情况。

2.C4.5

针对ID3算法的缺点,提出了C4.5算法。
1.在选取分裂特征时采用信息增益比,即信息增益和特征熵的比值:
2.对连续特征做了离散化处理:
\quad将连续特征对应的n个样本取值按照从小到大的顺序排列,取相邻两个值的均值作为一个切分点,共有n-1个切分点,分别计算以这n-1个点作为切分点进行离散化后的特征的信息增益,取信息增益最大的点为最佳切分点。
3.对缺失值的情况分别做了处理:
(1)在选择划分特征时,部分样本在某些特征上有缺失:
\quad即在计算各个特征的信息增益时,部分样本在特征上没有取值,无法确定对应的样本量。采取的方法是在计算有缺失样本的特征的信息增益时,将数据依据在该特征上是否缺失分为两部分,对每个样本赋予权重,使用无缺失的部分计算加权信息增益,并乘以系数,系数为无特征缺失样本加权后占加权总样本的比例。
(2)已经选定了划分特征,根据特征进行分枝时,样本在该特征取值上有缺失:
\quad将缺失特征取值的样本同时划分入所有的叶子节点,同时按照叶子节点的样本占比赋予权重。

3.CART分类树

CART算法在C4.5的基础上进行了优化:
1.在划分特征的选择上采用Gini系数:
数据集DGini系数(度量数据集D的不纯度):
Gini(D)=\sum_{k=1}^K \frac{|D_k|}{|D|} (1-\frac{|D_k|}{|D|})

在给定特征A的条件下,DGini系数为:

Gini(D,A)=\frac{|D_1|}{|D|}Gini(D_1)+\frac{|D_2|}{|D|}Gini(D_2)

2.在连续特征的处理上使用Gini系数选择最优划分点
3.CART分类树都是二叉树,特征可以重复使用
4.剪枝算法(避免过拟合):
任意一棵树T_t,损失函数为:
C_\alpha(T_t)=C(T_t)+\alpha |T_t|

\quad等式右边第二部分|T_t|表示叶子节点的个数,代表模型复杂度,节点越多,生成的树越庞大,模型越复杂。\alpha为超参数,平衡成本和复杂度,\alpha越大,节点数越少。
\quad仅保留根节点时,C_\alpha(T)=C(T)+\alpha;判断在子节点t处是否需要剪枝,首先看剪枝前的损失函数为C_\alpha(T_t)=C(T_t)+\alpha |T_t|;当C_\alpha (T_t)>C_\alpha(T),剪枝;当C_\alpha (T_t)<C_\alpha(T),保留该分枝。随着\alpha的增大,当C_\alpha (T_t)=C_\alpha(T)时,达到临界值,此时\alpha=\frac{C(T)-C(T_t)}{|T_t| -1},树T有更小的损失函数且子节点个数更少,此时可对T_t进行剪枝,变为叶子节点T

由此可以计算出每个子节点是否剪枝的\alpha值,之后使用交叉验证选择最优的\alpha,输出剪枝后的树T

三、决策树的优缺点

优点:

1.简单易于理解,可解释性强;
2.基本不需要预处理,每次进行划分时只选择一个特征,不需要进行归一化;
3.CART输入特征可以是离散的或连续的,可自动处理缺失值;
4.对于异常点不敏感,容忍度高。

缺点:

1.每次只选择一个特征进行分裂,没有考虑到特征之间的相关性;
2.容易过拟合,导致泛化能力不强;
3.样本发生一点变化,就会导致树结构发生强烈改变。

四、回归树原理

ID3和C4.5都只能用于分类,CART既可用于分类,又可用于回归。
回归问题使用均方误差度量损失,回归树在分裂过程中需要确定分裂特征及特征值点。其过程为:
假设对于任意特征A,由划分点s将数据集划分为D_1、D_2两部分,划分后的损失函数为:
\sum_{x_i \in D_1} (y_i-c_1)^2+\sum_{x_i \in D_2} (y_i-c_2)^2
其中c_1、c_2分别对应数据集D_1、D_2的样本均值。
求解损失函数最小对应的特征A及划分点s
回归树生成后,采用最终叶子节点的均值或中位数做预测输出。

五、决策树防止过拟合方法

1.剪枝;
2.集成方法,如随机森林;
其次,结合停止条件来看:
2.控制满足分裂条件的不纯度的阈值(min_impurity_decrease);
3.控制叶子节点个数(max_leaf_nodes);
4.控制继续下一次划分时叶子节点的最小样本数(min_samples_split)。

六、决策树sklearn参数

from sklearn.tree import DecisionTreeClassifier

DT参数.png

参考
https://www.cnblogs.com/pinard/p/6050306.html
https://www.cnblogs.com/pinard/p/6053344.html
https://mp.weixin.qq.com/s/v7-hhDVJUQKgNECcgab1qg
https://www.zhihu.com/question/34075616

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,053评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,527评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,779评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,685评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,699评论 5 366
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,609评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,989评论 3 396
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,654评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,890评论 1 298
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,634评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,716评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,394评论 4 319
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,976评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,950评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,191评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,849评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,458评论 2 342