机器学习入门系列 - 概念篇(1)

1. 什么是人工智能?
我们先说说什么是人工智能,毕竟我们想要测试一个东西就要先理解它么。 不严谨的说,现阶段的人工智能是:大数据+机器学习。 那为什么是不严谨的说呢,因为人工智能的范畴还挺大的,机器学习是其中的一个子集, 现在大部分人把机器学习和人工智能划等号,因为我们目前在人工智能领域产生了价值的项目,主要是机器学习带来的。 我们又说这是现阶段对人工智能的定义, 因为人工智能还是在迅猛发展的,上个世纪70年代的时候人们对人工智能的定义还是专家系统呢, 所以人类的对人工智能的理解也是不停的在进步的,说不定过个几十年人工智能的实现方式就不是机器学习了。

现阶段大致层次图

我们举一个信用卡反欺诈的例子, 以前的时候在银行里有一群业务专家, 他们的工作就是根据自己的知识和经验向系统中输入一些规则。例如某一张卡在一个城市有了一笔交易,之后1小时内在另一个城市又有了一笔交易。这些专家根据以前的经验判断这种情况是有盗刷的风险的。他们在系统中输入了1千多条这样的规则,组成了一个专家系统。 这个专家系统是建立在人类对过往的数据所总结出的经验下建立的。 我们可以把它就看成一个大脑,我们业务是受这个大脑控制的。但这个大脑是有极限的,我们要知道这种规则从0条建立到1条是很容易的,但是从几千条扩展到几千零一条是很难的。 因为你要保证新的规则有效,要保证它不会跟之前所有的规则冲突,所这很难,因为人的分析能力毕竟是有限的。 我听说过的最大的专家系统是百度凤巢的,好像是在10年的时候吧,广告系统里有1W条专家规则。但这是极限了,它们已经没办法往里再添加了。 所以说这是人脑的一个极限。 后来呢大家引入机器学习, 给机器学习算法中灌入大量的历史数据进行训练, 它跟人类行为很像的一点就是它可以从历史数据中找到规律,而且它的分析能力更强。 以前人类做分析的时候,可能说在反欺诈的例子里,一个小时之内的跨城市交易记录是一个规则,但如果机器学习来做的话,它可能划分的更细,例如10分钟之内有个权重,10分钟到20分钟有个权重,1小时10分钟也有个权重。 也就是说它把这些时间段拆的更细。 也可以跟其他的规则组合,例如虽然我是1小时内的交易记录跨越城市了,但是我再哪个城市发生了这类情况也有个权重,发生的时间也有个权重,交易数额也有权重。也就是说机器学习能帮助我们找个更多更细隐藏的更深的规则。 以前银行的专家系统有1000多条规则,引入了机器学习后我们生成了8000W条规则。 百度在引入机器学习后从1w条规则扩展到了几十亿还是几百亿条(我记不清楚了)。 所以当时百度广告推荐的利润很轻易的提升了4倍。 我们可以把专家系统看成是一个比较小的大脑,而机器学习是更大的大脑。 所以说我们叫它机器学习,是因为它像人类一样可以从历史中库刻画出规律,只不过它比人类的分析能力更强。 所以在网上有个段子么,说机器学习就是学出来海量的if else, 其实想想也有道理,套路都是if 命中了这条规则,就怎么么样的,else if 命中了那个规则,就怎么怎么样的。 人类的分析能力有限么,专家系统里人类写1千,1w个if else就到头了。 但是机器学习给你整出来几百个亿的if else出来。 我们就可以把机器学习想的low一点么,不要把它想的那么神秘。

2. 什么是模型?
那接下来我们就聊聊什么是模型了。 模型这个词大家肯定都听过,但它到底是个什么东西相信很多人都是懵的,因为它太抽象了,好像很多领域里都有这个词, 我刚入职的时候一直都在问模型是什么。 都说机器学习算法训练出来的是模型,我们要针对这个模型做测试,但这玩意到底是个什么东西。 我们继续不严谨的说,模型就是个数据库,里面存储的就是我们之前说到的规则和这些规则对应的权重。 我们应用模型的时候怎么做? 其实就是拿着新数据到模型这个数据库里找规则,把匹配的所有规则和他们的权重做乘法并累加在一起,就是我们最后得到的预测值。 我们外围调用的系统都是根据这个预测值展开的。假如说我要给客户做定价,那把客户的数据传过来,看看这个数据符合哪些规则,然后根据规则的权重算出一个预测的价格回来。

3. LR直观的解释
刚才讲的东西偏业务,接下来我讲讲更偏原理的东西,以帮助我们理解以后的测试场景, 大家不懂担心听不懂, 我还是尽量说人话。 我们讲讲逻辑回归的原理 ,为什么讲逻辑回归呢,因为它是最简单但也是最常用最重要的机器学习算法。 从逻辑回归可以扩展出很多的应用,使用不同的激活函数它既可以做分类问题,也可以做回归问题, 现在非常火的深度学习是什么? 其实就是个多隐藏层神经网络, 那神经网络呢?神经网络中的隐藏层每一个神经元都是一个逻辑回归,所以我们说逻辑回归是最重要的一个算法。接下来我们看看它的函数。
注:逻辑回归 - 百度百科的解释

房价模拟预测概念图

作者注:大学计算机科班出身的应该对这种图不陌生,就是收集一些特征点,然后回归模拟出一个2维的函数图,然后我们将比如月份,地点之类的参数输入进去,就能得到大致的房价预测值。对,就是这样的一种概念!

假设图中一次函数公式是:y=wx+b, 其中y是预测值,x是特征(也就是我们的规则),w是特征的权重,b是截距。我们说要预测房价改怎么做呢? 其实它就是求一条直线,让我们根据这条直线算出的预测值跟所有真实的这些点的误差最小。所以我们说它在学习什么? 学习的主要就是w和b的值。我们要求一个w和b,让预测值跟真实值的误差最小。 所以在模型训练的过程中,我们会根据某种规则不停的改变w和b的值。 我们训练多少轮,就会改变多少次w和b的值。直到找到最合适的w和b的值,让预测值和真实值误差最小。这就是它整个的训练过程。上面说我们只有一个特征,如果有n个特征呢? 公式就变成了y= w1x1+w2x2+w3x3......wnx* +b, 我们刚才说模型是个数据库,里面存储的是所有的特征和他们的权重,在这里大家就知道了存放的就是x和对应的w, 当有新数据来做预测的时候就是用这个公式来计算预测值的. 当然这是一个线性回归的例子,我们把做这种预测某一个值的算法叫做回归算法。 那我们如何做分类问题呢,假如说人脸识别,要判断我和一张照片是不是一个人,它应该告诉我两个值,0或者1. 来告诉我这条数据是正例,还是负例。 所以我们引入了一个叫sigmod的激活函数,大家不用知道它的原理,只需要知道它能把我们的预测值转换成0~1中的数值。 假如说把我和照片的信息输入到模型中,它返回一个数值是0.8. 意思是这个人有80%的概率跟照片是同一个人。 所以通过这个激活函数我们就把预测值转换了一个概率值。 我们外围系统调用的时候会根据这个概率值做一些处理。 比如说我们设置一个阈值是0.9。 但凡是预测值大于0.9的我们判断为正例,小于0.9的我们判断为负例。 这样我们把一个回归问题变成了一个二分类的问题。 这个线性回归模型,也就变成了逻辑回归。 所以说我面试的时候,比较喜欢问候选人逻辑回归为什么是分类算法而不是回归算法。 原因就在这里了, 它基于线性回归,但加入了sigmod激活函数后就变成了做2分类问题的逻辑回归。 如果你再换个激活函数softmax,它就变成一个多分类算法了。 所以有些时候,尤其是在做深度学习的时候,其实我们不会去说某个神经元是线性回归,还是逻辑回归的,还是多分类算法,因为造成他们不同的可能就是输出层的激活函数的不同。

作者注:二分类问题就是要么是结果A,要么是结果B,只有两种分类
作者注:我们的模型系统是这样工作的:它会尽量构造出一个符合所有样本特征的‘函数’, 有了函数,如果有新的一个给定的样本,只要给他参数,它就能算出一个预测值;然后这个模型系统还有个激活函数(或许会有多个激活函数),这个/些激活函数会把预测值转换成百分比值;我们还能设定一些阈值,用来暂时判定得出的百分比是正例还是负例

4. 模型的评估指标
OK, 我们之前铺垫了很多原理性的信息,现在我们终于可是开始讲正题了。按照我们传统的软件测试思路, 把整个机器学习服务当做黑盒子,这个黑盒子的实体是模型。 我们把数据输入到模型中,得到预测值,判断预测值的正确性。 这个思路是对的,但是我们对这个预测值的正确性是无法通过单一一条数据就能验证的。 就像在2分类问题中我们得到的预测值是一个概率值,我们能验证这个概率是正确的么? 假如模型告诉你这个人和照片有99.9%的相似度。 但是他们确实不是一个人,你能说他预测错了么? 明显不能啊,毕竟它没告诉你100%一定是这个人,不知道大家看过上一季的最强大脑没有,当时吴恩达先生也在场,人机大战中的人脸识别项目中出乎所有人意料的是计算机输出了两个答案,因为在这个项目的志愿者中有一对双胞胎,计算机计算他们两个人的概率的时候只相差了0.01%, 当时吴恩达先生也不知道选哪个好了,也不说是说概率高的就一定正确。 所以我们一定输入比较大的数据集到模型中,然后统计一些诸如正确率这样的指标来评估模型的效果。
作者注:对!模型预测不是百分百正确的,我们只能尽量让它靠近预测正确,而不能百分百依靠它,完全相信它!那么怎么让它尽量靠近预测正确呢? 答案就是输入大量的样本、多轮次的样本,不断验证回归出新模型---显而易见,这样的模型预测的准确率会越来越高,直到我们认为满意为止! 以下会有一些专有名词出现,请慢慢理解消化,最好动动手,不懂的/有怀疑的地方请记下来,一起讨论之~不可放过一点疑问!

混淆矩阵
那首先我们先说分类的问题,先从混淆矩阵说起。对于一个二分类问题来说,将实例分为正类(Positive/+)或负类(Negative/-),但在使用分类器进行分类时会有四种情况

一个实例是正类,并被预测为正类,记为真正类(True Positive TP/T+)
一个实例是正类,但被预测为负类,记为假负类(False Negative FN/F-)
一个实例是负类,但被预测为正类,记为假正类(False Positive FP/F+)
一个实例是负类,但被预测为负类,记为真负类(True Negative TN/F-)
为了全面的表达所有二分问题中的指标参数,下列矩阵叫做混淆矩阵 - Confusion Matrix


混淆矩阵示例

这是我们评估一个分类模型的时候第一件要做的事情。我们看这个图,上面有一个正负例判定阈值, 我之前说过做2分类问题的时候我们得到的是一个0~1的概率值,外围系统通过设定一个阈值来判断数据是正例还是负例。 这个混淆矩阵就是要计算不同的阈值下那4中分类情况下的分布。那我们为什么要统计这些东西呢。 因为我们之后要讲的关于分类问题的所有评估指标,几乎都是通过混淆矩阵计算出来的。

PS:注意到上面图中的模型预测(负)这一列,实际值(正)+实际值(负)不等于总数, 这是因为在计算过程中四舍五入了!

精准,召回,F1 score

精准,召回,F1 score示例统计图

精准率
首先是精准率(Precision),其实可能叫【被预测为正类的精准率】更合适。因为它的公式是TP/(TP+FP),也就是在所有被预测为正类的样本中,其中本来确实是正类所占的百分比。还是用刚才的例子来说的话,就是:在这群被预测的人群中,本来确实是患癌的人数占所有被预测为患癌人数的百分比。

召回率:
召回率(Recall)就是说,所有得了癌症的病人中,有多少个被查出来得癌症。公式是:TP/(TP+FN)。 意思是真正类在所有正样本中的比率,也就是真正类率(TPR)。

召回和精准理解起来可能比较绕,我多解释一下,我们说要统计召回率,因为我们要知道所有得了癌症中的人中,我们预测出来多少。因为预测癌症是我们这个模型的主要目的, 我们希望的是所有得了癌症的人都被查出来。不能说得了癌症的我预测说是健康的,这样耽误人家的病情是不行的。 但同时我们也要统计精准率, 为什么呢, 假如我们为了追求召回率,我又输入一个特别糟糕的模型,永远判断你是得了癌症的,这样真正得了癌症的患者肯定不会漏掉了。但明显这也是不行的对吧, 人家明明是健康的你硬说人家得了癌症,结果人家回去悲愤欲绝,生无可恋,自杀了。或者回去以后散尽家财,出家为僧。结果你后来跟人说我们误诊了, 那人家砍死你的心都有。 所以在统计召回的同时我们也要加入精准率, 计算所有被查出来得了癌症的人中,有多少是真的癌症病人。 说到这大家可能已经看出来召回和精准在某称程度下是互斥的, 因为他们追求的是几乎相反的目标。 有些时候召回高了,精准就会低。精准高了召回会变低。 所以这时候就要根据我们的业务重心来选择到底选择召回高的模型还是精准高的模型。 有些业务比较看重召回,有些业务比较看重精准。 当然也有两样都很看重的业务,就例如我们说的这个预测癌症的例子。或者说银行的反欺诈场景。 反欺诈追求高召回率,不能让真正的欺诈场景漏过去,在一定程度上也注重精准率,不能随便三天两头的判断错误把用户的卡给冻结了对吧,来这么几次用户就该换银行了。 所以我们还有一个指标叫F1 score, 大家可以理解为是召回和精准的平均值,在同时关注这两种指标的场景下作为评估维度。

今天就先理解到这里吧,待续!


参考文献及原文地址:
孙高飞(ycwdaaaa@testerhome): AI测试深度学习基础 (十三)--演讲稿: 机器学习服务的测试探索

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 215,294评论 6 497
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,780评论 3 391
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 161,001评论 0 351
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,593评论 1 289
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,687评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,679评论 1 294
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,667评论 3 415
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,426评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,872评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,180评论 2 331
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,346评论 1 345
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,019评论 5 340
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,658评论 3 323
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,268评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,495评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,275评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,207评论 2 352

推荐阅读更多精彩内容