树回归、线性回归、Logitic回归

树回归

分类与回归树(classification and regression tree,CART)即可用于分类也可以用于回归,由特征选择、树的生成及剪枝组成,一般简称为决策树。

CART生成

决策树的生成就是递归地构建二叉决策树的过程。对回归树用平方误差最小化准则,对分类树用基尼指数(Gini index)最小化准则,进行特征选择,生成二叉树。

回归树的生成

回归树用平方误差最小化准则,所以又称它为最小二乘回归树。
最小二乘回归树生成算法
输入:训练数据集 D D D
输出:回归树 f ( x ) f(x) f(x)
在训练数据集所在的输入空间,递归将每个区域划分为两个子区域并决定每个子区域上的输出值,构建二叉决策树;
(1)选择最优切分变量 j j j与切分点 s s s,求解:
min ⁡ j , s [ ∑ x i ∈ R 1 ( j , s ) ( y i − c 1 ) 2 + ∑ x i ∈ R 2 ( j , s ) ( y i − c 2 ) 2 ] (5.12) c 1 = a v e ( y i ∣ x i ∈ R 1 ( j , s ) ) c 2 = a v e ( y i ∣ x i ∈ R 2 ( j , s ) ) \begin{array}{ll} \min_{j,s} \left[\sum_{x_i \in R_1(j,s)}(y_i - c_1)^2 + \sum_{x_i \in R_2(j,s)}(y_i - c_2)^2 \right] \qquad \qquad \text{(5.12)}\\[2ex] c_1 = ave(y_i | x_i \in R_1(j,s)) \\[2ex] c_2 = ave(y_i | x_i \in R_2(j,s)) \end{array} minj,s[xiR1(j,s)(yic1)2+xiR2(j,s)(yic2)2](5.12)c1=ave(yixiR1(j,s))c2=ave(yixiR2(j,s))遍历变量 j j j,对固定的切分变量 j j j扫描切分点 s s s,选择使式(5.21)达到最小值得对 ( j , s ) (j,s) (j,s)
(2)用选定的对 ( j , s ) (j,s) (j,s)划分区域并决定相应的输出值
R 1 ( j , s ) = { x ∣ x ( j ) ⩽ s } R 2 ( j , s ) = { x ∣ x ( j ) > s } c ^ m = 1 N m ∑ x i ∈ R m ( j , s ) y i , x ∈ R m , m = 1 , 2 \begin{array}{ll} R_1(j,s)=\{x|x^{(j)} \leqslant s\}\\[2ex] R_2(j,s)=\{x|x^{(j)} \gt s\} \\[2ex] \hat c_m = \frac1{N_m}\sum_{x_i \in R_m(j,s)}y_i, \quad x \in R_m, \quad m=1,2 \end{array} R1(j,s)={xx(j)s}R2(j,s)={xx(j)>s}c^m=Nm1xiRm(j,s)yi,xRm,m=1,2
(3)继续对两个子区域调用步骤(1),(2),直到满足停止条件。
(4)将输入空间划分为M个区域 R 1 , R 2 , ⋯   , R m R_1,R_2,\cdots,R_m R1,R2,,Rm,生成决策树:
f ( x ) = ∑ m = 1 M c m ^ I ( x ∈ R m ) f(x)=\sum_{m=1}^M\hat{c_m}I(x \in R_m) f(x)=m=1Mcm^I(xRm)
在《机器学习实战》第九章,有对此算法具体实现的代码,可参考加深理解。

分类树的生成

分类树算法用基尼指数选择最优特征及最优二值切分点,其他与归类树相同。
基尼指数:对给定的样本集合 D D D,其基尼指数为
Gini ( D ) = 1 − ∑ k = 1 K ( ∣ C k ∣ ∣ D ∣ ) 2 \text{Gini}(D)=1-\sum_{k=1}^K\left( \frac{|C_k|}{|D|}\right)^2 Gini(D)=1k=1K(DCk)2这里, C k C_k Ck D D D中属于第 k k k类的样本子集, K K K是类的个数。
如果样本集合 D D D根据特征 A A A是否取某一可能值 a a a被分割成 D 1 D_1 D1 D 2 D_2 D2两部分,即
D 1 = { ( x , y ) ∈ D ∣ A ( x ) = a } , D 2 = D − D 1 D_1=\{(x,y) \in D|A(x)=a\},\quad D_2=D-D_1 D1={(x,y)DA(x)=a},D2=DD1则在特征 A A A的条件下,集合 D D D的基尼指数定义为
Gini ( D , A ) = ∣ D 1 ∣ D Gini ( D 1 ) + ∣ D 2 ∣ D Gini ( D 2 ) \text{Gini}(D,A)=\frac{|D_1|}{D}\text{Gini}(D_1)+\frac{|D_2|}{D}\text{Gini}(D_2) Gini(D,A)=DD1Gini(D1)+DD2Gini(D2)基尼指数 Gini ( D ) \text{Gini}(D) Gini(D)表示集合 D D D的不确定性,基尼指数 Gini ( D , A ) \text{Gini}(D,A) Gini(D,A)表示经 A = a A=a A=a分割后集合 D D D的不确定性。基尼指数越大,样本的不确定性也就越大。

线性回归

普通最小二乘法

线性回归是依据输入写出一个目标值的计算公式,即回归方程,根据回归方程和输入做预测。
假定输入数据存放在矩阵 X X X中,而回归系数存放在向量 w w w中。那么对于给定的数据 X 1 X_1 X1,预测结果将会通过 Y 1 = X 1 T w Y_1=X^T_1w Y1=X1Tw给出。如何求回归方程,也即,如何根据已有的 X X X和对应的 y y y,找到 w w w?一个常用的方法是找出使误差最小的 w w w,这里的误差平方误差 ∑ i = 1 m ( y i − x i T w ) 2 \sum_{i=1}^m(y_i-x_i^Tw)^2 i=1m(yixiTw)2。对 w w w求导,并令其等于零,解得:
w ^ = ( X T X ) − 1 X T y \hat w=(X^TX)^{-1}X^Ty w^=(XTX)1XTy通过调用NumPy库里的矩阵方法,仅需几行代码便可完成此功能,该方法也叫“普通最小二乘法”(ordinary least squares)。

局部加权线性回归

线性回归可能出现的一个问题是欠拟合,因为它求的是最小均方误差的无偏估计,所以有些方法允许在估计中引入一些偏差,从而降低预测的均方误差。其中一个方法是局部加权线性回归(Locally Weighted Linear Regression, LWLR)。在方法中,给待预测点附近的每个点赋予一定的权重,然后基于最小均方误差来进行普通的回归,该算法解出回归系数 w w w的形式如下:
w ^ = ( X T W X ) X T W y \hat w=(X^TWX)X^TWy w^=(XTWX)XTWy其中, w w w是一个矩阵,用来给每个数据点赋予权重。
LWLR使用“核”来对附近的点赋予权重,常用的核是高斯核,对应权重如下:
w ( i , i ) = exp ⁡ ( ∣ x ( i ) − x ∣ − 2 k 2 ) w(i,i)=\exp \left(\frac{|x^{(i)}-x|}{-2k^2} \right) w(i,i)=exp(2k2x(i)x)

岭回归

岭回归就是在举证 X T X X^TX XTX上加一个 λ I \lambda I λI从而使得矩阵非奇异,回归系数的计算公式变成:
w ^ = ( X T X + λ I ) − 1 X T y \hat w=(X^TX+\lambda I)^{-1}X^Ty w^=(XTX+λI)1XTy

前向逐步回归

前向逐步回归属于一种贪心算法,即每一步都尽可能减少误差。
该算法的伪代码如下:
数据标准化,使其分布满足0均值和单位方差
在每轮迭代过程中:
设置当前最小误差为正无穷
对每个特征:
增大或缩小:
改变特征对应系数得到一个新w
计算新w下的误差
更新最小误差
更新最佳系数矩阵

Logistic回归

Logistic回归模型 二项Logistic回归模型是如下的条件概率分布:
P ( Y = 1 ∣ x ) = exp ⁡ ( w ⋅ x + b ) 1 + exp ⁡ ( w ⋅ x + b ) P ( Y = 10 x ) = 1 1 + exp ⁡ ( w ⋅ x + b ) P(Y=1|x)=\frac{\exp (w \cdot x+b)}{1+\exp (w \cdot x +b)}\\[2ex] P(Y=10x)=\frac1{1+\exp (w \cdot x +b)} P(Y=1x)=1+exp(wx+b)exp(wx+b)P(Y=10x)=1+exp(wx+b)1 x ∈ R n x \in R^n xRn是输入, Y ∈ { 0 , 1 } Y \in \{0,1\} Y{0,1}是输出, w ∈ R n w \in R^n wRn b ∈ R b \in R bR是参数, w w w称为权值向量, b b b称为偏置, w ⋅ x w \cdot x wx w w w x x x的内积。
一般,将为计算方便,会扩充 w w w x x x,即 w = ( w ( 1 ) , w ( 2 ) , ⋯   , w ( n ) , b ) w=(w^{(1)},w^{(2)},\cdots,w^{(n)},b) w=(w(1),w(2),,w(n),b) x = ( x ( 1 ) , x ( 2 ) , ⋯   , x ( n ) , 1 ) x=(x^{(1)},x^{(2)},\cdots,x^{(n)},1) x=(x(1),x(2),,x(n),1),这时,Logistic模型如下:
P ( Y = 1 ∣ x ) = exp ⁡ ( w ⋅ x ) 1 + exp ⁡ ( w ⋅ x ) P ( Y = 10 x ) = 1 1 + exp ⁡ ( w ⋅ x ) P(Y=1|x)=\frac{\exp (w \cdot x)}{1+\exp (w \cdot x)}\\[2ex] P(Y=10x)=\frac1{1+\exp (w \cdot x)} P(Y=1x)=1+exp(wx)exp(wx)P(Y=10x)=1+exp(wx)1

模型参数估计

使用极大似然估计法估计模型参数 w w w,进而得到Logistic回归模型。
设: P ( Y = 1 ∣ x ) = π ( x ) , P ( Y = 1 ∣ x ) = 1 − π ( x ) P(Y=1|x)=\pi (x),\qquad P(Y=1|x)=1-\pi (x) P(Y=1x)=π(x),P(Y=1x)=1π(x)
似然函数为:
∏ i = 1 N [ π ( x i ) ] y i [ 1 − π ( x i ) ] 1 − y i \prod_{i=1}^N[\pi(x_i)]^{y_i}[1-\pi(x_i)]^{1-y_i} i=1N[π(xi)]yi[1π(xi)]1yi
对数似然函数为:
L ( w ) = ∑ i = 1 N [ y i ln ⁡ π ( x i ) + ( 1 − y i ) ln ⁡ ( 1 − π ( x i ) ) ] = ∑ i = 1 N [ y i ln ⁡ π ( x i ) 1 − π ( x i ) + ln ⁡ ( 1 − π ( x i ) ) ] = ∑ i = 1 N [ y i ( w ⋅ x i ) − ln ⁡ ( 1 + exp ⁡ ( w ⋅ x i ) ) ] \begin{array}{ll} L(w) & = \sum_{i=1}^N[y_i\ln\pi(x_i)+(1-y_i)\ln(1-\pi(x_i))] \\[2ex] & = \sum_{i=1}^N[y_i\ln\frac{\pi(x_i)}{1-\pi(x_i)}+\ln(1-\pi(x_i))]\\[2ex] & = \sum_{i=1}^N[y_i(w \cdot x_i)-\ln(1+\exp(w \cdot x_i))]\\[2ex] \end{array} L(w)=i=1N[yilnπ(xi)+(1yi)ln(1π(xi))]=i=1N[yiln1π(xi)π(xi)+ln(1π(xi))]=i=1N[yi(wxi)ln(1+exp(wxi))]通过梯度上升法求 L ( W ) L(W) L(W)的极大值, w ( j ) w^{(j)} w(j)的更新过程为:
w ( j ) = w ( j ) + α ∂ π ( x i ) ∂ w ( j ) w^{(j)} = w^{(j)} + \alpha \frac {\partial \pi (x_i)}{\partial w^{(j)}} w(j)=w(j)+αw(j)π(xi)其中, α \alpha α为步长, w ( j ) w^{(j)} w(j) w ( j ) ∈ w w^{(j)} \in w w(j)w)的偏导为:
∂ π ( x i ) ∂ w ( j ) = ∑ i = 1 N [ y i x i ( j ) − 1 1 + exp ⁡ ( w ⋅ x i ) ⋅ exp ⁡ ( w ⋅ x i ) ⋅ x i ( j ) ] = ∑ i = 1 N ( y i − π ( x i ) ) ⋅ x i ( j ) \begin{array}{ll} \frac {\partial \pi (x_i)}{\partial w^{(j)}} & = \sum_{i=1}^N[y_ix_i^{(j)}-\frac1{1+\exp(w \cdot x_i)} \cdot \exp(w \cdot x_i) \cdot x_i^{(j)}] \\[2ex] & = \sum_{i=1}^N(y_i-\pi (x_i)) \cdot x_i^{(j)}\end{array} w(j)π(xi)=i=1N[yixi(j)1+exp(wxi)1exp(wxi)xi(j)]=i=1N(yiπ(xi))xi(j)
梯度上升算法,会对整个数据集进行多次迭代,但如果由数十亿样本和成千上万的特征,那么该算法的复杂度太高。改进的方法是一次仅用一个样本点更新回归系数,该方法称为随机梯度上升算法。具体实现,可参见《机器学习实战》第五章。

你可能感兴趣的:(树回归,线性回归,Logistic回归,Logistic回归算法推导)