2019独角兽企业重金招聘Python工程师标准>>>

今天,我们介绍的机器学习算法叫逻辑回归。它英语名称是Logistic Regression,简称LR.

跟之前一样,介绍这个算法之前先举一个案例。然后,看一下,如何算法去解决案例中的问题。

这里,我们就直接使用“K临近算法”那一节课用到的案例。我再把案例简述一下:某公司开发了一款游戏,并且得到一些用户的数据。如下所示:

图中每一个图形表示一个用户。横坐标是用户年龄,纵坐标是用户每天使用手机的时长。红色表示该用户喜欢这款游戏,蓝色表示该用户不喜欢这款游戏。现在有个新用户,用绿色所示。这家公司想知道:这个新用户是否喜欢这款游戏?

在K临近法里,我们是找到新用户的几个邻居,然后比较邻居中哪种颜色的人多。根据物以类聚的原则,这个新用户跟大多数邻居的偏好应该是一致的,从而判断他是否喜欢这款游戏。

但是,K临近存在一个问题是,就是计算量特别大。对于每一个新用户,我们都需要计算他自己到所有人的距离,然后把距离从小到大进行排序,最后的到它的K个邻居。

假如有10000个老用户,然后用k临近法预测10000个新用户的类型。那总共需要计算10000 x 10000 = 100000000次,计算量大,消耗资源多。

而今天我们介绍的逻辑回归算法,则换了一种思路。它先从老用户中找到某种规律,然后直接利用这个规律判断新用户是那种类型的。

接下来,我们来看一下逻辑回归是怎么做。

对于这个案例,我们先画一条线把已有的用户分到两边。

这条线是随便画的。但我们发现,线上方的图形大部分是红色的,线下面的图形大部分是蓝色的。于是,我们就会得出一个初步的规律:“线上方的用户大都倾向于喜欢这款游戏,线下方的用户大都倾向于不喜欢这款游戏”。如果新用户在线的上方,我们就可以判断他很可能也喜欢这款游戏,也就是应该为红色。如果新用户在线的下方,他很可能不喜欢这款游戏,就应该是蓝色。

但是,我怎么知道这条线是不是一条好的划分呢?这里有一种判定标准,叫错误率。所谓错误率,就是一条线把多少用户划到了错误的一边。错误率是一个比率,我们的案例中,因为总人数是固定的,为了方便,我们就直接用错误人数代替错误率。

就拿这条线来说。它认为上方是红色用户,下面是蓝色用户。但是,它上方有4个蓝色是被错误划分的,而下面四个红色也是被错误划分的。 因此它划错的人数是4+4=8个。

我们把这条线稍微调整一下,看看能不能做到更好一点。现在我把线往逆时针方向转动了一点。 这时,他的下方还是4个红色被错误划分,但是上方只有三个蓝色被错误划分。最终错误数变成了7个,比刚才的错误数8要好一点,说明进步了。也就是,这条线比上一条线更合理。

然后,我们可以再微调一次,再计算错误率。再微调,再计算。这样不断进行下去。微调的过程中,如果哪一次的错误率变高了,我们就放弃那次结果。如果错误率降低了,我们就记下来。一直到错误率降到最低为止。我们就找到了一条最优的划分线。

假如图中这个是最优的线,它的左上侧有三个蓝色被划错;右下侧有2个红色被划错。合计5个。

我们就拿这条线作为标准,去预测新用户。 如下图:

本案例里,我们发现,绿色的新用户在线的左上侧,于是我们判断,这个用户应该是红色。也就是说,他可能喜欢这款游戏,这家公司应该向他推广这款游戏。

在逻辑回归算法里,微调和计算错误率都是自动进行的。而且,微调的方向也不是随机的,它是由一个叫“梯度下降”的方法控制着,这个方法可以保证每次微调都是向“正确”的方向调整。只要把数据给它,它就能自动调整,一直调到最优,程序才停下来。这就是逻辑回归的原理。

实际上,我们不一定非要用直线来划分,用曲线也是可以的,而且效果可能会更好。

比如改为这样的曲线,错误数就会降到4,这比刚才到使用直线的最优值5还要低。也就是说,这个分类效果更好。

曲线也是回归出来的。初始的时候,随机画一条曲线,然后慢慢调整曲线的位置、各个拐角的弯曲度,等等,一直调整到最终这个样子。

我们把这个过程称之为“训练”。“训练”是人工智能领域里面常用的一个词语。比如,打败人类围棋冠军的AlphaGo就是训练出来的;图像识别、语音识别、自动驾驶等等,里面用到的模型也都是训练出来的。

训练这个词,是借鉴过来的。人工智能出现之前,训练这个词用的最多的地方有可能是马戏团。比如,马戏团让猴子骑自行车表演,是需要先对这只猴子进行训练的。猴子最初是不会骑车的,骑上去就倒了。不过,让它多骑几次,就会有一点点进步。它每次进步一点,训练师就给他一点奖励,比如喂它一点食物,抚摸它几下。如果骑的不好,比如摔倒了,训练师就惩罚它,比如对它大吼,甚至打它。这样,即使猴子听不懂人类的语言,人与猴之间仅仅通过奖励和惩罚的机制,就能教会猴子骑自行车。

人工智能里的算法也是这样的,工程师通过奖励和惩罚计算机程序来训练模型。

那怎么奖励计算机程序呢?其实很简单。就拿我们的逻辑回归来说,程序不断调整划分线的过程,实际上是在不断调整表达那条线的参数。如果某一次参数的调整,使得划分的错误率变低,说明调整的好,我们就把这次调整的参数保留下来,“保留”就是对程序对奖励。如果这次调整使得错误率变高,就把他抛弃掉,“抛弃”就是对计算机对惩罚。这样,留到最后的参数就是最好的参数,最后的曲线,就是最优的曲线。

实际做这件事情的是一个叫损失函数的东西,它类似训练猴子中的,用于判断猴子做的“好”还是“不好”这样的机制,并且对“好”和“不好”进行量化。如果损失函数做的好,我们就能训练出一个更好的模型。

跟猴子一样,计算机也听不懂人类的语言,但是我们只要通过奖励和惩罚它,就能训练出一个好的模型。

好了,今天我们介绍了逻辑回归算法,并且用它对新用户进行了预测。

最后,我给大家留一个思考题。对于今天的案例,这里有一个新的划分曲线,它的错误数只有3,比刚才那条曲线错误数为更低,你认为这是不是一种更好的划分方式呢?如果想到了答案,就留在评论中。

相关文章:

人工智能算法通俗讲解系列(一):K临近法

人工智能算法通俗讲解系列(二):逻辑回归

人工智能算法通俗讲解系列(三):决策树

转载于:https://my.oschina.net/stanleysun/blog/1662237

人工智能算法通俗讲解系列(二):逻辑回归相关推荐

  1. 二维小波变换_小波变换完美通俗讲解系列之 (一)

    声明:该篇文章转自csdn,原始博主已经找不到了,在这里给出转载博主地址,如有侵权,请私信我删除. https://blog.csdn.net/liusandian/article/details/5 ...

  2. ML机器学习算法(一): 基于逻辑回归的分类预测

    机器学习算法(一): 基于逻辑回归的分类预测 1 逻辑回归的介绍和应用 1.1 逻辑回归的介绍 逻辑回归(Logistic regression,简称LR)虽然其中带有"回归"两个 ...

  3. 【机器学习算法笔记系列】逻辑回归(LR)算法详解和实战

    逻辑回归(LR)算法概述 逻辑回归(Logistic Regression)是用于处理因变量为分类变量的回归问题,常见的是二分类或二项分布问题,也可以处理多分类问题,它实际上是属于一种分类方法. 逻辑 ...

  4. 【机器学习经典算法源码分析系列】-- 逻辑回归

    1.逻辑回归(Logistic Regression)又常被成为"逻辑斯蒂回归",实质上是一个二元分类问题. 逻辑回归代价函数: 代价函数导数: Matlab实现: 采用matla ...

  5. 《人工智能》机器学习 - 第5章 逻辑回归(二 二元逻辑回归实战)

    5.2二元逻辑回归实战 5.2.1二元逻辑回归简单实例 首先看看数据吧. 随机的一些数据,这是一个二分问题的数据.先导入数据.Python代码如下. """ 函数说明:读 ...

  6. 机器学习算法与Python实践之逻辑回归(Logistic Regression)

    转载自:http://blog.csdn.net/zouxy09/article/details/20319673 机器学习算法与Python实践这个系列主要是参考<机器学习实战>这本书. ...

  7. 一文详尽系列之逻辑回归

    点击上方"Datawhale",选择"星标"公众号 第一时间获取价值内容 模型介绍 Logistic Regression 是一个非常经典的算法,其中也包含了非 ...

  8. 【算法】Logistic regression (逻辑回归) 概述

    Logistic regression (逻辑回归)是当前业界比较常用的机器学习方法,用于估计某种事物的可能性.比如某用户购买某商品的可能性,某病人患有某种疾病的可能性,以及某广告被用户点击的可能性等 ...

  9. smote算法_SMOTE过采样框架+逻辑回归模型案例

    一.SMOTE SMOTE(Synthetic Minority Oversampling Technique)是一种常用于缓解数据不均衡的算法.但是很多小伙伴表示在实际应用中有强烈的过拟合倾向.大多 ...

最新文章

  1. php实战第二十一天
  2. [Python图像处理] 四十二.Python图像锐化及边缘检测万字详解(Roberts、Prewitt、Sobel、Laplacian、Canny、LOG)
  3. 信捷伺服刚性调整_信捷電氣(603416):伺服與PLC增長將加速,口罩機解決方案帶來新增量...
  4. android关机充电流程、充电画面显示
  5. 苹果推出App Store搜索建议功能
  6. postman如何改成中文版_在 Windows 上如何用 Postman 重现 Dubbo 反序列化漏洞
  7. 写Java要用什么编译器最好?
  8. python for line in file 只能读取一遍
  9. 计算机虚拟机安装教程,VMware(虚拟机)装Win7系统详细图文教程
  10. 不用U盘,给自己的电脑重装一个win10系统
  11. 谷歌、华盛顿大学联合研究:为什么在标准数据集上刷榜有问题
  12. 应用程序错误电脑黑屏_werfault应用程序错误黑屏|Win7解决werfault.exe应用程序错误方法...
  13. 修改域名后Git拉取代码出现警告Are you sure you want to continue connecting (yes/no)
  14. upload-labs刷关记录
  15. Kafka Sql:简单使用
  16. [202101] 电感 对电路的影响
  17. 8086汇编 ASCII 表
  18. c# 调用restful json_SSM实现RESTFul风格的CURD操作
  19. 企业邮箱WebMail协助办公功能盘点
  20. PHA挖kuang什么时候开始?

热门文章

  1. 依图科技终止上市审核:冲击科创板「AI第一股」失败
  2. 日本精密减速器,到底牛在哪?
  3. 猴子会照镜子吗?科学家的这一研究意义非凡!
  4. 【周末阅读】10年内,19个关键技术将改变世界
  5. AI芯片重磅破局者,开启边缘新智元
  6. 人工智能领域的未来和挑战
  7. 肠里细菌“肚里蛔虫”:肠脑研究缘何越来越热
  8. 【科普】大脑是如何编码复杂信息的?
  9. 多国相继出台政策法规:为「自动驾驶」的「创新发展」保驾护航
  10. 全球首个Magic Leap One体验:吓到你不敢进房间