机器学习吴恩达——第二周

编程入门 行业动态 更新时间:2024-10-27 14:24:41

<a href=https://www.elefans.com/category/jswz/34/1771242.html style=机器学习吴恩达——第二周"/>

机器学习吴恩达——第二周

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 循环来更新这些参数值。

注意,我之前强调过,特征缩放的方法,也适用于逻辑回归。如果你的特征范围差距很大的话,那么应用特征缩放的方法,同样也可以让逻辑回归中,梯度下降收敛更快。

更多推荐

机器学习吴恩达——第二周

本文发布于:2024-02-25 07:06:21,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1698189.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:机器   吴恩达

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!