前情回顾

机器学习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。

逻辑回归假设函数如下

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

逻辑回归是用来得到样本属于某个分类的概率,当输入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,强调在全部训练实例上达到这个目标。

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

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

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

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

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

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

最终的SVM的表达式

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

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

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

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

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

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

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

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

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

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

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

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

100天搞定机器学习|Day17-18 神奇的逻辑回归的更多相关文章

  1. 100天搞定机器学习|Day22 机器为什么能学习?

    前情回顾 机器学习100天|Day1数据预处理 100天搞定机器学习|Day2简单线性回归分析 100天搞定机器学习|Day3多元线性回归 100天搞定机器学习|Day4-6 逻辑回归 100天搞定机 ...

  2. 100天搞定机器学习|Day21 Beautiful Soup

    前情回顾 机器学习100天|Day1数据预处理 100天搞定机器学习|Day2简单线性回归分析 100天搞定机器学习|Day3多元线性回归 100天搞定机器学习|Day4-6 逻辑回归 100天搞定机 ...

  3. 100天搞定机器学习|Day33-34 随机森林

    前情回顾 机器学习100天|Day1数据预处理 100天搞定机器学习|Day2简单线性回归分析 100天搞定机器学习|Day3多元线性回归 100天搞定机器学习|Day4-6 逻辑回归 100天搞定机 ...

  4. 100天搞定机器学习|Day35 深度学习之神经网络的结构

    100天搞定机器学习|Day1数据预处理 100天搞定机器学习|Day2简单线性回归分析 100天搞定机器学习|Day3多元线性回归 100天搞定机器学习|Day4-6 逻辑回归 100天搞定机器学习 ...

  5. 100天搞定机器学习|day37 无公式理解反向传播算法之精髓

     100天搞定机器学习(Day1-34) 100天搞定机器学习|Day35 深度学习之神经网络的结构 100天搞定机器学习|Day36 深度学习之梯度下降算法 本篇为100天搞定机器学习之第37天,亦 ...

  6. 100天搞定机器学习|Day7 K-NN

    最近事情无比之多,换了工作.组队参加了一个比赛.和朋友搞了一些小项目,公号荒废许久.坚持是多么重要,又是多么艰难,目前事情都告一段落,我们继续100天搞定机器学习系列.想要继续做这个是因为,一方面在具 ...

  7. 100天搞定机器学习|Day11 实现KNN

    机器学习100天|Day1数据预处理 100天搞定机器学习|Day2简单线性回归分析 100天搞定机器学习|Day3多元线性回归 100天搞定机器学习|Day4-6 逻辑回归 100天搞定机器学习|D ...

  8. 100天搞定机器学习|Day8 逻辑回归的数学原理

    机器学习100天|Day1数据预处理 100天搞定机器学习|Day2简单线性回归分析 100天搞定机器学习|Day3多元线性回归 100天搞定机器学习|Day4-6 逻辑回归 100天搞定机器学习|D ...

  9. 100天搞定机器学习|Day9-12 支持向量机

    机器学习100天|Day1数据预处理 100天搞定机器学习|Day2简单线性回归分析 100天搞定机器学习|Day3多元线性回归 100天搞定机器学习|Day4-6 逻辑回归 100天搞定机器学习|D ...

随机推荐

  1. java中动态代理的使用

    代理模式是常用的java设计模式,他的特征是代理类与委托类有同样的接口,代理类主要负责为委托类预处理消息.过滤消息.把消息转发给委托类,以及事后处理消息等.代理类与委托类之间通常会存在关联关系,一个代 ...

  2. 1. Django每日一码 之原生View源码

    2019-7-4  今日源码:原生 View 1.URL中调用as_view方法 def as_view(cls, **initkwargs): """ Main ent ...

  3. springboot自动装配(2)---实现一个自定义自动装配组件

    对于springboot个人认为它就是整合了各种组件,然后提供对应的自动装配和启动器(starter),基于这个流程去实现一个定义的装配组件 还是这张图 一.创建自己的自动配置工程, spring.f ...

  4. [原创]SSH Tunnel for UDP

    SSH Tunnel for UDP UDP port forwarding is a bit more complicated. We will need to convert the packet ...

  5. 和朱晔一起复习Java并发(五):并发容器和同步器

    本节我们先会来复习一下java.util.concurrent下面的一些并发容器,然后再会来简单看一下各种同步器. ConcurrentHashMap和ConcurrentSkipListMap的性能 ...

  6. ThinkPHP 5.0 配置

    ThinkPHP 5.0 配置 目录 <!-- 系统默认的配置文件目录就是应用目录(APP_PATH), 也就是默认的application下面,并分为应用配置 (整个应用有效)和模块配置(仅针 ...

  7. HTML页面中的布局问题

    在做网站中,给整个大的框架宽度设置为100%,然后设置body的最小宽度是网站的内容部分的宽度.网站内容的宽度是固定的.

  8. Flink实战(八) - Streaming Connectors 编程

    1 概览 1.1 预定义的源和接收器 Flink内置了一些基本数据源和接收器,并且始终可用.该预定义的数据源包括文件,目录和插socket,并从集合和迭代器摄取数据.该预定义的数据接收器支持写入文件和 ...

  9. spring源码分析之配置文件名占位符的解析(一)

    一.直接写个测试例子 package com.test; import org.junit.Test; import org.springframework.context.ApplicationCo ...

  10. Linux文件系统损坏导致无法正常启动与fsck修复工具

    今天在打开自己的虚拟机学习的时候,发现在文件系统检查过程中出现以下的报错: /dev/mapper/VolGroup-lv_root:UNEXPECTED INCONSISTENCY;RUN fsck ...