Logistic Regression
简单易懂的笔记 by hch
首先要搞懂干什么:
x | 特征值1 | 特征值2 | … | 特征值n | y |
---|---|---|---|---|---|
x1 | 1 | 0 | … | 1 | 0 |
x2 | 0 | 1 | … | 1 | 1 |
… | … | … | … | … | … |
xm | 1 | 0 | … | 1 | 0 |
xj表示第j个样本,共有m个样本
xji表示第j个样本的第i维特征值
yj表示第j个样本的tag,即结果
我们试图通过已知tag的数据去训练模型,从而预测未知tag的数据
(下面数学公式有哪里不懂了,记得回来看这里的定义)
形象理解参数与预测
借用二维(假设只有两个特征)图像,我们可以把样本表示到二维图上
我们查看此图会发现,线段很好地分割了样本点 该线段函数为
y
=
a
x
y=ax
y=ax
我们换种表达方式
Q
=
w
1
x
+
w
2
y
Q=w_1x+w_2y
Q=w1x+w2y
点处于线段时,Q=0
点处于线段上方时,Q>0
点处于线段下方时,Q<0
也就如图中所显示的那样,我们通过这条线便可分出点的类别
那么开始延伸,预测xj样本,它有n维向量,表达式即为
Q
=
w
1
x
j
1
+
w
2
x
j
2
+
w
3
x
j
3
+
.
.
.
+
w
n
x
j
n
Q= w_1x_{j1}+w_2x_{j2}+w_3x_{j3}+...+w_nx_{jn}
Q=w1xj1+w2xj2+w3xj3+...+wnxjn
我们的问题也就演变成了如何求参(w1,w2,w3,…,wn)
sigmod函数
即大于0时其趋近于1,小于0时其趋近于0,我们可以得到表达式
h
θ
(
x
j
)
=
s
i
g
m
o
i
d
(
w
1
x
j
1
+
w
2
x
j
2
+
w
3
x
j
3
+
.
.
.
+
w
n
x
j
n
)
h_\theta(x_j)=sigmoid(w_1x_{j1}+w_2x_{j2}+w_3x_{j3}+...+w_nx_{jn})
hθ(xj)=sigmoid(w1xj1+w2xj2+w3xj3+...+wnxjn)
当y=1时,我们希望h(xj)预测也为1
当y=0时,我们希望h(xj)预测也为0
合二为一
观察下面这个式子
p
(
y
j
∣
x
j
)
=
h
θ
(
x
j
)
y
j
∗
(
1
−
h
θ
(
x
j
)
)
1
−
y
j
p(y_j|x_{j})= h_\theta(x_j)^{y_j}*(1-h_\theta(x_j))^{1-y_j}
p(yj∣xj)=hθ(xj)yj∗(1−hθ(xj))1−yj
当yj=1时,p(yj|xj)=1
当yj=0时,p(yj|xj)=1
我们只要希望这个函数输出1就好了
损失函数
(习惯于损失函数越小越好,所以加了负号)
l o s s = − l n ( ∏ j = 1 m p ( y j ∣ x j ) ) = ∑ j = 1 m − y j l n h θ ( x j ) − ( 1 − y j ) l n ( 1 − h θ ( x j ) ) loss=-ln(\prod_{j=1}^mp(y_j|x_{j}))=\sum_{j=1}^m-y_jlnh_\theta(x_j)-(1-y_j)ln(1-h_\theta(x_j)) loss=−ln(j=1∏mp(yj∣xj))=j=1∑m−yjlnhθ(xj)−(1−yj)ln(1−hθ(xj))
梯度下降法
我们想要求上面那个函数的极大值点,第一想法是求导,然后让导数等于0,且得到的该点代入二阶导后小于0,就得到极大值点了,即
f ′ ( x 0 ) = 0 f^{'}(x_0)=0 f′(x0)=0
f
′
′
(
x
0
)
<
0
f^{''}(x_0)<0
f′′(x0)<0
即x0为极大值点。 但这是求一个自变量的函数极值的方法,我们有n个wi是未知的,也就是有n个自变量,这种方法自然是不管用了。那么是否仍然有特定的算数方法得到极大值呢?想必考过研的同学都知道二元是怎么求的,十分麻烦的方法,这时计算机提出了它自己的方法,我们依旧先用二维来理解。
y = − x 2 + 6 x y=-x^2+6x y=−x2+6x
导数的真正意义—方向
观察绿点(1,5),其导数为4
观察绿点(5,5),其导数为-4
导数的本质为“方向”
在(1,5)点x要往左移一些
在(5,5)点x要往右移一些
x 1 = x 0 + α ∗ δ y δ x x_1=x_0+\alpha*\frac{\delta y}{\delta x} x1=x0+α∗δxδy
计算机在(1,5)点,以α的学习速率向左移动x,一步步移动,最后会收敛到极大值点。拓展:针对我们的loss函数,我们对每一个自变量wi求导,并以α的学习速率更新wi。
δ l o s s δ w i = ∑ j = 1 m δ l o s s δ h θ ( x j ) ∗ δ l o s s δ w ∗ δ w δ w i \frac{\delta loss}{\delta w_i}=\sum_{j=1}^{m}\frac{\delta loss}{\delta h_\theta(x_j)}*\frac{\delta loss}{\delta w}*\frac{\delta w}{\delta w_i} δwiδloss=j=1∑mδhθ(xj)δloss∗δwδloss∗δwiδw
δ l o s s δ h θ ( x j ) = − y i h θ ( x j ) + 1 − y i 1 − h θ ( x j ) \frac{\delta loss}{\delta h_\theta(x_j)}= -\frac{y_i}{ h_{\theta}(x_j)}+\frac{1-y_i}{1-h_{\theta}(x_j)} δhθ(xj)δloss=−hθ(xj)yi+1−hθ(xj)1−yi
s i g m o i d ( x ) = 1 1 − e − x sigmoid(x)=\frac{1}{1-e^{-x}} sigmoid(x)=1−e−x1
( s i g m o i d ( x ) ) ′ = s i g m o i d ( x ) ∗ ( 1 − s i g m o i d ( x ) ) (sigmoid(x))^{'}=sigmoid(x)*(1-sigmoid(x)) (sigmoid(x))′=sigmoid(x)∗(1−sigmoid(x))
δ h θ ( x j ) δ w = ( 1 − s i g m o i d ( h θ ( x j ) ) s i g m o i d ( h θ ( x j ) ) \frac{\delta h_{\theta}(x_j)}{\delta w}=(1-sigmoid(h_\theta(x_j))sigmoid(h_\theta(x_j)) δwδhθ(xj)=(1−sigmoid(hθ(xj))sigmoid(hθ(xj))
w = w 1 ∗ x j 1 + w 1 ∗ x j 2 + w 1 ∗ x j 3 + . . . . + w 1 ∗ x j n w=w_1*x_{j1}+w_1*x_{j2}+w_1*x_{j3}+....+w_1*x_{jn} w=w1∗xj1+w1∗xj2+w1∗xj3+....+w1∗xjn
δ w δ w i = x j i \frac{\delta w}{\delta w_i}=x_{ji} δwiδw=xji
w i = w i + α ∗ δ l o s s δ w i w_i=w_i+\alpha*\frac{\delta loss}{\delta w_i} wi=wi+α∗δwiδloss
以上收敛到wi即可,我们即求参完成,预测模型也完成了。
正则化
欠拟合与过拟合
你觉得哪个图像能描绘这些点的走向最好?
一图完全是没描 这叫“欠拟合” 也就是模型没训练好
二图虽然描的简单,但形象地表现了数据的大体走向,这叫“适当容量”,训练的不错
三图每个点都描上了,但描“过了”,用马克思原理来说,把“偶然性”表现在了我们追求的“必然性”之中,这叫“过拟合”
奥卡姆剃刀
对于组织在目标设置与执行过程中因上述种种原因而出现的目标曲解与置换,有一个根本的解决之道,即“无情地剔除所有累赘”,这也正是“奥卡姆剃刀”所倡导的“简化”法则:保持事物的简单化是对付复杂与繁琐的最有效方式。
简单来说:我们追求简单且能表现规律的模型,图二,就决定是你了。
正则化解决过拟合
L1范式:
n e w _ l o s s = l o s s + α ∗ ∑ i = 1 n ∣ w i ∣ new\_loss=loss+\alpha*\sum_{i=1}^{n}|w_i| new_loss=loss+α∗i=1∑n∣wi∣
L2范式:
n e w _ l o s s = l o s s + 1 2 ∗ α ∗ ∑ i = 1 n ∣ w i ∣ 2 new\_loss=loss+\frac{1}{2}*\alpha*\sum_{i=1}^{n}|w_i|^2 new_loss=loss+21∗α∗i=1∑n∣wi∣2
它们的原理:
我们使用梯度下降法是为了使loss函数寻找到极小值,那么也就使属于new_loss变到最小,也就是使一些很小的wi变成0,这样的意义会使一些对应的不重要的特征无效化,从而简化模型,寻找数据的必然性。
两者的区别:
L1范数是指向量中各个元素绝对值之和
L2范数是指向量各元素的平方和然后求平方根
L1范数可以进行特征选择,即让特征的系数变为0.
L2范数可以防止过拟合,提升模型的泛化能力,有助于处理 condition number不好下的矩阵(数据变化很小矩阵求解后结果变化很大)
(核心:L2对大数,对outlier离群点更敏感!)
下降速度:最小化权值参数L1比L2变化的快
模型空间的限制:L1会产生稀疏 L2不会。
L1会趋向于产生少量的特征,而其他的特征都是0,而L2会选择更多的特征,这些特征都会接近于0。