Task1:学习链接:
Part A: 决策树 — Datawhale (datawhalechina.github.io)
【练习1】定义 X , Y X,Y X,Y的联合熵为 H ( Y , X ) H(Y,X) H(Y,X)为 E ( Y , X ) ∼ p ( y , x ) [ − log 2 p ( Y , X ) ] E(Y,X)∼p(y,x)[−\log_2 p(Y,X)] E(Y,X)∼p(y,x)[−log2p(Y,X)]
1、首先证明 G ( Y , X ) = H ( X ) − H ( X ∣ Y ) G(Y, X) = H(X) - H(X|Y) G(Y,X)=H(X)−H(X∣Y)
右式子:
H ( X ) − H ( X ∣ Y ) = E X [ − log 2 p ( x ) ] − E Y E X ∣ Y [ − log 2 P ( X ∣ Y ) ] = − ∑ m = 1 M p ( x m ) log 2 p ( x m ) + ∑ k = 1 K ∑ m = 1 M p ( x m ∣ y k ) log 2 p ( x m ∣ y k ) = − ∑ k = 1 K [ ∑ m = 1 M p ( x m , y k ) log 2 p ( x m ) ] + ∑ k = 1 K ∑ m = 1 M p ( y k ) p ( x m , y k ) p ( y k ) log 2 p ( x m , y k ) p ( y k ) = ∑ k = 1 K ∑ m = 1 M p ( x m , y k ) [ log 2 p ( x m , y k ) p ( x m ) p ( y k ) ] = − ∑ k = 1 K ∑ m = 1 M p ( x m , y k ) [ log 2 p ( x m ) p ( y k ) p ( x m , y k ) ] \begin{aligned} H(X) - H(X|Y) &= \mathbb{E}_X[-\log_2 p(x)] - \mathbb{E}_Y\mathbb{E}_{X|Y} [-\log_2 P(X|Y)] \\ &= -\sum_{m=1}^{M} p(x_m) \log_2 p(x_m) + \sum_{k=1}^{K}\sum_{m=1}^{M} p(x_m|y_k) \log_2 p(x_m|y_k) \\ &= - \sum_{k=1}^{K}[\sum_{m=1}^{M} p(x_m, y_k) \log_2 p(x_m)] + \sum_{k=1}^{K}\sum_{m=1}^{M} p(y_k) \cfrac{p(x_m, y_k)}{p(y_k)} \log_2 \cfrac{p(x_m, y_k)}{p(y_k)} \\ &= \sum_{k=1}^{K}\sum_{m=1}^{M} p(x_m, y_k) [\log_2 \cfrac{p(x_m, y_k)}{p(x_m)p(y_k)}] \\ &= - \sum_{k=1}^{K}\sum_{m=1}^{M} p(x_m, y_k) [\log_2 \cfrac{p(x_m)p(y_k)}{p(x_m, y_k)}] \end{aligned} H(X)−H(X∣Y)=EX[−log2p(x)]−EYEX∣Y[−log2P(X∣Y)]=−m=1∑Mp(xm)log2p(xm)+k=1∑Km=1∑Mp(xm∣yk)log2p(xm∣yk)=−k=1∑K[m=1∑Mp(xm,yk)log2p(xm)]+k=1∑Km=1∑Mp(yk)p(yk)p(xm,yk)log2p(yk)p(xm,yk)=k=1∑Km=1∑Mp(xm,yk)[log2p(xm)p(yk)p(xm,yk)]=−k=1∑Km=1∑Mp(xm,yk)[log2p(xm,yk)p(xm)p(yk)]
上面等式结果等于 G ( Y , X ) = H ( Y ) − H ( Y ∣ X ) = − ∑ k = 1 K ∑ m = 1 M p ( x m , y k ) [ log 2 p ( x m ) p ( y k ) p ( x m , y k ) ] G(Y, X) = H(Y) - H(Y|X) = - \sum_{k=1}^{K}\sum_{m=1}^{M} p(x_m, y_k) [\log_2 \cfrac{p(x_m)p(y_k)}{p(x_m, y_k)}] G(Y,X)=H(Y)−H(Y∣X)=−∑k=1K∑m=1Mp(xm,yk)[log2p(xm,yk)p(xm)p(yk)]
故证得 G ( Y , X ) = H ( X ) − H ( X ∣ Y ) G(Y, X) = H(X) - H(X|Y) G(Y,X)=H(X)−H(X∣Y).
2、再证明 G ( Y , X ) = H ( X ) + H ( Y ) − H ( Y , X ) G(Y,X)=H(X)+H(Y)−H(Y,X) G(Y,X)=H(X)+H(Y)−H(Y,X)
右边 =
H ( X ) + H ( Y ) − H ( Y , X ) = E X [ − log 2 p ( X ) ] + E Y [ − log 2 p ( Y ) ] − E Y E Y , X [ − log 2 P ( Y , X ) ] = − ∑ m = 1 M p ( x m ) log 2 p ( x m ) − ∑ k = 1 K p ( y k ) log 2 p ( y k ) + ∑ k = 1 K ∑ m = 1 M p ( y k , x m ) log 2 p ( y k , x m ) = − ∑ m = 1 M [ ∑ k = 1 K p ( y k , x m ) log 2 p ( x m ) ] − ∑ k = 1 K [ ∑ m = 1 M p ( y k , x m ) log 2 p ( y k ) ] + ∑ k = 1 K ∑ m = 1 M p ( y k , x m ) log 2 p ( y k , x m ) = − ∑ k = 1 K ∑ m = 1 M p ( y k , x m ) log 2 p ( y k , x m ) p ( y k ) p ( x m ) \begin{aligned} &H(X) + H(Y) - H(Y, X)\\ &= \mathbb{E}_X[-\log_2 p(X)] + \mathbb{E}_Y[-\log_2 p(Y)] - \mathbb{E}_Y\mathbb{E}_{Y, X} [-\log_2 P(Y,X)] \\ &= -\sum_{m=1}^{M} p(x_m) \log_2 p(x_m) -\sum_{k=1}^{K} p(y_k) \log_2 p(y_k) + \sum_{k=1}^{K}\sum_{m=1}^{M} p(y_k, x_m) \log_2 p(y_k,x_m) \\ &= - \sum_{m=1}^{M}[\sum_{k=1}^{K} p(y_k, x_m) \log_2 p(x_m)] - \sum_{k=1}^{K}[\sum_{m=1}^{M} p(y_k, x_m) \log_2 p(y_k)] + \sum_{k=1}^{K}\sum_{m=1}^{M}p(y_k, x_m) \log_2 p(y_k, x_m) \\ &=- \sum_{k=1}^{K}\sum_{m=1}^{M}p(y_k, x_m) \log_2 \cfrac{p(y_k, x_m)}{p(y_k)p(x_m)} \end{aligned} H(X)+H(Y)−H(Y,X)=EX[−log2p(X)]+EY[−log2p(Y)]−EYEY,X[−log2P(Y,X)]=−m=1∑Mp(xm)log2p(xm)−k=1∑Kp(yk)log2p(yk)+k=1∑Km=1∑Mp(yk,xm)log2p(yk,xm)=−m=1∑M[k=1∑Kp(yk,xm)log2p(xm)]−k=1∑K[m=1∑Mp(yk,xm)log2p(yk)]+k=1∑Km=1∑Mp(yk,xm)log2p(yk,xm)=−k=1∑Km=1∑Mp(yk,xm)log2p(yk)p(xm)p(yk,xm)
同1,这与 G ( Y , X ) G(Y,X) G(Y,X)相等
3、证明 G ( Y , X ) = H ( Y , X ) − H ( X ∣ Y ) − H ( Y ∣ X ) G(Y,X)=H(Y,X)−H(X|Y)−H(Y|X) G(Y,X)=H(Y,X)−H(X∣Y)−H(Y∣X)
由于
G ( Y , X ) = H ( Y ) − H ( Y ∣ X ) ( 1 ) G ( Y , X ) = H ( X ) − H ( X ∣ Y ) ( 2 ) G ( Y , X ) = H ( X ) + H ( Y ) − H ( Y , X ) ( 3 ) \begin{aligned} G(Y,X) &= H(Y) - H(Y|X) \quad (1)\\ G(Y,X) &= H(X) - H(X|Y) \quad (2)\\ G(Y,X) &= H(X) + H(Y) - H(Y, X) \quad (3)\\ \end{aligned} G(Y,X)G(Y,X)G(Y,X)=H(Y)−H(Y∣X)(1)=H(X)−H(X∣Y)(2)=H(X)+H(Y)−H(Y,X)(3)
(1) + (2) - (3) 即可得 G ( Y , X ) = H ( Y , X ) − H ( X ∣ Y ) − H ( Y ∣ X ) G(Y, X) = H(Y, X) - H(X|Y) - H(Y|X) G(Y,X)=H(Y,X)−H(X∣Y)−H(Y∣X)
问题二:
B : H ( X , Y ) A : H ( Y ∣ X ) C : H ( X ∣ Y ) A ∪ B : H ( X ) B ∪ C : H ( Y ) B : G ( Y , X ) \begin{aligned} B: H(X,Y) \\ A:H(Y|X) \\ C: H(X|Y) \\ A \cup B: H(X) \\ B \cup C: H(Y) \\ B: G(Y, X) \end{aligned} B:H(X,Y)A:H(Y∣X)C:H(X∣Y)A∪B:H(X)B∪C:H(Y)B:G(Y,X)
【练习2】假设当前我们需要处理一个分类问题,请问对输入特征进行归一化回对树模型的类别输出产生影响嘛?请解释原因。
不会产生影响。因为无论我们使用的是ID3,C4.5或者说是CART, 其树的生成都是基于概率来进行计算的,而归一化的作用仅仅是对数值特征进行放缩,它会影响到我分裂节点的取值,但是并不会影响到分裂节点的大小分布,所以说,对于一个分类问题而言,特征的归一化不会对分类的结果产生影响。
【练习3】如果将系数替换为 1 − γ 2 1-\gamma^2 1−γ2,请问对缺失值是增强了还是削弱了惩罚。
γ \gamma γ取值范围为 [ 0 , 1 ] [0, 1] [0,1],在这个区间内, γ 2 \gamma^2 γ2的取值是小于 γ \gamma γ的,所以对于同样的缺失率 γ 0 \gamma_0 γ0, 1 − γ 2 > 1 − γ 1 - \gamma^2 > 1 - \gamma 1−γ2>1−γ, 所以对缺失的惩罚会变小,即是削弱的。
【练习4】如果将树的生长策略从深度优先生长改为广度优先生长,假设其他参数保持不变的情况下,两个模型对应的结果输出可能不同吗?
可能会。因为有max_leaf_nodes这个限制。在达到max_leaf_nodes的限制之后,如果按照深度优先搜索来的话,则会有很多节点在max_depth处是叶子节点;当采用广度优先搜索的话,则当达到max_leaf_nodes限制之后,可能会在1/2 max_depth时停止分裂。采用深度优先搜索得到的树在深度「比较大」的概率会比较大,而又因为在深度比较大的叶节点上,它分类的准确率又是比较高的,所以我认为会不同。
【练习5】在一般的机器学习问题中,我们总是通过一组参数来定义模型的损失函数,并且在训练集上以最小化该损失函数为目标进行优化。请问对于决策树而言,模型优化的目标是什么?
使得子树的不纯度尽可能小。不纯度低意味着纯度高,一个叶子节点中实际的类别数量是比较少的,并且确定性是比较高的。
【练习6】对信息熵中的 l o g log log函数在 p = 1 p=1 p=1处进行一阶泰勒展开可以近似为基尼系数,那么如果在 p = 1 p=1 p=1处进行二阶泰勒展开我们可以获得什么近似指标?请写出对应指标的信息增益公式。
泰勒展开式为
f ( x ) = f ( x 0 ) + f ′ ( x 0 ) ( x − x 0 ) 1 ! + f ′ ′ ( x 0 ) ( x − x 0 ) 2 2 ! + ⋯ + f n ( x 0 ) ( x − x 0 ) n n ! + O ( ( x − x 0 ) n ) f(x) = f(x_0) + f^{'}(x_0)\cfrac{(x-x_0)}{1!}+f^{''}(x_0)\cfrac{(x-x_0)^2}{2!}+ \cdots + f^{n}(x_0)\cfrac{(x-x_0)^n}{n!} + O((x-x_0)^n) f(x)=f(x0)+f′(x0)1!(x−x0)+f′′(x0)2!(x−x0)2+⋯+fn(x0)n!(x−x0)n+O((x−x0)n)
故 ln x \ln x lnx在 p = 1 p=1 p=1处的二阶泰勒展开式为
ln x ≈ ln 1 + 1 1 x − 1 1 − 1 1 2 ( x − 1 ) 2 2 = x − 1 − 1 2 ( x − 1 ) 2 = − 1 2 x 2 + 2 x − 3 2 \begin{aligned} \ln x &\approx \ln 1 + \cfrac{1}{1} \cfrac{x-1}{1} - \cfrac{1}{1^2} \cfrac{(x-1)^2}{2} \\ & = x - 1 - \cfrac{1}{2}(x-1)^2 \\ & = -\cfrac{1}{2}x^2 + 2x - \cfrac{3}{2} \end{aligned} lnx≈ln1+111x−1−1212(x−1)2=x−1−21(x−1)2=−21x2+2x−23
故信息熵中的 log \log log函数在 p = 1 p=1 p=1处进行二阶泰勒展开为:
E Y [ − log Y ] = E Y [ 3 2 − 2 Y + 1 2 Y 2 ] = ∑ k = 1 K p ~ ( y k ) [ 3 2 − 2 p ~ ( y k ) + 1 2 p ~ 2 ( y k ) ] = 3 2 − 2 ∑ k = 1 K p ~ 2 ( y k ) + 1 2 p ~ 3 ( y k ) \begin{aligned} \mathbb{E}_Y[-\log Y] &= \mathbb{E}_Y[\cfrac{3}{2} - 2Y + \cfrac{1}{2}Y^2] \\ &= \sum_{k=1}^{K}\tilde{p}(y_k) [\cfrac{3}{2} - 2\tilde{p}(y_k) + \cfrac{1}{2}\tilde{p}^2(y_k)] \\ &= \cfrac{3}{2} - 2 \sum_{k=1}^{K}\tilde{p}^2(y_k) + \cfrac{1}{2}\tilde{p}^3(y_k) \end{aligned} EY[−logY]=EY[23−2Y+21Y2]=k=1∑Kp~(yk)[23−2p~(yk)+21p~2(yk)]=23−2k=1∑Kp~2(yk)+21p~3(yk)
【练习7】除了信息熵和基尼系数之外,我们还可以使用节点的 1 − max k p ( Y = y k ) 1−\max _k p(Y=y_k) 1−maxkp(Y=yk)和第m个子节点的 1 − max k p ( Y = y k ∣ X = x m ) 1−\max_k p(Y=y_k|X=x_m) 1−maxkp(Y=yk∣X=xm)来作为衡量纯度的指标。请解释其合理性并给出相应的信息增益公式。
合理性:当 max k p ( Y = y k ) \max _k p(Y=y_k) maxkp(Y=yk)等于1时,纯度为0,概率为1,随机事件发生,我们就很容易猜到它可能是这个概率为1的事件,这显然是合理的。而且 ∑ k = 1 K p k = 1 \sum_{k=1}^K p_k=1 ∑k=1Kpk=1保证纯度取值在 [ 0 , 1 ] [0,1] [0,1]之间。
TODO: 补充信息增益公式。
信息增益公式为:
G ( Y , X ) \begin{aligned} G(Y, X) \end{aligned} G(Y,X)
【练习8】为什么对没有重复特征值的数据,决策树能够做到损失为0?
因为对于没有重复特征的数据,比如所这个所有的特征都是离散特征且特征是不重复的,所以我们总能够对这个特征有限次分裂(对这个特征的每个分类点都进行分裂),最后会得到对于每个特征的不同组合得到一个叶子节点,每个样本点都会被分配到其中的一个节点,最后所有的特征都被分类正确。
【练习9】如何理解min_samples_leaf参数能够控制回归树输出值的平滑程度?
min_samples_leaf最大的作用在于控制叶节点的数量,使得它不过分大(大于min_samples_leaf) 。取两个极端情况来看,当min_sample_leaf为1时,最后叶子节点的数量为N(样本数量),最后输出样本的方差为原始数据集的方差;当min_samples_leaf为N时,根节点不进行分裂,但是此时输出值为所有因变量 Y Y Y的均值,得到的方差为原始方差的1/N, 也就更加光滑。而当min_samples_leaf取值1和N之间时,方差介于两者之间,当min_samples_leaf值比较小时,光滑程度比较大,当min_samples_leaf比较大时(靠近N),光滑程度比较小,取值相对凹凸不平一些。
ID3树算法、C4.5树算法和CART算法之间有何异同?
ID3, C4.5只能用于分类,而CART不仅可以分类,还可以进行回归
ID3使用的信息增益作为分裂节点的准则,C4.5用信息增益比来分裂节点;CART在分类时可以用Gini指数来分裂节点,在回归时,可以使用MSE和MAE来分裂节点
C4.5在处理数值特征时,可以使用最佳分割法和随机分割法,而ID3只有最佳分割法;
C4.5 可以处理缺失数据,对缺失数据进行惩罚,而ID3不行
ID3, C4.5 只生成树,不剪枝,容易过拟合;但是CART会对生成的树进行剪枝。
什么是信息增益?它衡量了什么指标?它有什么缺陷?
信息增益是,节点分裂之后信息熵减少的量,它衡量了节点分裂之后不确定性的的降低或者而纯度的提高。
缺陷:特征取值多的信息熵比较大,信息增益也比较大。在决策树使用信息增益比来进行节点分裂时,会比较倾向于取值比较多的特征,这会对树的预测精度造成影响。
解决:使用信息增益比可以降低对取值较多的特征的关注。
sklearn决策树中的random_state参数控制了哪些步骤的随机性?
决策树如何处理连续变量和缺失变量?
从连续变量的最大最小值中找到一个值来切分变量,使得这个变量变成分类变量,在分割点左边的为一类,在分割点右边的为一类;
处理缺失变量:计算剩下特征中非缺失值的信息熵,计算缺失值的比例 γ \gamma γ, 用 1 − γ 1-\gamma 1−γ 乘以计算得到的信息熵
基尼系数是什么?为什么要在CART中引入它?
基尼指数是衡量一个节点分裂之后得到的信息增益,其计算如下:
G i n i ( Y ) = 1 − ∑ k = 1 K p ~ 2 ( y k ) Gini(Y) = 1 - \sum_{k=1}^{K}\tilde{p}^2(y_k) Gini(Y)=1−k=1∑Kp~2(yk)
其中 p ~ ( y k ) \tilde{p}(y_k) p~(yk)是利用样本计算得到 y k y_k yk出现的频率,估计的 y k y_k yk出现的概率。
引入它,是因为之前计算的信息增益中的对数 l o g log log不好计算,所以找到了 l o g log log函数在 p = 1 p=1 p=1处的近似值。
什么是树的预剪枝和后剪枝?具体分别是如何操作的?
预剪枝:在判断节点是否分裂的时候就通过一些规则来阻止其分裂.
后剪枝:在数的节点已经全部生长完成后,通过一些规则来摘除一些子树。
后剪枝步骤
计算当前节点为根节点的树的剪枝度量
R α ( T N ) = R ( T N ) + α ∣ T N ∣ R_{\alpha}(T^N) = R(T^N) + \alpha|T^N| Rα(TN)=R(TN)+α∣TN∣
计算当前节点不分裂时的剪枝度量:
R α ( N o d e N ) = R ( N o d e N ) + α R_{\alpha}(Node^N) = R(Node^N) + \alpha Rα(NodeN)=R(NodeN)+α
如果一个根的剪枝度量小于其子节点的剪枝度量的话,即
R α ( T N ) ≤ R α ( N o d e N ) R_{\alpha}(T^N) \le R_{\alpha}(Node^N) Rα(TN)≤Rα(NodeN)
此时有 R α ( N o d e N ) − R ( T ) ∣ T N ∣ − 1 ≤ α \cfrac{R_{\alpha}(Node^N) - R(T)}{|T^N| - 1} \le \alpha ∣TN∣−1Rα(NodeN)−R(T)≤α
从叶子节点往根节点,按照1-3来计算与判断,直到不能够进行剪枝为止。
TODO: 补充预剪枝过程。