浅谈线性回归和逻辑回归
1.监督学习和非监督学习
1.1 监督学习
监督学习的训练集带标签,即“正确答案”,监督学习分为两大类,一类产生回归模型,预测连续值输出,如预测房价和股票;另一类产生分类模型,预测离散值输出。常见的算法有今天要谈的线性回归/逻辑回归和后续的SVM等。
1.2 无监督学习
无监督学习指给机器一个不带标签的数据集,让机器自己学习到其中的结构或者信息。比如聚类算法就是典型的无监督学习模型,可以用在新闻聚类和矢量量化(图像压缩)中。
2.线性回归
机器学习的最终目的是学习到一个函数h,这个函数被称为假设函数,学习了训练样本的特征,对新样本有很好的泛化能力。本部分从单因素预测房价这个例子出发,实现线性回归。
2.1 模型学习过程
2.2 如何得到假设函数h
设线性回归模型的h为
h
θ
(
x
)
=
θ
0
+
θ
1
x
h_{\theta}(x)=\theta_{0}+\theta_{1} x
hθ(x)=θ0+θ1x,训练的目的是选择合适的
θ
0
\theta_{0}
θ0和
θ
1
\theta_{1}
θ1让
h
θ
(
x
)
h_{\theta}(x)
hθ(x)更靠近真实值y。
代价函数计算了整个训练集中预测值和真实值的差距,线性回归模型使用预测值和真实值的平方差来计算代价,代价函数如下所示:
J
(
θ
0
,
θ
1
)
=
1
2
m
∑
i
=
1
m
(
h
θ
(
x
(
i
)
)
−
y
(
i
)
)
2
J\left(\theta_{0}, \theta_{1}\right)=\frac{1}{2 m}\sum_{i=1}^{m}\left(h_{\theta}\left(x^{(i)}\right)-y^{(i)}\right)^{2}
J(θ0,θ1)=2m1i=1∑m(hθ(x(i))−y(i))2
其中m为样本的个数,代价函数求的是平均代价,乘以1/2有利于参数求导后的表示,并不影响收敛性。
从此,找到使代价函数最小化的
θ
0
\theta_{0}
θ0和
θ
1
\theta_{1}
θ1成为模型优化的目标。
2.3 梯度下降
2.3.1 作用
梯度下降可以用来求解最小化问题,本文用来最小化代价函数 J ( θ 0 , θ 1 ) J\left(\theta_{0}, \theta_{1}\right) J(θ0,θ1)。梯度下降的过程分为两步。
- 初始化需要学习的参数 θ 0 \theta_{0} θ0和 θ 1 \theta_{1} θ1
- 改变参数值降低 J ( θ 0 , θ 1 ) J\left(\theta_{0}, \theta_{1}\right) J(θ0,θ1),直到最后找到最小值
2.3.2 参数更新
同时对各个参数进行下面的更新,直到收敛。
θ
j
=
θ
j
−
α
∂
∂
θ
j
J
(
θ
0
,
θ
1
)
(
for
j
=
0
and
j
=
1
)
\theta_{j}=\theta_{j}-\alpha \frac{\partial}{\partial \theta_{j}} J\left(\theta_{0}, \theta_{1}\right) \quad(\text { for } j=0 \text { and } j=1)
θj=θj−α∂θj∂J(θ0,θ1)( for j=0 and j=1)
正确的更新:
temp
0
:
=
θ
0
−
α
∂
∂
θ
0
J
(
θ
0
,
θ
1
)
temp
1
:
=
θ
1
−
α
∂
∂
θ
1
J
(
θ
0
,
θ
1
)
θ
0
:
=
temp
0
θ
1
:
=
temp
1
\begin{array}{l} \operatorname{temp} 0:=\theta_{0}-\alpha \frac{\partial}{\partial \theta_{0}} J\left(\theta_{0}, \theta_{1}\right) \\ \operatorname{temp} 1:=\theta_{1}-\alpha \frac{\partial}{\partial \theta_{1}} J\left(\theta_{0}, \theta_{1}\right) \\ \theta_{0}:=\operatorname{temp} 0 \\ \theta_{1}:=\operatorname{temp} 1 \end{array}
temp0:=θ0−α∂θ0∂J(θ0,θ1)temp1:=θ1−α∂θ1∂J(θ0,θ1)θ0:=temp0θ1:=temp1
2.3.3 知识点总结
(1)梯度下降可以让参数的改变方向往代价loss减少的方向改变
(2)学习率
α
\alpha
α的取值问题。太小会使梯度下降太慢,影响收敛速度,太大会导致无法收敛甚至发散。
(3)在合适的学习率下,尽管学习率被固定,使用梯度下降也能收敛到局部最小值,原因是越接近局部最小值时,梯度下降时的梯度变得越小,对应参数变化的步子也变小了。
2.3.4 梯度下降应用于线性回归
不断重复以下过程直至收敛,记住,参数是同时更新的。
θ
0
=
θ
0
−
α
1
m
∑
i
=
1
m
(
h
θ
(
x
(
i
)
)
−
y
(
i
)
)
θ
1
=
θ
1
−
α
1
m
∑
i
=
1
m
(
h
θ
(
x
(
i
)
)
−
y
(
i
)
)
⋅
x
(
i
)
\begin{array}{l} \theta_{0}=\theta_{0}-\alpha \frac{1}{m} \sum_{i=1}^{m}\left(h_{\theta}\left(x^{(i)}\right)-y^{(i)}\right) \\\\ \theta_{1}=\theta_{1}-\alpha \frac{1}{m} \sum_{i=1}^{m}\left(h_{\theta}\left(x^{(i)}\right)-y^{(i)}\right) \cdot x^{(i)} \end{array}
θ0=θ0−αm1∑i=1m(hθ(x(i))−y(i))θ1=θ1−αm1∑i=1m(hθ(x(i))−y(i))⋅x(i)
3.逻辑回归
3.1概述
逻辑回归虽然名字里带着回归,可是却是用来做分类的。比如垃圾邮件分类、网上交易欺诈识别和肿瘤预测等。那可以用线性回归分类吗?可以,但有两个缺点:一是一个样本的偏移可能引起分类结果变得很差,二是线性回归的输出值可能很大,也可能很小,而分类的标记是数量很少的离散的值,此时,逻辑回归就很好满足这个条件了,它的输出范围由于经过了sigmoid函数的归一化控制在[0,1]中,可以理解为分为正例的概率(正例往往是感兴趣的类别,比如属于垃圾邮件)。
3.2 新的假设函数和损失函数
(1)假设函数h在线性回归的基础上加上了sigmoid函数的归一化,增加了非线性。
h
θ
(
x
)
=
g
(
θ
T
x
)
g
(
z
)
=
1
1
+
e
−
z
\begin{aligned} h_{\theta}(x) &=g\left(\theta^{T} x\right) \\ g(z) &=\frac{1}{1+e^{-z}} \end{aligned}
hθ(x)g(z)=g(θTx)=1+e−z1
(2)由于假设函数h的改变,代价函数也改变了,不变会导致J(
θ
\theta
θ)成为非凸函数,不容易收敛到全局最小值。
J
(
θ
)
=
1
m
∑
i
=
1
m
cost
(
h
θ
(
x
(
i
)
)
,
y
(
i
)
)
=
−
1
m
[
∑
i
=
1
m
y
(
i
)
log
h
θ
(
x
(
i
)
)
+
(
1
−
y
(
i
)
)
log
(
1
−
h
θ
(
x
(
i
)
)
)
]
\begin{aligned} J(\theta) &=\frac{1}{m} \sum_{i=1}^{m} \operatorname{cost}\left(h_{\theta}\left(x^{(i)}\right), y^{(i)}\right) \\ &=-\frac{1}{m}\left[\sum_{i=1}^{m} y^{(i)} \log h_{\theta}\left(x^{(i)}\right)+\left(1-y^{(i)}\right) \log \left(1-h_{\theta}\left(x^{(i)}\right)\right)\right] \end{aligned}
J(θ)=m1i=1∑mcost(hθ(x(i)),y(i))=−m1[i=1∑my(i)loghθ(x(i))+(1−y(i))log(1−hθ(x(i)))]
3.3 解决多分类
逻辑回归是二分类线性分类器,若遇到多分类的情况,可以根据类别数组合多个二分类逻辑回归模型预测分类结果。
4.几个问题
- 什么是逻辑回归
逻辑回归使用sigmoid函数让输出值以正例概率的形式呈现,适合用于分类。 - 逻辑回归与SVM的异同
同:都会产生决策边界
异:逻辑回归使用了极大似然估计估计参数,SVM使用的是EM算法 - 逻辑回归与线性回归的不同
逻辑回归用于分类,而线性回归用于回归;假设函数和代价函数的形式不同。 - 为什么LR需要归一化或者取对数,为什么LR把特征离散化后效果更好
让输出值固定在[0,1]区间,方便与概率联系在一起。 - LR为什么用Sigmoid函数,这个函数有什么优缺点,为什么不用其他函数
1)直接对分类可能性进行预测
2)不需事先考虑数据分布
5.参考内容
吴恩达机器学习系列课程
有错误的请指出,欢迎评论交流。