一.分类问题和逻辑回归
1.逻辑回归的提出
前面举例较多的房价问题属于监督学习中的线性回归问题,因为需要预测的变量是连续的。对于另一类问题,需要预测的变量是离散的,称为分类问题。
根据分类种类的多少,又有两类分类问题和多类分类问题之分。
例如现在有一些肿瘤大小和相应性质(0代表良性,1代表恶性)的训练数据,如下图紫色叉点。若仍以线性回归进行学习,则可以学习出如下橘色的假设函数
hθ(x)
,对于新的输入
x
,可按下列阈值分类器预测y:
hθ(x)⩾0.5,预测y=1
hθ(x)⩽0.5,预测y=0
此后的x若在竖直橘色虚线的右侧则可预测y为恶性。
但此时如果多出了一个训练数据如图中红色叉点,仍用线性回归就可能训练出如图中绿色的
hθ(x)
,假设函数改变了,用于分类的肿瘤大小的边界改变了,对于分类问题来说并不是我们希望看到的。由此可以看出线性回归不太适合分类问题,相反逻辑回归就能派上用场。
2.逻辑回归
hθ(x)
的定义
对于两类分类问题,
y=0或者1
,但之前线性回归中
hθ(x)=θTx
的定义可能使
hθ(x)
大于1或者小于0。
逻辑回归中,
0⩽hθ(x))⩽1
,怎样才能让
hθ(x)
满足上述要求呢。定义
hθ(x)=g(θTx)
其中
g(z)=11+e−z
称为
S型函数(sigmoid/logistic function)。故逻辑回归的假设函数表达式如下:
hθ(x)=11+e−θTx
因为S型函数的图像在负无穷大渐进于0而在正无穷大渐进于1,如下图,故其刚好满足了逻辑回归对
hθ(x)
的取值范围要求.
扫描二维码关注公众号,回复:
5097160 查看本文章
3.假设函数
hθ(x)
的意义
逻辑回归中
hθ(x)
代表的含义是对于给定的输入
x
,在参数
θ
确定的情况下,预测
y=1
的概率,即
hθ(x)=P(y=1|x;θ)
那么逻辑回归对于一个新的
x
又如何利用假设函数进行预测
y
呢?
4.决策边界
若hθ(x)⩾0.5(y=1的概率大于等于0.5),预测y=1
若hθ(x)<0.5(y=1的概率小于0.5),预测y=0
结合假设函数的意义,感觉这是相当合理的预测。再根据S型函数
z⩾0时,g(z)⩾0.5
的关系,得到
当θTx⩾0时,hθ(x)⩾0.5,预测y=1
当θTx<0时,hθ(x)<0.5,预测y=0
举例说明:对于有两个特征变量的两类分类问题,
hθ(x)=g(θTx)=g(θ0+θ1x1+θ2x2)
,假设经过拟合已经得到了
θ=⎡⎣⎢θ0θ1θ2⎤⎦⎥=⎡⎣⎢−311⎤⎦⎥
则可以根据
θTx
来对新的
(x1,x2)
预测
y
的取值:
若−3+x1+x2⩾0,预测y=1
若−3+x1+x2<0,预测y=0
更直观的表达就是
(x1,x2)
位于直线
x1+x2=3
的上方区域(包括直线上)时预测
y=1
,
(x1,x2)
位于直线
x1+x2=3
的下方区域时预测
y=0
。如下图所示,
x1+x2=3
这条直线就是这里的
决策边界。
上面的决策边界
x1+x2=3
属于线性决策边界,再看一个非线性决策边界的例子。假设训练数据的分布如下图所示,则可用高阶多项式进行拟合。
例如
hθ(x)=g(θTx)=g(θ0+θ1x1+θ2x2+θ3x21+θ4x22)
,并且假设经过拟合已经得到了
θ=⎡⎣⎢⎢⎢⎢⎢⎢θ0θ1θ2θ3θ4⎤⎦⎥⎥⎥⎥⎥⎥=⎡⎣⎢⎢⎢⎢⎢⎢−10011⎤⎦⎥⎥⎥⎥⎥⎥
则可以根据
θTx
来对新的
(x1,x2)
预测
y
的取值:
若−1+x21+x22⩾0,预测y=1
若−1+x21+x22<0,预测y=0
更直观的表达就是
(x1,x2)
位于圆
x21+x22=1
外部(包括圆上)时预测
y=1
,
(x1,x2)
位于圆
x21+x22=1
内部时时预测
y=0
。
实际上通过增加一些复杂的多项式特征变量可以得到更复杂的决策边界,而不仅仅是一条直线分开的两个区域。
注意:决策边界不是训练集的属性,而是假设函数和其参数
θ
的属性。这意味着即使训练数据变了,但假设函数
hθ(x)
和拟合出的参数
θ
没变,则用于预测
y
的决策边界会保持不变。
二.逻辑回归的求解
1.逻辑回归的代价函数
前面提到决策边界由假设函数和参数
θ
决定,那么参数
θ
如何求解呢。
依旧给出一些基本的符号定义:
★
m
组训练数据
(x(1),y(1)),(x(2),y(2)),⋯,(x(m),y(m))
★
n
个特征
x(i)=⎡⎣⎢⎢⎢⎢⎢⎢x(i)0x(i)1⋮x(i)n⎤⎦⎥⎥⎥⎥⎥⎥∈Rn+1
★
对于两类分类问题,
y∈{0,1}
★
hθ(x)=11+e−θTx
线性回归中代价函数:
J(θ)=12m∑i=1m(hθ(x(i))−y(i))2=1m∑i=1m12(hθ(x(i))−y(i))2
讨论逻辑回归时,我们定义单个样本的代价
Cost(hθ(x(i)),y(i))=12(hθ(x(i))−y(i))2
为了简化表达,可略去上标,即
Cost(hθ(x),y)=12(hθ(x)−y)2
如果仍然像线性回归那样定义逻辑回归的代价函数
J(θ)
,则由于
hθ(x)=11+e−θTx
,导致
J(θ)
变成非凸函数,如下图,这就可能有很多局部最小值,用梯度下降法很难保证其收敛到全局最小值。
故在逻辑回归中,需要另寻一个代价函数,使其是凸函数(单弓形),如下图,这样就可以使用梯度下降法找到全局最小值。
定义单个样本的代价
Cost(hθ(x),y)={−log(hθ(x)),−log(1−hθ(x)),若y=1若y=0
①
y=1
时,
Cost(hθ(x),y)
关于
hθ(x)
的图像如下图:
对于每个训练数据,若
y=1,hθ(x)=1
,则假设函数预测结果与事实一致,
Cost=0
;但若
hθ(x)=0
,则
P(y=1|x;θ)=0
,对此训练数据预测
y=1
的概率为
0
,而事实上
y
确实等于
1
,则通过一个很大的代价
Cost→∞
来惩罚学习算法。这看上去与我们想要的效果相同。
②
y=0
时,
Cost(hθ(x),y)
关于
hθ(x)
的图像如下图:
同理,若
y=0,而hθ(x)=1
,将通过一个很大的代价
Cost→∞
来惩罚学习算法。
因为
y
总是为
0
或
1
,为了方便进行梯度下降的推导,可以将
Cost(hθ(x),y)
写成一行的形式
Cost(hθ(x),y)=−ylog(hθ(x))−(1−y)log(1−hθ(x))
由单个样本的代价函数,最终我们得到逻辑回归总的代价函数
J(θ)=1m∑i=1mCost(hθ(x(i)),y(i))=−1m[∑i=1my(i)log(hθ(x(i)))+(1−y(i))log(1−hθ(x(i)))]
2.梯度下降法求解参数
θ
与前面线性回归相同的是,这里我们的目标仍然是
minθJ(θ)
。利用代价函数的数学表达式及
θj:=θj−α∂J(θ)∂θj
得到逻辑回归梯度下降的数学表达
重复直到收敛{
θj:=θj−α1m∑i=1m(hθ(x(i))−y(i))x(i)j
}
为
j=0,1,2,⋯,n
同时更新。
视频中这一块的公式里缺少了
1m
,看到这里很可能会有疑问,为什么明明
J(θ)
的定义都与线性回归时不同了,但梯度下降更新规则的数学表达却还是一样的?视频中并未对此作出解释,也没有给出求导过程,有幸的是有人给出了具体推导过程,跟着步骤自己推导一遍,结果确实是一样的。
需要注意的是,这只是形式上的一致,由于线性回归和逻辑回归对
hθ(x(i))
的定义不同,故两者的梯度下降还是不同的。
具体用代码实现时,可用
for
循环求解
θj
,但更推荐向量化的方法,可一次性求出所有的
θj
。
3.向量化方法实现梯度下降
对于
θj
的向量化求解,主要在于找出
θ′j=∑mi=1(hθ(x(i))−y(i))x(i)j
的向量化方法,只看这一部分的话,对每一个
i
,
(hθ(x(i))−y(i))
是一个具体的值,定义它为
ci
,则
θ′0=c1x(1)0+c2x(2)0+⋯+cmx(m)0
θ′1=c1x(1)1+c2x(2)1+⋯+cmx(m)1
⋮
θ′n=c1x(1)n+c2x(2)n+⋯+cmx(m)n
由
x(i)=⎡⎣⎢⎢⎢⎢⎢⎢x(i)0x(i)1⋮x(i)n⎤⎦⎥⎥⎥⎥⎥⎥,θ=⎡⎣⎢⎢⎢⎢θ0θ1⋮θn⎤⎦⎥⎥⎥⎥,θ′=⎡⎣⎢⎢⎢⎢⎢θ′0θ′1⋮θ′n⎤⎦⎥⎥⎥⎥⎥
故
θ=θ−α1mθ′=θ−α1m∑i=1m(hθ(x(i))−y(i))x(i)
4.逻辑回归高级优化
逻辑回归找出最优的算法除了梯度下降外,还有其他一些高级优化算法例如共轭梯度,变尺度法(BFGS),限制变尺度法(L-BFGS)等,这些高级优化算法不需人为选择学习率
α
,拥有比梯度下降更快的速度,但同时也更加复杂。
三.多类分类问题
前面所举的例子都是两类分类问题,对于待识别的种类大于两种的情况,采用一种一对多的分类方法(one-vs-all classification)。例如有下图的训练数据
待识别的种类有三种时,可以转化为3个分离的两类分类问题。在每一个两类分类问题中,把待识别的类别当作正类别,其余合为一类作为负类别。如下图
每一个类别拥有一个假设函数,故这里一共有3个假设函数
h(i)θ(x)=P(y=i|x;θ)
其中i=1,2,3。相当于给每个类别单独训练一个逻辑回归分类器,用
h(i)θ(x)
去预测
y=i
的概率。
那么多类分类当给定了新的输入数据,如何预测输出类别呢?答案是用每一个类别的
h(i)θ(x)
求出类别
i
出现的概率,选择其中概率最大的类别作为预测结果,即
y=maxih(i)θ(x)
四.过拟合(Overfitting)
在利用训练数据拟合假设函数时,可能会有以下三种情况:
①欠拟合(underfitting),也叫高偏差(high bias)
即,拟合出的假设函数在训练数据集上不能很好地反映输出和输入的关系,
hθ(x)和y
的偏差比较大,如下图(上为线性回归欠拟合,下为逻辑回归欠拟合)
②适度拟合
即,拟合出的假设函数在训练数据集上能较好的反映输出和输入的关系,
hθ(x)和y
的偏差不大,如下图(上为线性回归适度拟合,下为逻辑回归适度拟合)
③过拟合,也叫高方差(high variance)
即,由于特征变量太多,导致学习到的假设函数太过适合于训练数据集,甚至
J(θ)≈0
,如下图(上为线性回归过拟合,下为逻辑回归过拟合)
这对于训练数据集来说当然是好的,但我们的最终目的不是让假设函数完美适配训练数据,而是让它去预测新的问题。过拟合带来的问题是假设函数很精准地适配了训练数据,但是却无法泛化到新的例子,对新的输入无法很好地预测其输出。
泛化(generalize)是指一个假设模型能够应用到新样本的能力。
那么如何来避免出现过拟合呢?
前面通过画图可以大致看出是否出现过拟合,但当特征变量变得很多时,画图本身就变得很难。这里给出两种规避过拟合的方法:
★
减少特征变量的数量
我们可以人工选择要保留的特征变量;也可以使用模型选择算法让它自动舍弃一些特征变量,保留一些特征变量。
★
正则化(regularization)
即保留所有特征变量,但要减小
θj
的数量级或值。
例如在前面过拟合的图示中假设函数
hθ(x)=θ0+θ1x+θ2x2+θ3x3+θ4x4
,这时会出现过拟合;若在代价函数后添加惩罚项如下
J(θ)=12m∑i=1m(hθ(x(i))−y(i))2+1000θ23+1000θ24
则在
minθJ(θ)
时会使
θ3,θ4
非常小,假设函数虽然是四次的形式,但实际上却很接近二次函数,拟合曲线如下图桃红色曲线(上为线性回归,下为逻辑回归),既没有过拟合,又比普通的二次函数有更好的拟合效果。
五.正则化
我们使用正则化有两个目标:
①更好的拟合训练数据,使假设函数很好的适应训练集
②保持
θ
参数值较小,避免过拟合
当有很多特征时,我们并不知道哪些项是关联度较小的项,无法像上面挑出
θ3,θ4
那样提前挑出对应的
θ
参数以缩小它们。故在线性回归代价函数的表达式后添加正则化项以收缩参数
θ
,让它们更小。
J(θ)=12m[∑i=1m(hθ(x(i))−y(i))2+λ∑j=1nθ2j]
注意
j从1开始
,不惩罚
θ0,θ0
仍然可能是较大的。
λ
称为正则化参数,它控制着上述正则化两个目标间的平衡。
λ
如果太小,则相当于正则化项没起到作用,无法控制过拟合;
λ
如果太大,则除了
θ0
,其余的
θ
都会
≈0
,相当于去掉了那些项,使
hθ(x)=θ0
,毫无疑问这会得不偿失地导致欠拟合。
1.正则化在线性回归中的使用
★
带有正则化的代价函数的定义
J(θ)=12m[∑i=1m(hθ(x(i))−y(i))2+λ∑j=1nθ2j
★
带有正则化的梯度下降
重复直到收敛{
θ0:=θ0−α1m∑i=1m(hθ(x(i))−y(i))x(i)0
θj:=θj−α1m[∑i=1m(hθ(x(i))−y(i))x(i)j+λθj]
j=1,2,⋯,n
}
除了
θ0
之外,
θj
的表达式等价于
θj:=θj(1−αλm)−α1m∑i=1m(hθ(x(i))−y(i))x(i)j
其中
(1−αλm)<1
,当
α
很小,
m
很大时,相当于把
θj
压缩了一点点;后面一项
α1m∑mi=1(hθ(x(i))−y(i))x(i)j
与无正则化的线性回归梯度下降表达式中相应的项一致。
★
带正则化的正规方程法
X=⎡⎣⎢⎢⎢⎢⎢(x(1))T(x(2))T⋮(x(m))T⎤⎦⎥⎥⎥⎥⎥∈Rm∗(n+1),y=⎡⎣⎢⎢⎢⎢⎢y(1)y(2)⋮y(m)⎤⎦⎥⎥⎥⎥⎥∈Rm
θ=(XTX+λ⎡⎣⎢⎢⎢⎢⎢00⋮00100⋯0⋱⋯00⋮1⎤⎦⎥⎥⎥⎥⎥)−1XTy
其中
⎡⎣⎢⎢⎢⎢⎢00⋮00100⋯0⋱⋯00⋮1⎤⎦⎥⎥⎥⎥⎥
是一个对角线为
0,1,1,1,⋯,1
,其余全为
0
的
(n+1)∗(n+1)
维矩阵。
事实上,带有正则化的正规方程法加上
λ⎡⎣⎢⎢⎢⎢⎢00⋮00100⋯0⋱⋯00⋮1⎤⎦⎥⎥⎥⎥⎥
后,还可解决之前
XTX
不可逆的问题。
2.正则化在逻辑回归中的使用
★
带有正则化的代价函数的定义
J(θ)=−1m[∑i=1my(i)log(hθ(x(i)))+(1−y(i))log(1−hθ(x(i)))]+λ2m∑j=1nθ2j
★
带有正则化的梯度下降
重复直到收敛{
θ0:=θ0−α1m∑i=1m(hθ(x(i))−y(i))x(i)0
θj:=θj−α1m[∑i=1m(hθ(x(i))−y(i))x(i)j+λθj]
j=1,2,⋯,n
}
同理,与带有正则化的线性回归的梯度下降更新规则看上去形式一致,但实际会因为
hθ(x(i))
的定义不同而不一样。