吴恩达机器学习课程-第三周

1.逻辑回归

1.1 分类问题

首先要明确,逻辑回归解决的是分类问题。比如电子邮件是否为垃圾邮件等都属于分类问题

1.1.1 二元分类

将因变量可能属于的两个类分别称为正类(用1表示)和负类(用0表示),还是使用线性回归去处理该分类问题,得到以下图像:

吴恩达机器学习课程-第三周_第1张图片

其中,当 h θ ( x ) ≥ 0.5 h_\theta(x)\ge0.5 hθ(x)0.5,预测 y = 1 y=1 y=1;当 h θ ( x ) < 0.5 h_\theta(x)\lt0.5 hθ(x)<0.5,预测 y = 0 y=0 y=0。对于上述训练集而言,分类的效果很好(前四个点实际为0,后四个点实际为1)。但是如果出现一个TumorSize很大,且实际值为1的样例,线性回归拟合后的直线如下图蓝线所示:

吴恩达机器学习课程-第三周_第2张图片

此时如果还是使用0.5作为阈值,原来被预测为 y = 1 y=1 y=1的前两个样例因为拟合直线的改变,被预测为 y = 0 y=0 y=0,造成很大的偏差。所以将线性回归运用于分类问题有时效果会很差,并且回归问题的分类结果为 y = 0 / 1 y=0/1 y=0/1,但是线性回归通常会 h θ ( x ) > 1 / h θ ( x ) < 0 h_\theta(x)>1/h_\theta(x)<0 hθ(x)>1/hθ(x)<0。下面要介绍的逻辑回归会使得 h θ ( x ) ∈ [ 0 , 1 ] h_\theta(x)\in[0,1] hθ(x)[0,1]

1.2 假说表示

为了使 h θ ( x ) ∈ [ 0 , 1 ] h_\theta(x)\in[0,1] hθ(x)[0,1],需要使用到新模型:逻辑回归(Logistic Regression,LR)。逻辑回归模型的假设是: h θ ( x ) = g ( θ T X ) h_\theta(x)=g(\theta^TX) hθ(x)=g(θTX),其中 X X X表示特征向量, g ( z ) = 1 1 + e − z g(z)=\frac{1}{1+e^{-z}} g(z)=1+ez1(即Sigmoid函数/逻辑函数,这也就是为什么要成为逻辑回归的原因):

吴恩达机器学习课程-第三周_第3张图片

知道了模型的输出范围,如何理解这个模型的输出值呢?对于给定的 X X X h θ ( x ) h_\theta(x) hθ(x)的值表示预测为 y = 1 y=1 y=1的可能性,采用数学表达式为 h θ ( x ) = P ( y = 1 ∣ x ; θ ) h_\theta(x)=P(y=1|x;\theta) hθ(x)=P(y=1x;θ)

1.3 决策边界

h θ ( x ) ≥ 0.5 h_\theta(x)\ge0.5 hθ(x)0.5,预测 y = 1 y=1 y=1;当 h θ ( x ) < 0.5 h_\theta(x)\lt0.5 hθ(x)<0.5,预测 y = 0 y=0 y=0。根据上述逻辑函数的图像,将 θ T X \theta^TX θTX代替 z z z,即满足 θ T X ≥ 0 \theta^TX\ge0 θTX0时,预测 y = 1 y=1 y=1 θ T X < 0 \theta^TX\lt0 θTX<0时,预测 y = 0 y=0 y=0。逻辑回归的这个特性可以帮助找出决策边界

假设有一个多特征模型,如下图所示:

吴恩达机器学习课程-第三周_第4张图片

其中, h θ ( x ) = g ( θ 0 + θ 1 x 1 + θ 2 x 2 ) h_\theta(x)=g(\theta_0+\theta_1x_1+\theta_2x_2) hθ(x)=g(θ0+θ1x1+θ2x2),现求出 θ = [ − 3 , 1 , 1 ] \theta=[-3,1,1] θ=[3,1,1],则当 θ T x = − 3 + x 1 + x 2 ≥ 0 \theta^Tx=-3+x_1+x_2\ge0 θTx=3+x1+x20,即 x 1 + x 2 ≥ 3 x_1+x_2\ge3 x1+x23时,模型将预测 y = 1 y=1 y=1。于是直线 x 1 + x 2 = 3 x_1+x_2=3 x1+x2=3就是模型的决策边界

注意:决策边界是函数 h θ ( x ) h_\theta(x) hθ(x)的属性,不是数据集的属性,即只要知道 θ \theta θ的值就可以绘制决策边界,不是必须画出训练集中的样本点才能绘制边界,训练集用于拟合 θ \theta θ的值

1.4 代价函数

要拟合参数 θ \theta θ,需要定义一个优化目标,该目标即为代价函数。对于线性回归模型,之前定义的代价函数是所有模型误差的平方和: 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,如果直接将 h θ ( x ) = 1 1 + e − θ T x h_\theta(x)=\frac{1}{1+e^{-\theta^Tx}} hθ(x)=1+eθTx1带入上述式子,得到的代价函数是一个非凸函数,意味着存在许多局部最小值,这会影响梯度下降寻找全局最小值:

吴恩达机器学习课程-第三周_第5张图片

于是,重新定义逻辑回归的代价函数: J ( θ ) = 1 m ∑ i = 1 m C o s t ( h θ ( x ( i ) , y ( i ) ) ) J(\theta)=\frac{1}{m}\sum_{i=1}^mCost(h_\theta(x^{(i)},y^{(i)})) J(θ)=m1i=1mCost(hθ(x(i),y(i))),其中:

在这里插入图片描述

所以, h θ ( x ) h_\theta(x) hθ(x) C o s t ( h θ ( x ) , y ) Cost(h_\theta(x),y) Cost(hθ(x),y)的关系如图所示(横坐标为 h θ ( x ) h_\theta(x) hθ(x),纵坐标为 C o s t ( h θ ( x ) , y ) Cost(h_\theta(x),y) Cost(hθ(x),y)):

吴恩达机器学习课程-第三周_第6张图片

y = 1 y=1 y=1但是 h θ ( x ) h_\theta(x) hθ(x)不为1时,误差 C o s t ( h θ ( x ) , y ) Cost(h_\theta(x),y) Cost(hθ(x),y)随着 h θ ( x ) h_\theta(x) hθ(x)变大而减小,一旦 h θ ( x ) = 1 h_\theta(x)=1 hθ(x)=1时,误差变为0

y = 0 y=0 y=0但是 h θ ( x ) h_\theta(x) hθ(x)不为0时,误差 C o s t ( h θ ( x ) , y ) Cost(h_\theta(x),y) Cost(hθ(x),y)随着 h θ ( x ) h_\theta(x) hθ(x)变大而增大,当 h θ ( x ) = 0 h_\theta(x)=0 hθ(x)=0时,误差为0

1.4.1 简化误差

上面的 C o s t ( h θ ( x ) , y ) Cost(h_\theta(x),y) Cost(hθ(x),y)需要分两种情况进行书写,看起来比较繁琐。由于 y y y的值始终 0 / 1 0/1 0/1,所以可以将两个式子合并为一个: C o s t ( h θ ( x ) , y ) = − y l o g ( h θ ( x ) ) − ( 1 − y ) l o g ( 1 − h θ ( x ) ) Cost(h_\theta(x),y)=-ylog(h_\theta(x))-(1-y)log(1-h_\theta(x)) Cost(hθ(x),y)=ylog(hθ(x))(1y)log(1hθ(x))。当 y = 1 y=1 y=1时,该式子的后一项乘积变为0;当 y = 0 y=0 y=0时,该式子的前一项乘积变为0,这和分开写成两个式子效果是一样的

1.5 梯度下降

简化误差的代价函数为 J ( θ ) = − 1 m [ ∑ i = 1 m y ( i ) l o g ( h θ ( x ( i ) ) ) + ( 1 − y ( i ) ) l o g ( 1 − h θ ( x ( i ) ) ) ] J(\theta)=-\frac{1}{m}[\sum_{i=1}^my^{(i)}log(h_\theta(x^{(i)}))+(1-y^{(i)})log(1-h_\theta(x^{(i)}))] J(θ)=m1[i=1my(i)log(hθ(x(i)))+(1y(i))log(1hθ(x(i)))]。还是使用梯度下降法,即求得 d d θ J ( θ ) = 1 m ∑ i = 1 m [ h θ ( x ( i ) ) − y ( i ) ] x j ( i ) \frac{d}{d\theta}J(\theta)=\frac{1}{m}\sum_{i=1}^m[h_\theta(x^{(i)})-y^{(i)}]x_j^{(i)} dθdJ(θ)=m1i=1m[hθ(x(i))y(i)]xj(i),具体求导过程如下:

吴恩达机器学习课程-第三周_第7张图片

​可以发现梯度和之前线性回归的一样,不过是将 h θ ( x ) h_\theta(x) hθ(x)的定义进行了更换

1.6 多分类问题

​前面学习了如何使用逻辑回归画一条直线即可完成二元分类,但是如何进行多分类?这里需要运用到一对多的分类思想

​假设存在一个训练集, y y y分为了三类,此时需要做的就是将其分为三个二元分类问题:

吴恩达机器学习课程-第三周_第8张图片

以其中一个二分类问题为例,将图中的类别1定为正类,类别2和3定为负类(这种分法产生的训练集称为伪训练集),此时得到的模型记为 h θ ( 1 ) ( x ) h_\theta^{(1)}(x) hθ(1)(x)

吴恩达机器学习课程-第三周_第9张图片

以此类推得到一系列模型记为 h θ ( i ) ( x ) = P ( y = i ∣ x ; θ ) , i ∈ ( 1 , 2 , . . . , k ) h_\theta^{(i)}(x)=P(y=i|x;\theta),i\in(1,2,...,k) hθ(i)(x)=P(y=ix;θ),i(1,2,...,k)。当需要对一个样本做预测时,需要将所有的模型都运行一次,即最终获得 max ⁡ i h θ ( i ) ( x ) \max\limits_ih_\theta^{(i)}(x) imaxhθ(i)(x)

2.正则化

2.1 过拟合

下面的回归和分类模型中,第一个模型欠拟合(具有高偏差),即没有很好的拟合训练数据;第三个模型过拟合(具有高方差),虽然很好的拟合训练集,但是丢失算法的本质,预测新的数据时可能效果不好(缺少泛化性):

吴恩达机器学习课程-第三周_第10张图片

吴恩达机器学习课程-第三周_第11张图片

那么如何解决过拟合问题?

  • 丢弃一些不能帮助正确预测的特征:
    • 手工选择保留哪些特征
    • 使用一些模型选择的算法(如PCA等)
  • 正则化:保留所有的特征,但是减少参数的大小(确保这些特征对模型预测还是存在一定影响的)

2.2 代价函数

在2.1中第三个模型之所以出现过拟合,就是由于出现了 θ 3 x 3 \theta_3x^3 θ3x3 θ 4 x 4 \theta_4x^4 θ4x4这样的高次项导致,如果可以让这些高次项的系数接近0,就可以靠近第二个模型的状态。为了减少 θ 3 \theta_3 θ3 θ 4 \theta_4 θ4的大小,需要借助到代价函数: min ⁡ θ 1 2 m [ ∑ i = 1 m ( h θ ( x ( i ) ) − y ( i ) ) 2 + 1000 θ 3 2 + 1000 θ 4 2 ] \min\limits_\theta\frac{1}{2m}[\sum_{i=1}^m(h_\theta(x^{(i)})-y^{(i)})^2+1000\theta_3^2+1000\theta_4^2] θmin2m1[i=1m(hθ(x(i))y(i))2+1000θ32+1000θ42]。为了使代价函数最小,就肯定需要选择较小的 θ 3 \theta_3 θ3 θ 4 \theta_4 θ4,让其接近于0,相当于给这两个参数加上了惩罚,换言之减少了 x 3 x_3 x3 x 4 x_4 x4对模型的影响程度

假设存在许多特征,我们并不知道需要将哪些特征需要减少影响程度,就对所有特征的参数进行惩罚,只不过通过最小化代价函数来决定对不同特征参数的惩罚力度,所以代价函数修改为 min ⁡ θ 1 2 m [ ∑ i = 1 m ( h θ ( x ( i ) ) − y ( i ) ) 2 + λ ∑ j = 1 n θ j 2 ] \min\limits_\theta\frac{1}{2m}[\sum_{i=1}^m(h_\theta(x^{(i)})-y^{(i)})^2+\lambda\sum_{j=1}^n\theta^2_j] θmin2m1[i=1m(hθ(x(i))y(i))2+λj=1nθj2],其中 λ \lambda λ为正则化参数

λ \lambda λ值过大时,相当于所有参数(除了 θ 0 \theta_0 θ0)都要接近于0,最终模型变为 h θ ( x ) = θ 0 h_\theta(x)=\theta_0 hθ(x)=θ0,会导致欠拟合,所以选择一个合适的 λ \lambda λ很重要

2.3 正则化线性回归

在2.2中代价函数发生了改变,在使用梯度下降时计算的梯度也发生了相应的改变,下面公式中由于没有对 θ 0 \theta_0 θ0进行正则化,所以单独列出:

θ 0 : = θ 0 − α 1 m ∑ i = 1 m ( h θ ( x ( i ) ) − y ( i ) ) x 0 ( i ) , j = 0 \theta_0:=\theta_0-\alpha\frac{1}{m}\sum_{i=1}^m(h_\theta(x^{(i)})-y^{(i)})x_0^{(i)},j=0 θ0:=θ0αm1i=1m(hθ(x(i))y(i))x0(i),j=0

θ j : = θ j − α [ 1 m ∑ i = 1 m ( h θ ( x ( i ) ) − y ( i ) ) x j ( i ) + λ m θ j ] = θ j ( 1 − α λ m ) − α 1 m ∑ i = 1 m ( h θ ( x ( i ) ) − y ( i ) ) x j ( i ) , j = 1 , 2 , . . n \theta_j:=\theta_j-\alpha[\frac{1}{m}\sum_{i=1}^m(h_\theta(x^{(i)})-y^{(i)})x_j^{(i)}+\frac{\lambda}{m}\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=1,2,..n θj:=θjα[m1i=1m(hθ(x(i))y(i))xj(i)+mλθj]=θj(1αmλ)αm1i=1m(hθ(x(i))y(i))xj(i),j=1,2,..n

可以观察到, θ j \theta_j θj在更新时第二项和原来的梯度更新并没有区别,只不过将第一项中的 θ j \theta_j θj乘以了一个接近但小于1的值,相当于把每个参数都缩小了一点

除了梯度下降,之前还提到使用正规方程求得模型参数,方法如下图所示:

吴恩达机器学习课程-第三周_第12张图片

2.4 正则化逻辑回归

和2.3中线性回归的参数更新公式一样,只不过将 h θ ( x ) h_\theta(x) hθ(x)的定义进行了修改

3.参考

https://www.bilibili.com/video/BV164411b7dx?p=32-42

http://www.ai-start.com/ml2014/html/week3.html

你可能感兴趣的:(机器学习,机器学习,逻辑回归,正则化,二元分类,多分类)