机器学习吴恩达课程学习笔记 Part2——从logistics regression到正则化

机器学习笔记Part2

一、分类问题简介

在所有的二分类问题中,期待输出的 y y y都有两个值:0或者1

但是也有多分类问题的存在: y ∈ { 1 , 2 , 3 } y\in\{1,2,3\} y{1,2,3}

image-20221106213830391

Example:肿瘤预测

假设使用线性函数进行拟合,设置阈值为0.5,超过0.5认为肿瘤为阳性,低于0.5认为肿瘤为阴性。当数据呈现下面的分布时,得到的函数分类结果将会是糟糕的:

image-20221106214530034

把线性回归直接应用于分类问题通常不是一个好主意。

对于二分类问题来说,分类的结果 y = 0 y=0 y=0或者 1 1 1,但是如果采用线性回归的话,那么 h θ ( x ) h_\theta(x) hθ(x)可能是大于1或者小于0。接下来将开发一个名为logistics的回归算法,算法的输出值将一直处于0到1之间,并且不会超过1。

二、logistics回归算法

假设函数

希望 0 ≤ h θ ( x ) ≤ 1 0\leq h_\theta(x)\leq 1 0hθ(x)1,假设:
h θ ( x ) = g ( θ T x ) g ( z ) = 1 1 + e − z h_\theta(x)=g(\theta^Tx)\\ g(z)=\frac{1}{1+e^{-z}} hθ(x)=g(θTx)g(z)=1+ez1
我们将 g ( z ) g(z) g(z)称为sigmod function,与logistics function同意。这两个术语是可以互换的,都指的是函数 g ( z ) g(z) g(z)。将上述两个函数结合在一起,那么可以得到新的假设函数:
h θ ( x ) = 1 1 + e − θ T x h_\theta(x)=\frac{1}{1+e^{-{\theta^T}x}} hθ(x)=1+eθTx1
image-20221106220759211

因为 g ( z ) g(z) g(z)在0到1之间,所以新的假设函数的值也在0到1之间。下面要做的就是给 θ \theta θ选定一个值,假设会帮助我们做出预测。

模型的解释

输入x:输出为y=1的概率

image-20221106221348757

在病人的特征为x的情况下,肿瘤是阳性的概率为70%。

同时,我们也可以得到y=0的概率,因为二者概率和为1.

决策边界

决策边界的概念帮助我们理解假设函数到底在计算什么。

image-20221106221924030

在下图中,假设我们已经确定好了参数 θ 0 \theta_0 θ0 θ 1 \theta_1 θ1 θ 2 \theta_2 θ2。此处,假设 θ 0 = − 3 , θ 1 = 1 , θ 2 = 1 \theta_0=-3,\theta_1=1,\theta_2=1 θ0=3,θ1=1,θ2=1。一旦三个参数得到了确定,决策边界(decision boundary)就得到了确定。

image-20221106223133598

随着多项式变得复杂,特征变多,决策边界也会变得复杂,不再是直接使用一条线就能够分割,如下例子:

image-20221106223350924

训练集是帮助我们来拟合参数 θ \theta θ的,并不是来确定决策边界的。但是一旦有了参数 θ \theta θ,决策边界就是确定的。

logistics回归的实现

代价函数的确定
image-20221106223814612

假如我们的代价函数和之前线性回归一样,定义为: J ( θ ) = 1 m ∑ i = 1 m 1 2 ( h θ ( x ( i ) ) − y ( i ) ) 2 J(\theta)=\frac{1}{m}\sum_{i=1}^{m}\frac{1}{2}(h_\theta(x^{(i)})-y^{(i)})^2 J(θ)=m1i=1m21(hθ(x(i))y(i))2,我们令 c o s t ( h θ ( x ( i ) ) − y ( i ) ) = 1 2 ( h θ ( x ( i ) ) − y ( i ) ) 2 cost(h_\theta(x^{(i)})-y^{(i)})=\frac{1}{2}(h_\theta(x^{(i)})-y^{(i)})^2 cost(hθ(x(i))y(i))=21(hθ(x(i))y(i))2。由于假设函数为 h θ ( x ) = 1 1 + e − θ T x h_\theta(x)=\frac{1}{1+e^{-{\theta^T}x}} hθ(x)=1+eθTx1,最后代价函数会是“非凸函数”(non-convex),如果对于这样的函数使用梯度下降,将不能保证它收敛到全局最优解。

image-20221106224710007

假如我们使用一个不是平方的函数定义这个代价函数,可能就能避免结果是非凸函数。下面我们就要寻找一个代价函数,使其为凸函数,能保证梯度下降最终收敛到最优解。

image-20221106225458107 image-20221106225615372
简化代价函数

logistics回归代价函数:
J ( θ ) = 1 m ∑ i = 1 m C o s t ( h θ ( x ( i ) ) , y ( i ) ) C o s t ( h θ ( x ( i ) ) , y ( i ) ) = { − l o g ( h θ ( x ) ) i f   y = 1 − l o g ( 1 − h θ ( x ) ) i f   y = 0 Note:y=1 or 0 always J(\theta)=\frac{1}{m}\sum_{i=1}^mCost(h_{\theta}(x^{(i)}),y^{(i)})\\ Cost(h_{\theta}(x^{(i)}),y^{(i)})=\begin{cases}-log(h_\theta(x))\quad if\ y=1\\ -log(1-h_{\theta}(x))\quad if\ y=0\end{cases}\\ \text{Note:y=1 or 0 always} J(θ)=m1i=1mCost(hθ(x(i)),y(i))Cost(hθ(x(i)),y(i))={log(hθ(x))if y=1log(1hθ(x))if y=0Note:y=1 or 0 always
由于y总是不等于0就等于1,那么我们可以把上面的函数的形式进行改写,写成一个式子的形式:
 Cost  ( h θ ( x ) , y ) = − y log ⁡ ( h θ ( x ) ) − ( 1 − y ) log ⁡ ( 1 − h θ ( x ) ) \text { Cost }\left(h_\theta(x), y\right)=-y \log \left(h_\theta(x)\right)-(1-y) \log \left(1-h_\theta(x)\right)  Cost (hθ(x),y)=ylog(hθ(x))(1y)log(1hθ(x))
综上,我们可以整理得到logistics回归的代价函数:
J ( θ ) = 1 m ∑ i = 1 m C o s t ( h θ ( x ( i ) ) , y ( i ) ) = − 1 m [ ∑ i = 1 m y ( i ) log ⁡ h θ ( x ( i ) ) + ( 1 − y ( i ) ) log ⁡ ( 1 − h θ ( 1 − h θ ( x ( i ) ) ) ) ] J(\theta)=\frac{1}{m}\sum_{i=1}^mCost(h_{\theta}(x^{(i)}),y^{(i)})\\ =-\frac{1}{m}[\sum_{i=1}^my^{(i)}\log h_{\theta}(x^{(i)})+(1-y^{(i)})\log (1-h_\theta (1-h_\theta(x^{(i)})))] J(θ)=m1i=1mCost(hθ(x(i)),y(i))=m1[i=1my(i)loghθ(x(i))+(1y(i))log(1hθ(1hθ(x(i))))]
该代价函数是从极大似然法中得出的,该代价函数有个很好的属性就是该函数为convex function。

image-20221107154102209
logistics回归的参数确定

logistics回归梯度下降公式:

image-20221107171215737

公式的形式和线性回归相同,但是假设函数的形式被修改了。

  • Debugging

    对于梯度下降是否正确的检测,我们仍可以采用绘制 J ( θ ) J(\theta) J(θ)与迭代次数的图像来进行debugging。

  • 特征缩放feature scaling

    线性回归找那个的特征缩放仍然适用于logistics回归

高级优化算法

使用这些高级优化算法,能够加快logistics回归的速度,并且更加适合解决大型机器学习问题。比如有大量的特征的模型。

对于梯度下降来说,我们只需要编写出代价函数 J ( θ ) J(\theta) J(θ)和相应的偏导数 ∂ ∂ θ j J ( θ ) \frac{\partial}{\partial \theta_j}J(\theta) θjJ(θ)就可以得到梯度下降的算法。但是梯度下降并不是可以使用的唯一算法。

image-20221107172841316
其他的优化算法

其他的优化方法:

  • Gradient descent
  • Conjugate gradient
  • BFGS
  • L-BFGS

优点:

  • 不需要去选择学习率 α \alpha α
  • 通常比梯度下降收敛更快

缺点:

  • 更加复杂
其他算法的应用例子
image-20221107192736942

应用在logistics回归中:

image-20221107192921857

下面是自行编写的python梯度下降、BFGS和L-BFGS的程序:

  • 梯度下降

  • BFGS

  • L-BFGS

logistics在多分类中的应用

多分类问题的例子:

image-20221107204107388

利用一对多的分类思想,我们可以将其应用在多分类问题上。

image-20221107204127931
一对多分类原理

一对多分类原理有时也称作“一对余”方法。以下面的图为例子,我们将其转换为三个独立的二元分类问题:分别进行logistics回归,拟合出对应的分类器。

image-20221107204745647

综上,我们通过logistics回归拟合得到了3个分类器:$h_\theta^{(1)}(x), h_\theta^{(2)}(x), h_\theta^{(3)}(x) $:
h θ ( i ) ( x ) = P ( y = i ∣ x ; θ ) (i=1,2,3) h_\theta^{(i)}(x)=P(y=i|x;\theta)\tag{i=1,2,3} hθ(i)(x)=P(y=ix;θ)(i=1,2,3)
最后我们给出一个新的输入值 x x x,期望得到预测结果。我们需要做的就是将输入三个分类器中分别运行,最后从三个分类器中选择输出最大的那个,作为最后的预测结果,即:
max ⁡ i h θ ( i ) ( x ) \max_ih_\theta^{(i)}(x) imaxhθ(i)(x)

三、过拟合与正则化

过拟合现象

过拟合:曲线可能过所有的样本点,但是面临函数变量太多,太过于庞大的问题。同时代价函数的代价值可能很低,但是也导致了它无法泛化到新的样本中,无法预测新的样本。这里的“泛化”指的是一个假设模型应用到新的样本的能力。

  • 欠拟合,高偏差

  • 过拟合,高方差

    image-20221107223227021

过拟合在logistics回归中的例子:

image-20221107224536419

过拟合和欠拟合的识别

过拟合的处理

解决过拟合的处理方式:

  • 尝试减少变量的数量
    • 人工检查变量
    • Model Selection Algorithm(later)
  • 正则化 regularization
    • 保持所有的特征,但是减少梯度/ θ j \theta_j θj的值
    • 当我们有很多变量时,每个变量都可能对最终的y值有些影响,此时正则化的方式就会变得很有效

正则化

正则化的思想

Intution:

image-20221108111947996

将原来的代价函数中加入惩罚项: 1000 θ 3 2 + 1000 θ 4 2 1000\theta_3^2+1000\theta_4^2 1000θ32+1000θ42,其中1000只是一个随机举例的比较大的数,加上惩罚项后,为满足代价函数最小化,最终求得的 θ 3 \theta_3 θ3 θ 4 \theta_4 θ4都会约等于0,相当于拟合的函数为 θ 0 + θ 1 x + θ 2 x 2 \theta_0+\theta_1x+\theta_2x^2 θ0+θ1x+θ2x2,实际上是一个二次函数。这是一种更好的假设模型。

通过这个例子,我们知道了加入惩罚项带来的效果。从某种意义上来说,这就是正则化背后的思想:较小的参数值,意味着得到一个更简单的假设模型,更不容易出现过拟合的问题。

image-20221108141646853

Example:房价预测

特征: x 1 , x 2 , x 3 , . . . , x 100 x_1,x_2,x_3,...,x_{100} x1,x2,x3,...,x100

参数: θ 0 , θ 1 , . . . , θ 100 \theta_0,\theta_1,...,\theta_{100} θ0,θ1,...,θ100
J ( θ ) = 1 2 m [ ∑ i = 1 m ( h θ ( x ( i ) ) − y ( i ) ) + λ ∑ j = 1 m θ j 2 ] J(\theta)=\frac{1}{2m}[\sum_{i=1}^m(h_\theta(x^{(i)})-y^{(i)})+\lambda \sum_{j=1}^m\theta_j^2] J(θ)=2m1[i=1m(hθ(x(i))y(i))+λj=1mθj2]
image-20221108144140506

其中 λ ∑ j = 1 m θ j 2 \lambda\sum_{j=1}^m\theta_j^2 λj=1mθj2正则项 λ \lambda λ正则化参数

λ \lambda λ控制两个不同的目标之间的取舍。第一个目标,即前一项与训练的目标有关:最小化代价;第二个目标,即后一项则是使所有的参数尽可能的小,避免过拟合。

image-20221108144535434

对于正则化参数 λ \lambda λ来说,如果:

  • 设置得太大:对 θ i \theta_i θi这些参数的惩罚力度太大,所有的参数都会接近于0,相当于把假设函数的所有参数都忽略了,最后假设模型只剩下一个 θ 0 \theta_0 θ0,相当于用一条平行于x轴的直线去拟合。

    image-20221108144820765

    这样的模型偏差太大,是欠拟合的。

  • 设置得太小:惩罚不够,可能会造成过拟合(overfitting)

线性回归中的正则化

线性回归中提到了两种方法:
线性回归 { 基于梯度下降 基于正规方程 线性回归\begin{cases}基于梯度下降\\ 基于正规方程\end{cases} 线性回归{基于梯度下降基于正规方程
本节将这两种方法推广到正则化线性回归中

梯度下降的正则化

线性回归代价函数:
J ( θ ) = 1 2 m [ ∑ i = 1 m ( h θ ( x ( i ) ) − y ( i ) ) + λ ∑ j = 1 n θ j 2 ] min ⁡ J ( θ ) J(\theta)=\frac{1}{2m}[\sum_{i=1}^m(h_\theta(x^{(i)})-y^{(i)})+\lambda\sum_{j=1}^n\theta_j^2]\\ \min J(\theta) J(θ)=2m1[i=1m(hθ(x(i))y(i))+λj=1nθj2]minJ(θ)
梯度下降:
r e p e a t : { θ j : = θ j − α 1 m ∑ i = 1 m ( h θ ( x ( i ) − y ( i ) ) x j ( i ) ( j = 0 , 1 , 2 , 3 , . . . , n ) } repeat:\{ \theta_j:=\theta_j-\alpha\frac{1}{m}\sum_{i=1}^m(h_\theta(x^{(i)-y^{(i)}})x_j^{(i)}\qquad (j=0,1,2,3,...,n)\} repeat:{θj:=θjαm1i=1m(hθ(x(i)y(i))xj(i)(j=0,1,2,3,...,n)}
现将梯度下降写成下面所示形式(形式修改,内涵没变):

image-20221108145921954

考虑到加入正则化后,正则项未对 θ 0 \theta_0 θ0进行处理,所以加入正则化后的梯度下降可以表示为下面的算法形式:
Gradient descent  Repeat  { θ 0 : = θ 0 − α 1 m ∑ i = 1 m ( h θ ( x ( i ) ) − y ( i ) ) x 0 ( i ) ] θ j : = θ j − α [ 1 m ∑ i = 1 m ( h θ ( x ( i ) ) − y ( i ) ) x j ( i ) + λ m θ j ] } \begin{aligned} &\text {Gradient descent } \\ &\text {Repeat }\{ \\ &\left.\theta_0:=\theta_0-\alpha \frac{1}{m} \sum_{i=1}^m\left(h_\theta\left(x^{(i)}\right)-y^{(i)}\right) x_0^{(i)}\right] \\ & \theta_j:=\theta_j-\alpha\left[\frac{1}{m} \sum_{i=1}^m\left(h_\theta\left(x^{(i)}\right)-y^{(i)}\right) x_j^{(i)}+\frac{\lambda}{m} \theta_j\right] \\\}\end{aligned} }Gradient descent Repeat {θ0:=θ0αm1i=1m(hθ(x(i))y(i))x0(i)]θj:=θjα[m1i=1m(hθ(x(i))y(i))xj(i)+mλθj]
整理关于 θ j \theta_j θj的项,得到下面的结果:
θ j : = θ j ( 1 − α λ m ) − α 1 m ∑ i = 1 m ( h θ ( x ( i ) ) − y ( i ) ) x j ( i ) \theta_j:=\theta_j(1-\alpha\frac{\lambda}{m})-\alpha\frac{1}{m}\sum_{i=1}^m(h_\theta(x^{(i)})-y^{(i)})x_j^{(i)} θj:=θj(1αmλ)αm1i=1m(hθ(x(i))y(i))xj(i)
其中 ( 1 − α λ m ) (1-\alpha\frac{\lambda}{m}) (1αmλ)是一个比1略小的项,所以梯度下降的结果在原来梯度下降的基础上使 θ j \theta_j θj又变小了一点。

image-20221108152155007
正规方程的正则化
image-20221108155123009

矩阵不可逆:

假设 m ≤ n m\leq n mn θ = ( X T X ) − 1 X T y \theta=(X^TX)^{-1}X^Ty θ=(XTX)1XTy —— 矩阵 X T X X^TX XTX不可逆,如果使用pinv()函数,那么最后得到的解不会是最优的假设模型。但是在正则化中考虑到了这个问题:

如果 λ > 0 \lambda >0 λ>0
θ = ( X T X + λ [ 0 1 1 ⋱ 1 ] ) − 1 X T y \theta=\left(X^T X+\lambda\left[\begin{array}{lllll} 0 & & & & \\ & 1 & & & \\ & & 1 & & \\ & & & \ddots & \\ & & & & 1 \end{array}\right]\right)^{-1} X^T y θ= XTX+λ 0111 1XTy
那么矩阵: ( X T X + λ [ 0 1 1 ⋱ 1 ] ) \left(X^T X+\lambda\left[\begin{array}{lllll} 0 & & & & \\ & 1 & & & \\ & & 1 & & \\ & & & \ddots & \\ & & & & 1 \end{array}\right]\right) XTX+λ 0111 一定是可逆的,不是奇异矩阵。故,使用正则化也会解决一些出现不可逆的问题。

上述则是使用正则化解决线性回归的过程。

logistics回归中的正则化
梯度下降的正则化
image-20221108162517916

将梯度下降进行修改后可以得到:(注意,假设函数与线性回归相比发生了改变)

image-20221108162705775
高级优化算法的正则化
  • 定义costFunction():参数是向量 θ \theta θ
  • costFunction()作为参数,传入fminunc()
image-20221108164920052
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Blanche117

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值