机器学习笔记:线性回归、逻辑斯蒂回归推导

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_37334135/article/details/85076131

参考书籍:《统计学习方法》,cs229,其他

1、线性回归

1.1、线性回归表示

线性回归属于监督学习问题,输入X与输出Y成线性关系,只要我们得到了这个具体的关系,那么对于待预测的数据X我们便可以知道Y的值。现在就来求这个线性关系

先定义好变量表示。记输入变量表示为 X X ,输出变量表示为 Y Y ,训练集为 { ( x 1 , y 1 ) , ( x 2 , y 2 ) , . . . , ( x n , y n ) } \{(x_1,y_1),(x_2,y_2),...,(x_n,y_n)\} ,特征向量 x i x_i 是m维的(m个特征)表示为 x i = ( x i 1 , x i 2 , . . . , x i m ) T x_i=(x_i^1,x_i^2,...,x_i^m)^T x i j x_i^j 表示第 i i 个输入变量的第 j j 个特征那么线性关系可以表示为:

y = θ 0 + θ 1 x 1 + . . . + θ n x n y=\theta_0+\theta_1 x_1+...+\theta_n x_n

我们记 x 0 = 1 x_0=1 那么就可以表示为 h θ ( x ) = θ T x h_\theta(x)=\theta^Tx

1.2、线性回归学习

线性回归的学习也就是求解参数 θ \theta ,为了使预测结果尽量准确,我们需要使得对训练集拟合的较好,定义如下的损失函数,直观上也很容易理解:

J ( θ ) = 1 2 i = 1 n ( h θ ( x i ) y i ) 2 J(\theta) = \frac{1}{2} \sum\limits_{i=1}^{n}(h_\theta(x_i)-y_i)^2

显然 J J 越小越好,所以我们需要求 min J ( θ ) \min J(\theta) ,此时对应的 θ \theta 正是我们所需要的,自然也就求出来了模型。 这里使用梯度下降法来求解(假如你现在在山顶记住 j j ,你要下山打算每次跨 α \alpha 步,如何下的最快?答案是沿着梯度方向走也就是切线方向,每跨一次位置成了 j α j-\alpha*梯度 ,继续用 j j 表示那么就是 θ j : = j α \theta_j :=j-\alpha*梯度 ),用公式表示如下。

θ j : = θ j α J ( θ ) θ j \theta_j := \theta_j - \alpha \frac{\partial J(\theta)}{\partial \theta_j}

接下来进行简单的求导即可:

J ( θ ) θ j = i = 1 n ( h θ ( x i ) y i ) h θ ( x i ) θ j = i = 1 n ( h θ ( x i ) y i ) x i j \frac{\partial J(\theta)}{\partial \theta_j} \\ = \sum\limits_{i=1}^{n}(h_\theta(x_i)-y_i) \frac{\partial h_\theta(x_i)}{\partial \theta_j} \\=\sum\limits_{i=1}^{n}(h_\theta(x_i)-y_i)x_i^j

=> θ j : = θ j α i = 1 n ( h θ ( x i ) y i ) x i j \theta_j := \theta_j - \alpha \sum\limits_{i=1}^{n}(h_\theta(x_i)-y_i)x_i^j

对于 θ 1 θ m \theta_1-\theta_m 我们每次都执行上面的更新操作,直到两次更新前后的差很小的时候便停止,此时的 θ 1 θ m \theta_1-\theta_m 就是我们所需要的,同时也满足损失函数值最小。

注意:最开始我们是赋了每个 θ i \theta_i 初值的,其中 α \alpha 叫做步长或者学习率,可以通过交叉验证获得(我到现在也没有去获得)。最后,由于每次都需要求和,所以上面的操作方法又叫批量梯度下降。当数据量大的时候效率就显得不高,此时可以采用随机梯度下降。
随机梯度下降的外层对 i i 进行循环,内部则是 θ j : = θ j α ( h θ ( x i ) y i ) x i j ( j ) \theta_j := \theta_j - \alpha (h_\theta(x_i)-y_i)x_i^j (对每个j同时做这样的操作)

2、逻辑斯蒂回归

2.1、逻辑斯蒂回归模型

名字叫回归,实际上是来做分类的。

当我们使用线性回归根据X来预测Y的时候,如果Y是离散值那么就无法用上面的线性回归来做了(我就不举例了,相信不会有人这样做)。简单一点,考虑二项逻辑斯蒂回归,即 y = { 0 , 1 } y=\{0,1\} 。那么现在的问题就是,你给我个 x x 我给你个 y y ,其值要么是0要么是1(比如0表示对,1表示错)。介绍个sigmod函数如下:

g ( x ) = 1 1 + e x g(x)=\frac{1}{1+e^{-x}}
在这里插入图片描述
这个函数的特点就是取值是 0 1 0-1 的递增函数,对气求导我们可以得到 g ( x ) = g ( x ) ( 1 g ( x ) ) g^{'}(x)=g(x)(1-g(x))

我们对上面的线性回归做个适当的变形 h θ ( x ) = g ( θ T x ) = 1 1 + e θ T x h_{\theta}(x)=g(\theta^Tx)=\frac{1}{1+e^{-\theta^Tx}} ,那么我们就得到了回归模型了,接下来需要去学习 θ \theta ,我们做如下的假设:

P ( y = 1 x ; θ ) = h θ ( x ) P(y=1|x;\theta)=h_{\theta}(x)
P ( y = 0 x ; θ ) = 1 h θ ( x ) P(y=0|x;\theta)=1-h_{\theta}(x)

假设现在给我个x,如何得到y? 使用上面两个式子得到两个P,哪个大就归为哪一类。现在将两个式子写到一起
P ( y x ; θ ) = h θ ( x ) y ( 1 h θ ( x ) ) 1 y P(y|x;\theta)=h_{\theta}(x)^y(1-h_{\theta}(x))^{1-y}

2.2、逻辑回归学习

逻辑回归学习也就是求 θ \theta ,使用极大似然估计来求解(极大似然估计使用的地方就是已知模型,有数据来求参数)。推导的过程即求导的过程了,如下:

L ( θ ) = i = 1 n h θ ( x i ) y i ( 1 h θ ( x i ) ) 1 y i L(\theta)=\prod\limits_{i=1}^{n}h_{\theta}(x_i)^{y_i}(1-h_{\theta}(x_i))^{1-y_i}
l ( θ ) = l n L ( θ ) = i = 1 n [ y i l n ( h θ ( x i ) ) + ( 1 y i ) l n ( 1 h θ ( x i ) ) ) ] l(\theta)=lnL(\theta)=\sum\limits_{i=1}^{n}[y_iln(h_{\theta}(x_i)) + (1-y_i)ln(1-h_{\theta}(x_i)))]

要求 l ( θ ) l(\theta) 的极大,同样可以使用梯度上升(注意是梯度上升,我们这里是求极大,而线性回归是求极小)

θ j : = θ j + α l ( θ ) θ j \theta_j := \theta_j + \alpha \frac{\partial l(\theta)}{\partial \theta_j}

l ( θ ) θ j = i = 1 n [ y i 1 h θ ( x i ) + ( y i 1 ) 1 1 h θ ( x i ) ] h θ ( x i ) θ j = i = 1 n [ y i 1 g ( θ T x i ) + ( y i 1 ) 1 1 g ( θ T x i ) ] g ( θ T x i ) θ j = i = 1 n [ y i 1 g ( θ T x i ) + ( y i 1 ) 1 1 g ( θ T x i ) ] g ( θ T x i ) ( 1 g ( θ T x i ) ) x i j = i = 1 n ( y i g ( θ T x i ) ) x i j = i = 1 n ( y i h θ ( x i ) ) x i j \frac{\partial l(\theta)}{\partial \theta_j}\\=\sum\limits_{i=1}^{n}[y_{i}\frac{1}{h_{\theta}(x_i)}+(y_i-1)\frac{1}{1-h_{\theta}(x_i)}] \frac{\partial h_{\theta}(x_i)}{\partial \theta_j}\\=\sum\limits_{i=1}^{n}[y_{i}\frac{1}{g(\theta^Tx_i)}+(y_i-1)\frac{1}{1-g(\theta^Tx_i)}] \frac{\partial g(\theta^T x_i)}{\partial \theta_j}\\=\sum\limits_{i=1}^{n}[y_{i}\frac{1}{g(\theta^Tx_i)}+(y_i-1)\frac{1}{1-g(\theta^Tx_i)}]g(\theta^Tx_i)(1-g(\theta^Tx_i))x_{i}^j\\=\sum\limits_{i=1}^{n}(y_i-g(\theta^Tx_i))x_{i}^j\\=\sum\limits_{i=1}^{n}(y_i-h_{\theta}(x_i))x_{i}^j

那么得到公式 θ j : = θ j α i = 1 n ( h θ ( x i ) y i ) x i j \theta_j := \theta_j - \alpha \sum\limits_{i=1}^{n}(h_{\theta}(x_i)-y_i)x_{i}^j (for every j)
可以发现结果和线性回归一样的,求解也是一样,比如使用批量梯度下降。 θ \theta 求出来之后那么模型也就自然确定了。

猜你喜欢

转载自blog.csdn.net/qq_37334135/article/details/85076131