吴恩达机器学习-3-逻辑回归与正则化问题
第三周主要讲解的内容包含:
- 逻辑回归
- 代价函数
- 线性回归和逻辑回归的比较
- 正则化问题
逻辑回归
分类问题
假设预测的变量y
是离散的值,需要使用逻辑回归Logistic Regression,LR
的算法,实际上它是一种分类算法
二元分类问题
将因变量dependent variable
可能属于的两个类分别称为负向类negative class
和正向类positive class
,因变量y的取值只能在0
和1
之间,其中0表示负类,1表示正类
假说表示Hypothesis Representation
分类器的输出值在0
和1
之间,因此,希望找出一个满足某个性质的假设函数,这个性质是它的预测值要在0和1之间
引入一个新的模型:逻辑回归
,该模型的输出变量范围始终在0和1之间。 逻辑回归模型的假设是: $$ h(\theta) = g(\theta^TX) $$ 其中X
代表的是特征向量g
的逻辑函数,常用的S
型函数(上图的右边,sigmoid function
)公式为 $$ g(z)= \frac{1}{1+e^{-z}} $$ Python代码实现sigmod
激活函数:
1 | import numpy as np |
$h_{\theta}(x)$作用是对于给定的输入变量,根据选择的参数计算输出变量=1的可能性,即:$h_{\theta}(x)=P(y=1|x;\theta)$
例如:对于给定的x,通过已经确定的参数计算得出$h_{\theta}(x)=0.7$,则表示有70%的几率y属于正类
决策边界decision boundary
解释逻辑回归
- 在逻辑回归中$h \geq 0.5$预测$y=1$;反之y=0
- 在激活函数$g(z)$中:
当$z \geq 0$则$g(z) \geq 0.5$
当$z < 0$则$g(z) < 0.5$
又因为 $z={\theta^{T}}x$ ,即: ${\theta^{T}}x>=0$ 时,预测 $y=1$ ;反之:${\theta^{T}}x<0$ 时,预测 $y=0$
实例demo
在下图的中实例中,参数$\theta$满足[-3,1,1]
,当$-3+x_1+x_2 \geq0$,即$x_1+x_2\geq3$时,模型预测y=1;说明此时:直线$x_1+x_2=3$就是决策边界
复杂的模型边界问题
代价函数Cost Function
如何拟合LR模型的参数$\theta$
1. 线性模型中代价函数是模型误差的平方和 :
如果直接使用线性模型中的代价函数,即误差平方和,得到的代价函数是个非凸函数,但是实际上我们期望看的是凸函数(右边)
- 重新定义逻辑回归的代价函数
将上面的两个式子进行合并:
- $h_\theta(x)$和$Cost(h_\theta(x),y)$之间的关系
根据y的不同取值来进行分别判断,同时需要注意的是:假设函数h的取值只在[0,1]之间
y=1的情形
y=0的情形
Python代码实现代价函数
利用Python
实现下面的代价函数
first
表示的是右边第一项second
表示的是右边第二项
$$ Cost(h_\theta(x), y)=-y\log(h_\theta(x))-(1-y)\log(1-h_\theta(x)) $$
1 | import numpy as np |
利用梯度下降来求解LR最小参数
1、LR中的代价函数是 :
2、最终结果:
3、具体过程
不断地迭代更新$\theta_{j}:$
如果存在n个特征,也就是$\theta=[\theta_0,\theta_1,…,\theta_n]^T$。那么就需要根据上面的式子从$0~n$来更新所有的$\theta$
线性回归 VS 逻辑回归
- 假设的定义规则发生变化
线性回归:
逻辑回归:
因此,即使更新参数的规则看起来基本相同,但由于假设的定义发生了变化,所以逻辑函数的梯度下降,跟线性回归的梯度下降实际上是两个完全不同的东西。
其他求解代价函数最小的算法
- 共轭梯度
conjugate gradient
- 局部优化法
Broyden fletcher goldfarb shann,BFGS
- 有限内存局部优化法
LBFGS
多类别分类one-vs-all
我们举一个实际中的例子来说明:
假如现在需要一个学习算法能自动地将邮件归类到不同的文件夹里,或者说可以自动地加上标签,那么需要一些不同的文件夹,或者不同的标签来完成这件事,来区分开来自工作、朋友、家人或者有关兴趣爱好的邮件,那么,就有了这样一个分类问题:其类别有4个,分别用$y=1,2,3,4$ 来代表。
正则化问题Regularization
正则化基础
正则化技术主要是为了解决过拟合的问题。过拟合指的是:对样本数据具有很好的判断能力,但是对新的数据预测能力很差。
- 第一个模型是一个线性模型,欠拟合,不能很好地适应我们的训练集
- 第三个模型是一个四次方的模型,过于强调拟合原始数据,而丢失了算法的本质:预测新数据
- 中间的模型似乎最合适
如果是多项式拟合,x
的次数越高,拟合的效果越好,但是相应的预测能力就可能变差。对于过拟合的处理:
- 丢弃一些不能正确预测的特征。可以是手工选择保留哪些特征,或者使用一些模型选择的算法,例如PCA
- 正则化。 保留所有的特征,但是减少参数的大小
magnitude
*
加入正则化参数
在模型$h_\theta(x)=\theta_0+\theta_1x_1+\theta_2x_2+\theta_3x_3+\theta_4x_4$中,主要是高次项产生的过拟合问题:
加入正则化参数后能够防止过拟合问题,其中$\lambda$是正则化参数Regularization Parameter
那么,相应的代价函数变成为:
Attention:
- 一般地,不对$\theta_0$进行惩罚;加上正则化参数实际上是对参数$\theta$进行惩罚。经过正则化处理后的模型和原模型的对比:
- 如果$\lambda$过大,所有的参数最小化,模型变成了$h_\theta(x)=\theta_0$,造成了过拟合
正则化线性回归Regularized Linear Regression
正则化线性回归的代价函数:
Attention:在线性回归中,不对$\theta_0$进行正则化:
当$j=1,2,…,n$时:
调整下变成:
正则化逻辑回归Regularized Logistic Regression
LR
问题两种优化方法:
- 梯度下降法
- 更高级优化算法
加上正则惩罚项后的代价函数为:
python代码实现
1 | import numpy as np |
通过求导,得到梯度下降算法,本质上就是对$\theta$的不断更新: