在说逻辑回归前,还是得提一提他的兄弟,线性回归。在某些地方,逻辑回归算法和线性回归算法是类似的。但它和线性回归最大的不同在于,逻辑回归是作用是分类的。

还记得之前说的吗,线性回归其实就是求出一条拟合空间中所有点的线。逻辑回归的本质其实也和线性回归一样,但它加了一个步骤,逻辑回归使用sigmoid函数转换线性回归的输出以返回概率值,然后可以将概率值映射到两个或更多个离散类。

如果给出学生的成绩,比较线性回归和逻辑回归的不同如下:

  • 线性回归可以帮助我们以0-100的等级预测学生的测试分数。线性回归预测是连续的(某个范围内的数字)。
  • Logistic回归可以帮助预测学生是否通过。逻辑回归预测是离散的(仅允许特定值或类别)。我们还可以查看模型分类背后的概率值。

一.从回归到分类的核心 --Sigmoid Function

之前介绍线性回归的时候,它的函数是这样样子的:

h(x)=θ0 + θ1 * x1 + θ2 * x2 + θ3 * x3 ...

但这样的函数是没办法进行分类的工作的,所以我们要借助一下其他函数,那就是Sigmoid Function。

我们先来看看这个Sigmoid Function长什么样,Sigmoid Function的数学公式是这样子的:

如果表示在平面坐标轴上呢,那它长这个样子。

这个Sigmoid Function可以将线性的值,映射到[0-1]这个范围中。如果映射结果小于0.5,则认为是负的样本,如果是大于0.5,则认为是正的样本。

比方说要对垃圾邮箱进行分类,分垃圾邮箱和正常邮箱。当这个Sigmoid Function的计算出来后,小于0.5,则认为是垃圾邮箱,大于0.5则是非垃圾邮箱。

原先线性回归的计算公式是这样的:

那么将这个z函数代入到Sigmoid Function中,OK,现在我们就有了一个逻辑回归的函数了。

二.代价函数Cost Function

和线性回归一样,逻辑回归也有代价函数。并且都是通过最小化Cost Function来求得最终解的。

我们先来看单个点的情况,

这个代价函数呢,叫做交叉熵,其中y(i)指的是预测的结果,而hθ(xi)指的是xi这个点原本的值。

那么它具体是什么意思呢,为什么叫做交叉熵?我们举两个极端的例子看看就明白了:

1.xi原始值hθ=1,预测结果,yi=1的情况

这个时候,代价函数的加号右边会被消掉,因为右边(1-y(i))是0,左边部分呢,因为hθ(xi)=1,故而log(1)=0。

y(i)log(hθ(xi)) = 1 * log(0) = 0

也就是说,若xi原始值是1,当预测值y=1的时候,代价函数是0的。这个也比较好理解,代价函数为0就是说预测结果和原始结果完全一致的,没有半点出差错。

2.计算结果,yi=0,原始值hθ=0

这次的结果就和上面的反过来了,因为yi=0,所以左边部分全军覆没,来看右边,

(1-yi) * log(1-hθ(xi)) = 1 * log(0) = 0

因为1-hθ(xi),最终结果还是等于0。

也就是说,这个损失函数,只要原始值与预测结果越相符,损失函数就越大,反之,损失函数就会越小。

以上说的只是一个点的情况,实际的代价函数,是要计算所有点的损失函数的均值,如下所示:

三.梯度下降

和线性回归一样,逻辑回归的解法也可以通过梯度下降来进行求解。梯度下降的目的,是为了最小化代价函数Cost function。

要求使用梯度下降,需要先求解偏导数,以下是求导数的一个具体过程:

而梯度下降的计算方法也和线性回归的计算方法是一样的。只是其中的代价函数,换成了逻辑回归的代价函数。

其中,α右边部分对应我们上面对代价函数求偏导的结果。而α是用来控制训练速率的,这个在线性回归那里已经有说到,这里就不再介绍了。

最终就是对θj不断迭代,直到损失函数降到最小,那就可以求出我们要的θ值了。

四.小结

OK,今天介绍了线性回归和逻辑回归的区别,同样都是回归分析,逻辑回归能完成分类任何的核心,就算使用了Sigmoid Function。

这里留一个小问题,上面所述的逻辑回归,通常是仅仅能够进行二分类,那有没有办法来让逻辑回归实现多分类呢?

下一次将阐述用逻辑回归进行多分类,以及正则化相关内容,并介绍sklearn的逻辑回归参数和用法!!

以上~~


推荐阅读:
通俗得说线性回归算法(一)线性回归初步介绍
通俗得说线性回归算法(二)线性回归初步介绍
Scala 函数式编程指南(一) 函数式思想介绍
通俗地说决策树算法(二)实例解析
大数据存储的进化史 --从 RAID 到 Hadoop Hdfs
C,java,Python,这些名字背后的江湖!

通俗地说逻辑回归【Logistic regression】算法(一)的更多相关文章

  1. 机器学习总结之逻辑回归Logistic Regression

    机器学习总结之逻辑回归Logistic Regression 逻辑回归logistic regression,虽然名字是回归,但是实际上它是处理分类问题的算法.简单的说回归问题和分类问题如下: 回归问 ...

  2. Coursera公开课笔记: 斯坦福大学机器学习第六课“逻辑回归(Logistic Regression)” 清晰讲解logistic-good!!!!!!

    原文:http://52opencourse.com/125/coursera%E5%85%AC%E5%BC%80%E8%AF%BE%E7%AC%94%E8%AE%B0-%E6%96%AF%E5%9D ...

  3. 机器学习方法(五):逻辑回归Logistic Regression,Softmax Regression

    欢迎转载,转载请注明:本文出自Bin的专栏blog.csdn.net/xbinworld. 技术交流QQ群:433250724,欢迎对算法.技术.应用感兴趣的同学加入. 前面介绍过线性回归的基本知识, ...

  4. 机器学习 (三) 逻辑回归 Logistic Regression

    文章内容均来自斯坦福大学的Andrew Ng教授讲解的Machine Learning课程,本文是针对该课程的个人学习笔记,如有疏漏,请以原课程所讲述内容为准.感谢博主Rachel Zhang 的个人 ...

  5. ML 逻辑回归 Logistic Regression

    逻辑回归 Logistic Regression 1 分类 Classification 首先我们来看看使用线性回归来解决分类会出现的问题.下图中,我们加入了一个训练集,产生的新的假设函数使得我们进行 ...

  6. 逻辑回归(Logistic Regression)详解,公式推导及代码实现

    逻辑回归(Logistic Regression) 什么是逻辑回归: 逻辑回归(Logistic Regression)是一种基于概率的模式识别算法,虽然名字中带"回归",但实际上 ...

  7. 机器学习(四)--------逻辑回归(Logistic Regression)

    逻辑回归(Logistic Regression) 线性回归用来预测,逻辑回归用来分类. 线性回归是拟合函数,逻辑回归是预测函数 逻辑回归就是分类. 分类问题用线性方程是不行的   线性方程拟合的是连 ...

  8. 机器学习入门11 - 逻辑回归 (Logistic Regression)

    原文链接:https://developers.google.com/machine-learning/crash-course/logistic-regression/ 逻辑回归会生成一个介于 0 ...

  9. [笔记]机器学习(Machine Learning) - 02.逻辑回归(Logistic Regression)

    逻辑回归算法是分类算法,虽然这个算法的名字中出现了"回归",但逻辑回归算法实际上是一种分类算法,我们将它作为分类算法使用.. 分类问题:对于每个样本,判断它属于N个类中的那个类或哪 ...

  10. 逻辑回归 Logistic Regression

    逻辑回归(Logistic Regression)是广义线性回归的一种.逻辑回归是用来做分类任务的常用算法.分类任务的目标是找一个函数,把观测值匹配到相关的类和标签上.比如一个人有没有病,又因为噪声的 ...

随机推荐

  1. 使用.NET Core中创建Windows服务(一) - 使用官方推荐方式

    原文:Creating Windows Services In .NET Core – Part 1 – The "Microsoft" Way 作者:Dotnet Core Tu ...

  2. Thinkphp5.0第四篇

    删除数据 当前模型删除 $user=UserModel::get(1); if($user->delete()){return '删除成功';} else{return '删除失败';} 根据主 ...

  3. Siege 网站性能压力测试工具使用入门

    Siege is an open source regression test and benchmark utility. It can stress test a single URL with ...

  4. nginx(tengine)访问日志分片

    说明 nginx日志按天分片是运维的基本要求,不仅可以减小文件大小,方便检索关键数据,也可以定时删除过期的日志.可是nginx和tengine默认并不支持文件分片,因此需要额外处理. 另外,日志分片需 ...

  5. C# 创建自定义配置节点1

    转载:http://www.educity.cn/develop/495003.html 在.Net应用程序中我们经常看到VS为我们生成的项目工程中都会含有app.config或者web.connfi ...

  6. vim 的初始配置

    我是一个vim爱好者,项目开发过程中,大量地使用vim作为编辑工具. 今天刚开箱了一台新的 CentOS7, 现将Vim安装后的一些基本配置作一下记录. 使用配置模板 vim安装完之后,大多数配置都是 ...

  7. 阿里云学生服务器+WordPress搭建个人博客

    搭建过程: 第一步:首先你需要一台阿里云服务器ECS,如果你是学生,可以享受学生价9.5元/月 (阿里云翼计划:https://promotion.aliyun.com/ntms/act/campus ...

  8. 二、docker 镜像容器常用操作(让我们用docker 溜得飞起)

    前言 上篇讲了我们如何安装docker,现在该我们一展拳脚的时候了.接下来让我们一起学习一下docker常见的操作,让我们能够会使用 docker. 基本概念 在讲使用之前,还是先将一下docker ...

  9. 前端开发 JavaScript 干货知识点汇总

    很多初学的朋友经常问我,前端JavaScript都需要学习哪些东西呀?哪些是JavaScript的重点知识啊? 其实做前端开发工程师,所有的知识点都是我们学习必备的东西,只有扎实的技术基础才是高薪的关 ...

  10. Spring Boot2 系列教程(十五)定义系统启动任务的两种方式

    在 Servlet/Jsp 项目中,如果涉及到系统任务,例如在项目启动阶段要做一些数据初始化操作,这些操作有一个共同的特点,只在项目启动时进行,以后都不再执行,这里,容易想到web基础中的三大组件( ...