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

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

1、线性回归

1.1、线性回归表示

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

先定义好变量表示。记输入变量表示为 X X X,输出变量表示为 Y 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)\} {(x1,y1),(x2,y2),...,(xn,yn)},特征向量 x i x_i xi是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 xi=(xi1,xi2,...,xim)T x i j x_i^j xij表示第 i i i个输入变量的第 j j j个特征那么线性关系可以表示为:

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

我们记 x 0 = 1 x_0=1 x0=1 那么就可以表示为 h θ ( x ) = θ T x h_\theta(x)=\theta^Tx hθ(x)=θ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(θ)=21i=1n(hθ(xi)yi)2

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

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

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

∂ 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 θjJ(θ)=i=1n(hθ(xi)yi)θjhθ(xi)=i=1n(hθ(xi)yi)xij

=> θ 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 θj:=θjαi=1n(hθ(xi)yi)xij

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

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

2、逻辑斯蒂回归

2.1、逻辑斯蒂回归模型

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

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

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

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

P ( y = 1 ∣ x ; θ ) = h θ ( x ) P(y=1|x;\theta)=h_{\theta}(x) P(y=1x;θ)=hθ(x)
P ( y = 0 ∣ x ; θ ) = 1 − h θ ( x ) P(y=0|x;\theta)=1-h_{\theta}(x) P(y=0x;θ)=1hθ(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} P(yx;θ)=hθ(x)y(1hθ(x))1y

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(θ)=i=1nhθ(xi)yi(1hθ(xi))1yi
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(θ)=lnL(θ)=i=1n[yiln(hθ(xi))+(1yi)ln(1hθ(xi)))]

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

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

∂ 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 θjl(θ)=i=1n[yihθ(xi)1+(yi1)1hθ(xi)1]θjhθ(xi)=i=1n[yig(θTxi)1+(yi1)1g(θTxi)1]θjg(θTxi)=i=1n[yig(θTxi)1+(yi1)1g(θTxi)1]g(θTxi)(1g(θTxi))xij=i=1n(yig(θTxi))xij=i=1n(yihθ(xi))xij

那么得到公式 θ 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 θj:=θjαi=1n(hθ(xi)yi)xij (for every j)
可以发现结果和线性回归一样的,求解也是一样,比如使用批量梯度下降。 θ \theta θ求出来之后那么模型也就自然确定了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值