你绝对能懂的“机器学习”(四)
我们知道,人类在发展、成长、生活的过程中积累了很多的经验。通过定期的对这些经验进行总结,获得了一些规律,这就叫“归纳”。利用这个“归纳”出来的“规律”,对类似的情况进行决策判断,从而指导我们的行动,这就是“演绎”。
例如人类通过观察季节、农作物生长的变化,总结出历法、四季、24节气等规律来指导农业生产,这样,每到新的一年,我们就知道要春播,夏种,秋收,冬藏。当然,还有一些谚语像“朝霞不出门,晚霞行千里”,“春捂秋冻”等,也是对经验进行归纳总结出来的规律,并演绎指导我们春天要多穿衣服,秋天少穿衣服等等。用一张图表示就是:
以前提过:机器学习就是让计算机学会利用过往的经验完成指定任务。其工作原理与人类的归纳演绎过程是一致的,也就是说:
机器学习只不过是在计算机中对人类归纳演绎过程进行的模拟。
对比上面2张图,是不是一样的。对于机器学习,过往的经验就是存储下来的数据,因为有很多数据,所以称为数据集(data set),通过对这些数据进行训练(training)或者学习(learning),这两种叫法都可以,对应的是人类的“归纳总结”,然后得到一个模型(model),对应人类的是“规律”,然后对于一个新数据/新情况,通过这个模型来预测(predict)其结果,对应人类的是“演绎”。
这就是机器学习的工作原理。首先,我们需要有存储的历史数据。然后,我们对这些数据通过机器学习算法进行处理,这个处理的过程叫做训练。再然后我们通过训练得到一个模型。最后根据这个模型,我们可以输入新数据,得到预期的结果,这个过程叫做预测。以上就是机器学习的全过程。我把它称之为:
一个数据集,一个模型,两个过程
其中训练这个过程是核心所在,机器学习所有的精华和主要内容都在这个过程中。
我们举个例子说明下。假设你是一家大型互联网公司的人力资源经理,每年都要招聘大量的程序员。你手头上有历年来公司招聘的录用数据,我们假设应聘者能否录用只与笔试成绩和面试成绩这2项有关。数据如下:
序号 | 笔试成绩 | 面试成绩 | 录用与否 |
---|---|---|---|
1. | 6.0 | 5.0 | 否 |
2. | 8.0 | 4.0 | 否 |
3. | 9.0 | 2.5 | 否 |
4. | 9.0 | 7.2 | 是 |
5. | 9.5 | 9.5 | 是 |
6. | 7.0 | 7.0 | 是 |
7. | 8.5 | 3.2 | 否 |
8. | 7.0 | 6.5 | 是 |
9. | 5.4 | 8.7 | 是 |
10. | 5.7 | 7.8 | 否 |
……………… | ……………… | ……………… | ……………… |
这里有几个概念术语需要说明下。
这组记录的数据集合称为“数据集(data set)”。
数据集中每一条记录称为一个“样本(sample)”或叫“示例(instance)”。
样本中的结果信息“录用与否”称为“标记(label)”,好理解的话你可以叫它“目标结果”。
描述样本的“笔试成绩”、“面试成绩”称为“特征(feature)”或“属性(attribute)”,叫“特征”也行,叫“属性”也行,都可以。
属性(或者叫特征)的个数称为“维度(dimensionality)”,上面这个数据集就是2个维度,因为只有“笔试成绩”、“面试成绩”这2个属性。
我们把数据集用图表的形式绘制出来。如下图所示:
红色的点是未录用的数据,橙色的点是录用的数据。我们仔细观察下这些数据,发现好像有一条直线把这些数据分开了。如下图所示:
如果机器学习能找出这条直线,那么得到新的应聘者笔试成绩和面试成绩后,如果新数据落在直线左边,就可以决策不录用,如果新数据落在直线右边,就决策录用。这条能辅助决策的直线,我们称之为“决策边界”或叫“决策面”。为什么又叫“决策面”,因为三维空间中,决策边界可能是个平面,如果是更高维度的空间,决策边界可能是个超平面。
看到这,有人就会说,这还用得着机器学习啊?这个图我看一眼就能看出来这条直线。确实,这个例子很简单,人用肉眼就能判断。但是,我们还是要用到机器学习。为什么?
首先,计算机的强项在于计算和批量处理。你看,你能写出这条直线的方程吗,中学阶段我们学过直线方程为y = kx + b,那这里的k和b各是多少?你很难马上手工算出来吧。即使你能算出来,如果你需要处理5万个样本数据,决策今年的3000个应聘者的录用与否,你能手工一个个的处理吗?
其次,这个决策边界不一定是一条直线,可能是多条直线,甚至可能是曲线。更多的可能性是根本无法描述。在这个例子中,样本数据只有2个属性,笔记成绩和面试成绩,这恰好是2个数值数据,现实中样本数据可能是数值数据,也有可能是类别数据,例如这个数据集再添加应聘者的毕业院校、所学专业2个属性,有这样4个属性的样本数据的决策边界就无法直观描述了。
一般的数据维度都高于2维,甚至4维、5维……。在3维数据中看出决策边界就很难了,而4维及以上维度根本就画不出图来,生活在3维空间的我们不可能感知4维及以上的空间,也就是说你不可能感知到超平面。
所以,这也是我们需要机器学习的主要原因。让我们看看怎样找出这条直线。我们假设这个直线为y=kx+b,先随机设定参数值k=1,b=1。如下图所示:
我们将数据集中的训练样本数据与这条直线比对,发现效果很差,大部分都分错了。那么,我们调整下k,b的值。见下图,这次效果好多了,但还是差不多错了一半。
然后再调整下k,b的值。见下图,这次效果又好多了,接近最优解了。
就这样不断找下去,就可以找到这条直线了。那么问题来了,这跟不断试错有什么区别?有区别的,因为这里调整k,b的值是有方向的调整,而不是随机的调整,这其实是一个求解k,b参数最优化的问题,对于最优化问题,这本身就是一个大的领域。常用的最优化问题求解算法有梯度下降法、牛顿法、遗传算法、粒子群算法等,在机器学习中梯度下降法用的较多。需要注意的是这里的梯度下降法、遗传算法等不是我们通常说的机器学习算法,而是在大的机器学习算法过程中,用于求解像k,b这些参数的最优化问题求解算法。而逻辑回归、决策树、朴素贝叶斯、支持向量机、神经网络等,才是我们通常说的机器学习算法,这个以后在讲具体的机器学习算法时再谈。
在求解出这条直线后,也就是机器学习训练出一个模型后,那么现在,有一个应聘者的笔试成绩是6.5,面试成绩是7.2。你认为应该是录用还是不录用呢?直接判断点(6.5,7.2)在这条直线的左边还是右边就可以了。
此外,很多时候,我们需要了解和测试机器学习的效果,并评估其精确度,这就是预测精确度,一般用百分比表示。这种情况下我们通常准备2套独立的数据集,或者将一个数据集分割成2部分,例如上面的数据集,假设有5万个样本。我们采用前4万个样本进行训练。那么这4万个样本的集合我们称为“训练集”。剩下的1万个样本用于对训练出来的模型进行测试,这1万个样本的集合称为“测试集”。测试后获得的预测结果与测试集中的实际结果信息进行比对,就可以得出机器学习的精确度。例如测试集中的1万个样本预测的结果与实际结果比对,匹配一致的有9500个,不匹配的有500个,这样我们就知道训练出来的模型的大致效果了。
至于为什么要分成训练集和测试集,其实很好理解,从一些现象推导出的任何严谨结论,都需要进行验证,这也是科学方法论遵循的基础。就像大科学家爱因斯坦提出的质能方程E=MC2E=MC^2,也需要通过进行核试验来验证其正确性。
你绝对能懂的“机器学习”(四)相关推荐
- 机器学习四剑客1——Numpy
求业之精,别无他法,日专而已矣! 一.概论 1.机器学习是什么 2.机器学习做什么 3.机器学习基本概念 二.机器学习第一步:数据分析 1.Python被大量应用在数据挖掘和深度学习领域: 2.其中使 ...
- 机器学习四种调参方法总结
介绍 维基百科上说,"Hyperparameter optimization或tuning是为学习算法选择一组最优的hyperparameters的问题". 本文转载于收藏 | 机 ...
- 教程 | 一文读懂自学机器学习的误区和陷阱(附学习资料)
来源:机器学习与统计学 本文约6296字,建议阅读10分钟. 本文为你指出一些自学的误区,推荐学习资料,提供客观可行的学习表并给出进阶学习的建议. 后台回复"20190426"获取 ...
- 人人可懂的机器学习入门要点和阅读路径:学什么?怎样学?
导读:这是一篇保证你"看得下去"的文章.让你真正搞懂机器学习学什么?怎样学? 作者:莫凡 来源:华章计算机(ID:hzbook_jsj) 00 有关机器学习的三个问题和机器学习&q ...
- 人人都能看懂的机器学习!3个案例详解聚类、回归、分类算法
导读:机器是怎样学习的,都学到了什么?人类又是怎样教会机器学习的?本文通过案例给你讲清楚各类算法的原理和应用. 机器学习,一言以蔽之就是人类定义一定的计算机算法,让计算机根据输入的样本和一些人类的干预 ...
- 小白也能读懂的机器学习入门指南
点击上方"程序员江湖",选择"置顶或者星标" 你关注的就是我关心的! 这篇文章写得真的很好,忍不住转给大家. 转自:博客园,作者:计算机的潜意识 从机器学习谈起 ...
- 春节充电 | 文科生都能看懂的机器学习教程:梯度下降、线性回归、逻辑回归(附动图解释)...
来源:新智元 本文约4200字,建议阅读10+分钟. 本文浅显易懂的方式讲解机器学习,力求让没有理科背景的读者都能看懂. [ 导读 ]虽然在Coursera.MIT.UC伯克利上有很多机器学习的课程, ...
- 文科生都能看懂的机器学习教程:梯度下降、线性回归、逻辑回归
来源:新智元 本文约4200字,建议阅读10+分钟. 本文浅显易懂的方式讲解机器学习,力求让没有理科背景的读者都能看懂. [ 导读 ]虽然在Coursera.MIT.UC伯克利上有很多机器学习的课程, ...
- 彻底搞懂---三握四挥
目录 三握手 四挥手 三握手 正所谓,工欲善其事,必先利其器. 我们要想搞懂三次握手必须得先知道一些基础的东西. 我们先分析一下上图的英文都是啥东西. SYN: 代表连接请求/连接接受 ACK: 确认 ...
最新文章
- 装服务器的时候卡在复制文件,子域无法安装,卡在复制架构目录分区
- Docker镜像推送(push)到Docker Hub
- 算术基本定理证明用计算机,良序原理:算术基本定理的证明
- 用 GDB 调试Linux程序及有用技巧
- 15 张图阅尽人工智能现状
- JVM 学习四:类加载之双亲委派机制与沙箱安全机制
- 一步一步写算法(之内存)
- App Store最新审核指南(2015年3月更新版)
- windows无法格式化u盘_windows无法完成格式化怎么办
- securecrt破解版64位
- EXCEL类十字拖拽操作上千条数据的技巧
- C++实现ID3决策树(UCI DNA数据集)
- python+scrapy爬虫 + mongoodb + hadoop+hive综合项目:招聘网站数据
- Android网络加载框架Glide的使用
- 消息协议 AMQP 及MQTT ,STOMP,JMS的概念和基本理解
- 可视化案例(五)Kepler.gl绘制动态酷炫热力图
- matlab fspecial用法,Matlab 的fspecial函数用法
- 浅谈航飞重叠度,利用小工具计算大疆精灵、M300、垂起固定翼航飞重叠度——拒绝航飞空洞
- 剪映AI图文成片快速剪辑
- 基于TQ2440的busybox根文件系统制作
热门文章
- 阿里排查Java问题工具清单!
- 一个基于 Spring Boot 的项目骨架,少造轮子!
- 2021-9-下旬 数据结构-线性表-队列-java代码实现(复习用)
- Java常用类之String类练习
- java反射的优化_请问Java反射的性能为什么比直接调用慢一个数量级左右?
- scihub只能用doi查吗_同步带轮齿形加工只能用滚齿机吗?
- (JavaWeb)HttpServletResponse和HttpServletRequest
- 短小精悍的多源最短路径算法—Floyd算法
- 深究AngularJS——校验(非form表单)
- 计算机教室怎样自动批量修改ip,批量设置IP地址和计算机名