机器学习实例

小周天 岂安科技售前顾问

主要负责名词解释

引子

笔者作为与机器学习同龄的一代,从小学时就开始了对 AI 的不断钻研,上上下下左右左右 BA 的代码敲得无比熟练。经常在与 AI 的对战中获得大胜。此刻笔者的儿子(与深度学习同龄)正跟他的爷爷奶奶(与人工智能同龄)展示如何把 AI 虐得不能自理。而此文的目的就是把我这两个小时来对机器学习的初步而又深刻的理解讲给大家。

bigsec

两个小时前,我第一次在搜索引擎中打了“机器学习”几个字。然后机器回复了以下定义给我:

机器学习(Machine Learning, ML)是一门多领域交叉学科,涉及概率论、统计学、逼近论、凸分析、算法复杂度理论等多门学科……

此刻你们应该和我一样已经失去了继续读下去的勇气。

简而言之

这么说吧,机器学习算法可以不再让你明确地给出执行步骤或判断规则,而让电脑根据输入数据自己创建规则并处理问题。

➤ 整点儿实际的:考虑下如何区分垃圾邮件?

首先是不是想到的要来个关键词过滤?通过编写一些规则来筛选判断:if 匹配到关键字去垃圾箱,else 去收件箱。我们所有的精力都会花在写这些过滤条件上。写了几百条以后感觉差不多了,可发件人又换说法了,金三胖进化成了胖三金,胖三金进化成了三月半。逼得我们不断地要对过滤条件进行更新。

bigsec

能不能有一种方法能让机器自己总结这些敏感词(特征)就像歌里唱的 “当你看着我我没有开口已被你猜透”?机器学习的有趣之处正是与此。它的玩法是这样的:

首先我们需要准备大量已经经过区分的邮件。 然后把这些区分好的邮件喂给一个现成的无需二次开发的机器学习算法。

机器学习算法可以通过识别两组邮件的区别来创建自己的规则或模型,这一阶段叫做机器训练。 当模型准备完成后,当再次输入未经区分的邮件时,机器学习算法即可按照模型的规则来自主判断区分邮件。

bigsec

在程序员的欢呼声还没停下时,我要说,然鹅,这都不算什么。 更让人惊喜的是同样这个区分邮件的机器学习算法,不只可以用来区分邮件,当你把输入的数据换成了验证码图片,它又可以被用来训练识别验证码,而你不用为此算法去多改一行代码。

监督学习

在前面区分垃圾邮件的例子中,我们给出的训练邮件是已经经过标注区分的数据,机器学习算法可以依照给定的数据和标注来进行建模而区分新的邮件。这种给定分类数据的学习方式叫做监督学习(Supervised Learning)。虽然机器学习中还包括其他如无监督学习,增强学习等分支,但监督学习是目前应用场景最广泛也是最容易理解的一个分支。其最基本的逻辑是:告诉 SL 数据 X 和输出结果 Y,让它在输入和输出中建立合理的映射关系。

bigsec

比如给出: 输入为2,2 输出为 4 输入为3,3 输出为 6 监督学习模型就可以通过分析之前的映射关系得出输入输出可能为加法运算关系,当我们再输入4,5时即可利用监督学习生成的模型输出9。 我们下面的例子中也是利用监督学习来对输出结果来进行一个预测。

实例简介-价值预测

如何为下图中的房产估价?

bigsec

一个熟练的房产中介也许看一眼就可以根据面积,位置,环境等给出一个大概的市场估价,而作为一个从未从事过此行业的你如何给出一个合理的估价呢?你去问了部门里的老司机健林。健林说我们这儿的估价一般都这么计算:

  • 不管任何类型的房子我们都设定一个底价:50000
  • 按照面积乘以单价1计算面积修正值:面积×单价1
  • 按照房间数乘以单价2计算房间修正值:房间数x单价2

最后把三部分相加得出估价。 总价=50000+(面积X单价1)+(房间数x单价2)

多亏了健林,模型有了。

于是这两个单价就成了接下去的关键,但这个难不倒你。 首先我们拿到了根据这个模型计算出的三条记录(训练数据)

bigsec

450000=50000+(3800x单价1)+(5x单价2) 293000=50000+(2200x单价1)+(4x单价2) 175000=50000+(1150x单价1)+(2x单价2)

接下去感觉就像解二元一次方程组一样简单啊。 但现实中即便是取准了房间和面积两个关键因素,房屋总价因存在其他影响而不会在图表上与上述关键因素100%正相关,从而在关系图表中表现的是一组散点而非完美的线性关系。简单的说我们需要解决的是约等于的关系。 为了解决这个问题,我们使用一种通用的计算方式——猜,猜很多次直到猜中。

第一轮 1 假设猜测单价1=10,单价2=10 得出结果 案例1=88050 (真实值 450000) 案例2=72040 (真实值 293000) 案例3=61520 (真实值 175000)

2 计算偏差值Cost Cost1= (450000-88050)+(293000-72040)+(175000-61520) 为了能避某个案例存在较大偏差我们需要对Cost1进一步优化来放大较为严重的偏差 Cost2=

bigsec

有了 Cost2 以后我们的最终目标就是通过不断的猜测让 Cost2 的值趋向于0。

而处理类似的值优化(线性回归)问题,比较常见的优化算法有 Gradient Descent(梯度下降),通过对初始输入值的不断调整迭代来让偏差值 Cost2 尽可能趋近为0,最终 Gradient Descent 算法会返回一个理想的输入值,在上面例子中最终会给出单价 1=92.1 单价 2=10001 , 而这个 Gradient Descent 算法会包含在我们下面要用到的函数库中。

应用场景

用机器学习的方法来处理类似的数值预测的场景在我们的生活中十分常见。在本文接下去的内容中我们就会通过分析计算房屋的属性来进行估值。在风控领域中当用户在网上交易或申请贷款时供应商也会通过收集用户的各种属性来按照一定模型来进行风险评估从而辅助下一步的决定。通过相同的机器学习算法还可以将用户评论作为输入从而分析用户对商品给出的是正面还是负面评价。

下期预告

在这个主题的下一期中,我们会完全围绕我们本期中提到的房屋估价的实例,来介绍如何对房屋数据进行过滤和准备,如果选取合适属性(Feature Engineering)如何通过现有数据建模。

bigsec

并且不断进行优化

bigsec

bigsec