吴恩达机器学习笔记(三)

前言

        我跳过了Octave部分的学习,转而利用这部分时间去研究python如何实现这系列课程的小作业,当作是熟悉一边python的一些常用库及一些好用的工具。关于这系列的python代码参考下面这个大佬的代码:

        吴恩达机器学习与深度学习作业目录 - Cowry - CSDN博客

        接下来开始第三周的学习,线性回归算法结束,进入下一个算法。

视频课简记

6、 逻辑回归

6.1  分类问题

        分类问题在第一周一开始举得例子也曾接触过——预测的y为离散值的情况,比如判断电子邮件是否为垃圾邮件;判断一次金融交易是否存在欺诈等等。在所有的这类问题中,尝试预测的变量y都可以用0或1来表示,,0表示负类,1表示正类。

        给出了一个例子解释为什么用线性回归算法去解决分类问题不是一个好的办法,对于分类问题,预测值y是0或1,如果使用线性回归,假设hθ(x)的输出值有可能会远大于1或远小于0,这样的结果不是我们想要的。于是,考虑造特殊函数使0=

6.2  假说表示

        前面提到过,我们希望分类器的输出值在0和1之间,而不是其他值,那么我们需要找到一个假设函数的表达式使其值域在0到1之间。现在我们开始接触新的模型,逻辑回归,其表达式为,其中g(z)=。函数图像如下:

逻辑回归函数图像

        后面要做的也是用算法确定参数的值。这个假设的意义在于输出给定输入变量为正类或负类的可能性。例如,如果对于给定的x,通过已经确定的参数计算得出,则表示有 70%的几率y为正类,相应地y为负向类的几率为1-0.7=0.3。

6.3  决策界限

        首先理解一下上面的函数到底在算些什么。

logistic regression

        很明显当时会预测;而在时预测。假设我们有个模型,并给定三个参数的值为-3,1,1带入可以画出图形:

出现边界

        可以清楚的看到一条边界区分了两种类别,所以只要确定了参数组就可以确定决策边界,之后会学到算法去确定参数组。对于奇怪的分布可以用多项式解决。假设函数越复杂,也就是说特征数不断增加,将会得到更复杂的图像和决策界限。

用二项式拟合

6.4  代价函数

        上面知道了逻辑回归算法的假说形式,现在要开始了解如何拟合模型的参数。这时候就需要定义用来优化参数的代价函数。如果我们还是使用线性回归的代价函数,非线性的会导致代价函数的图像如下所示:

机器学习概念篇:一文详解凸函数和凸优化,干货满满 - 云+社区 - 腾讯云

非凸函数

        这是一个非凸函数,这个函数直观的可以看到具有许多局部最小值,容易导致梯度下降算法失效。所以我们改变一下逻辑回归的代价函数,并画出他们的图像:

逻辑回归cost function
h(x)和cost function的关系图

        可以看出,为预测值,y为真实标签。若预测值为1且y为1,代价函数为0,毕竟预测完全正确不需要误差带来的代价。若预测值为0且y为1,预测完全错误,代价无限大。反之同理。有了这样一个代价函数后,我们就可以使用梯度下降算法去拟合参数theta了。

6.5   简化代价函数和梯度下降

        上面分段表示的代价函数其实可以简化为一行:

简化代价函数

        看起来非常直观,利用了y非0即1的特性把分段函数整合到了一起。对这个代价函数我们可以像之前一样直接使用梯度下降算法,更新规则:

参数更新

        看起来和线性回归的一模一样,但是要记住他们的假设函数h是不同的。实际上是两种完全不同的东西。但是应用在线性回归中的特征缩放的方法也同样可以让逻辑回归中的梯度下降收敛更快。

python代码实现逻辑回归代价函数计算

6.6  高级优化

        介绍了3个比梯度下降更厉害的算法去拟合参数:共轭梯度法、优化算法——拟牛顿法之BFGS算法 - null的专栏 - CSDN博客、L-BFGS。这些算法的主要缺点是比梯度下降法要复杂的多。它们的优点:

    (1)通常不需要手动的选择学习率,它可以自动选择较好的学习率;

    (2)它们的收敛速度远远快于梯度下降。

        后面介绍了怎么用Octave去使用这些高级的算法,跳过。相关python实现的代码:

        python实现共轭梯度法 - m0_37783096的博客 - CSDN博客

        优化算法——拟牛顿法之BFGS算法 - null的专栏 - CSDN博客

        优化算法——拟牛顿法之L-BFGS算法 - null的专栏 - CSDN博客

        这些算法通常在大型一点的项目上替代梯度下降算法。

6.7  多类别分类:一对多

        多元分类,三类的例子如下:

三种类别

        处理方法是将之转换为二元分类问题,从一对多转换成一对余:

三种子分类器

        对于子分类器组成的总假设,每次在我们需要做预测时,我们将所有的分类机都运行一遍,然后对每一个输入变量,都选择最高可能性的输出变量,即选择子分类器中最大的概率。

小总结

        这周学习了据说是最常用的机器学习算法——逻辑回归,想想也是,ML目前落地较多的一些项目都是分类相关的问题。理解还是不难理解,毕竟和线性回归蛮像的,就是替换了一下假设函数和代价函数,都是数学上的性质与概念。要补充的知识是课程中提到的三个更优的求参算法,难度较大。

你可能感兴趣的:(吴恩达机器学习笔记(三))