zoukankan      html  css  js  c++  java
  • 100天搞定机器学习|Day17-18 神奇的逻辑回归

    前情回顾

    机器学习100天|Day1数据预处理
    100天搞定机器学习|Day2简单线性回归分析
    100天搞定机器学习|Day3多元线性回归
    100天搞定机器学习|Day4-6 逻辑回归
    100天搞定机器学习|Day7 K-NN
    100天搞定机器学习|Day8 逻辑回归的数学原理
    100天搞定机器学习|Day9-12 支持向量机
    100天搞定机器学习|Day11 实现KNN
    100天搞定机器学习|Day13-14 SVM的实现
    100天搞定机器学习|Day15 朴素贝叶斯
    Day17,Avik-Jain开始在Coursera深度学习的专业课程,完成第1周和第2周内容以及学习课程中的逻辑回归、神经网络,并用Python实现一个神经网络。

    Day4-6我们已经学习过逻辑回归模型。

    100天搞定机器学习|Day4-6 逻辑回归

    但是当时并没有扩展性的深入探讨,毕竟这个模型十分简单易懂。其实模型之间是有关联的,比如Logistic Regression引出SVM回归模型。

    首先,我们再回归一下Logistic Regression

    逻辑回归进行分类的主要思想是:根据现有数据对分类边界线建立回归公式,以此进行分类。我们想要的函数应该是,能接受所有的输入然后预测出类别。例如,对于而分类问题,该函数应该返回0或1。

    逻辑回归假设函数如下

    image

    它对θTX作了一个函数g变换,映射至0到1的范围之内,而函数g称为sigmoid function或者logistic function,函数图像如下图所示。

    image

    逻辑回归是用来得到样本属于某个分类的概率,当输入z等于0时,Sigmoid函数值为0.5。随着z的增大,对应的函数值趋近于1;随着z的减小,对应的函数值趋近于0。

    然后,我们通过逻辑回归引出SVM

    我们发现hθ(x)只与θTX有关,θTX>0,则hθ(x)>0.5.g(z)只不过是用来映射,真实的类别决定权还在θTX。模型达到的目标无非就是让训练数据中y=1的特征θTX>>0,而是y=0的特征θTX<<0。Logistic回归就是要学习得到θ,使得正例的特征远大于0,负例的特征远小于0,强调在全部训练实例上达到这个目标。

    image

    上图中间那条线是θTX=0,logistic回顾强调所有点尽可能地远离中间那条线,学习出的结果也就中间那条线。这样我们可以得出结论,我们更应该关心靠近中间分割线的点,让他们尽可能地远离中间线,而不是在所有点上达到最优。

    然后,看看逻辑回归的代价函数

    image

    当y=1时,并将z=θTx带入其中, 损失函数图像进行少量修改就能得到SVM损失函数图像,取z=1的点作为分界点画一条和逻辑回归很接近的线性图像得到上图中玫红色的直线,称其为Cost1(z)。 y=0,类似地得到Cost0(z)。

    image

    从 逻辑回归 处修改后得到的基本公式为: image

    因为人们在使用逻辑回归和支持向量机时遵循的规则不同,有些地方还需要修改 ,在上述式子中的损失部分和正则化部分都去掉 1/m 项

    在逻辑回归中使用λ来平衡样本的损失函数项和正则化项,而在SVM中,使用C来平衡.

    最终的SVM的表达式

    image

    在这里,当最小化代价函数,获得参数 θ 时,支持向量机所做的是它来直接预测 y 的值等于 1,还是等于 0。所以学习参数 θ 就是支持向量机假设函数的形式。

    另:详细过程建议大家观看吴恩达课程原版机器学习公开课

    https://www.coursera.org/course/ml

    --------------回归正题分割线--------------

    神经网络又与逻辑回归什么关系呢?先说结论:

    逻辑回归是没有隐藏层的神经网络

    逻辑回归引出神经网络的过程,我认为李宏毅的机器学习课程最为巧妙。

    首先Logistic回归是有局限性的,对于线性不可分的数据没有办法分类。

    image

    image

    比如上面这种情况,就没有办法使用一条直线进行分类。

    image

    一个解决方法是可以通过转换特征空间方法解决异或问题,线性不可分的数据在特征转化后可以很好地被红色直线区分开。 但是不能总是通过依赖手工的方法来找到一个好的转换,这就违背了机器学习的本质。

    image

    so,Logistic回归可以看做是两层神经元,激活函数是Sigmoid函数的神经网络。左边两个Sigmoid函数作用是特征转换,右边作用是分类。

    image

    Logistic回归连接在一起就是深度学习的基本结构。

    image

  • 相关阅读:
    Java for LeetCode 229 Majority Element II
    Java for LeetCode 228 Summary Ranges
    Java for LeetCode 227 Basic Calculator II
    Java for LintCode 颜色分类
    Java for LintCode 链表插入排序
    Java for LintCode 颠倒整数
    Java for LintCode 验证二叉查找树
    Java for LeetCode 226 Invert Binary Tree
    Java for LeetCode 225 Implement Stack using Queues
    Java for LeetCode 224 Basic Calculator
  • 原文地址:https://www.cnblogs.com/jpld/p/11355258.html
Copyright © 2011-2022 走看看