参考书籍:《统计学习方法》,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=1∑n(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−α∂θj∂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θ(xi)−yi)∂θj∂hθ(xi)=i=1∑n(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=1∑n(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+e−x1
这个函数的特点就是取值是
0
−
1
0-1
0−1的递增函数,对其求导我们可以得到
g
′
(
x
)
=
g
(
x
)
(
1
−
g
(
x
)
)
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}} hθ(x)=g(θTx)=1+e−θTx1,那么我们就得到了回归模型了,接下来需要去学习 θ \theta θ,我们做如下的假设:
P
(
y
=
1
∣
x
;
θ
)
=
h
θ
(
x
)
P(y=1|x;\theta)=h_{\theta}(x)
P(y=1∣x;θ)=hθ(x)
P
(
y
=
0
∣
x
;
θ
)
=
1
−
h
θ
(
x
)
P(y=0|x;\theta)=1-h_{\theta}(x)
P(y=0∣x;θ)=1−hθ(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(y∣x;θ)=hθ(x)y(1−hθ(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(θ)=i=1∏nhθ(xi)yi(1−hθ(xi))1−yi
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=1∑n[yiln(hθ(xi))+(1−yi)ln(1−hθ(xi)))]
要求 l ( θ ) l(\theta) l(θ)的极大,同样可以使用梯度上升(注意是梯度上升,我们这里是求极大,而线性回归是求极小)
θ j : = θ j + α ∂ l ( θ ) ∂ θ j \theta_j := \theta_j + \alpha \frac{\partial l(\theta)}{\partial \theta_j} θj:=θj+α∂θj∂l(θ)
∂ 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∂l(θ)=i=1∑n[yihθ(xi)1+(yi−1)1−hθ(xi)1]∂θj∂hθ(xi)=i=1∑n[yig(θTxi)1+(yi−1)1−g(θTxi)1]∂θj∂g(θTxi)=i=1∑n[yig(θTxi)1+(yi−1)1−g(θTxi)1]g(θTxi)(1−g(θTxi))xij=i=1∑n(yi−g(θTxi))xij=i=1∑n(yi−hθ(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=1∑n(hθ(xi)−yi)xij (for every j)
可以发现结果和线性回归一样的,求解也是一样,比如使用批量梯度下降。
θ
\theta
θ求出来之后那么模型也就自然确定了。