7 逻辑回归
7.1 分类问题
在分类问题中,我们要预测的变量y是离散的值,比如说0,1。这时我们可以采用逻辑回归来处理问题。
在分类问题中,我们尝试预测的是结果是否属于某一个类(例如正确或错误)。分类问题的例子有:判断一封电子邮件是否是垃圾邮件;判断一次金融交易是否是欺诈;之前我们 也谈到了肿瘤分类问题的例子,区别一个肿瘤是恶性的还是良性的。
首先是二元的分类问题,那么结果y只有两种情况,0和1.
二元分类问题对于线性回归来说,其结果可能大于1或者小于0。但对于逻辑回归来说,其输出值永远在0和1之间。
7.2 假说表示
逻辑回归的输出变量范围始终在0和1 之间,逻辑回归模型的假设是:h𝜃(𝑥) = 𝑔(𝜃𝑇𝑋)。其中:X表示特征向量,g表示逻辑函数中的一个常用的函数:S形函数。其公式为𝑔(𝑧)=(1+e的负z次方)分之1。
S函数图像h𝜃(𝑥)的作用是,对于给定的输入变量,根据选择的参数计算输出变量=1 的可能性,即h𝜃(𝑥) = 𝑃(𝑦 = 1|𝑥; 𝜃)。
比如说h𝜃 (𝑥)等于0.6,即说明y=1的概率为0.6,y=0的概率为0.4。
7.3 判定边界
这里首先给出(下)决策边界的定义:
逻辑回归函数图像在逻辑回归中,我们认为hx大于等于0.5时,y=1,反之y=0。而在gz图像中我们可以看出来,z=0的时候gz=0.5。z>0的时候gz大于0.5,z<0的时候gz小于0.5。即,z大于0,y=1,z小于0,y=0.
即z是判断y=0还是=1的边界。
再比如说:
图1 图2在图1中凡是x1+x2的值高于中间的线的时候,都认为y=1,反之认为y=0。
在图二中这条边界线则变成了一个圆。
也就是说,在不同情况下的边界线是不相同的,那么就需要不同的判别式进行拟合。
7.4代价函数
承接上文,我们既然要对不同对判别式进行拟合,那么如何拟合逻辑回归模型的参数𝜃呢?这里又需要和线性回归一样,定义代价函数。
对于线性回归,我们定义的代价函数是所有模型误差的平方和。但是对与逻辑回归的hx来说,如果同样用这样的代价函数,那么我们得到的代价函数将是一个非凸(non-convex)函数。
非凸与凸那么代价函数就存在许多局部最小值,影响梯度下降算法寻找全局最小值。
因此我们重新定义逻辑回归的代价函数:
代价函数 cost函数可以得出hx与cost的关系:
cost与hx从图中图像可以得知,当y=1的时候,如果hx等于1,则代价为0,如果hx小于1,则hx越小于1,代价就越大。如果hx等于0,则代价无限大。同理y=0的时候也是如此。
将构造的cost简化如下:
简化后的cost得到代价函数之后就可以用梯度下降算法来求得使代价函数最小的参数了。
具体算法为:
梯度下降具体做法虽然凸性分析我们没学过,但是视频中证明了我们选的代价函数会造成一个凸优化问题,代价函数会是一个凸函数,且没有局部最优值。
注:特征缩放依旧在逻辑回归的梯度下降里必要!
一些梯度下降算法之外的选择: 除了梯度下降算法以外,还有一些常被用来令代价函数最小的算法,这些算法更加复杂和优越,而且通常不需要人工选择学习率,通常比梯度下降算法要更加快速。这些算法有:共轭梯度(Conjugate Gradient),局部优化法(Broydenfletcher goldfarb shann,BFGS)和有限内存局部优化法(LBFGS) ,fminunc 是 matlab 和 octave中都带的一个最小值优化函数,使用时我们需要提供代价函数和每个参数的求导。
7.5 简化的成本函数和梯度下降
首先这是我们对代价函数的最初的定义:
逻辑回归的代价函数化简合并之后可得:
化简后的cost根据这个函数,我们用梯度下降来找他的最小值时对应的参数。
通过梯度下降,反复更新每个参数
求导后可得:
计算后可得:
需要注意的是,尽管这个更新规则和我们在线性回归上梯度下降用的类似,但是线性回归和逻辑回归并不是一个算法。因为其hx定义不同:对于线性回归,hx为h𝜃(𝑥)=𝜃𝑇𝑋=𝜃0𝑥0 +𝜃1𝑥1 +𝜃2𝑥2+...+𝜃𝑛𝑥𝑛。而对于逻辑回归:hx=(1+e的-𝜃𝑇𝑋的次方)分之一
因此,即使更新参数的规则看起来基本相同,但由于假设的定义发生了变化,所以逻辑 函数的梯度下降,跟线性回归的梯度下降实际上是两个完全不同的东西。
当使用梯度下降法来实现逻辑回归时,我们有这些不同的参数𝜃,就是𝜃0 𝜃1 𝜃2 一直到𝜃𝑛,我们需要用这个表达式来更新这些参数。我们还可以使用 for 循环来更新这些参数值。
注意,我之前强调过,特征缩放的方法,也适用于逻辑回归。如果你的特征范围差距很大的话,那么应用特征缩放的方法,同样也可以让逻辑回归中,梯度下降收敛更快。
网友评论