写给大家看的机器学习书(第三篇)

题记 —— 我们为何出发

在开始这个系列文章的第三篇之前,为了对初次见面的朋友更友好,将这个题记放在前面。

哪怕所有的初心最终都被遗忘,至少现在的我们足够认真。 ——阿真

机器学习很火。 机器学习专家很贵。 所有大型互联网公司都驾着机器学习的马车朝着人工智能前进。

然而今天哪怕是互联网从业者,大部分也是不知道机器学习到底是什么的。机器如何学习?机器学到的是什么?为什么机器经过学习能够神奇的预测用户的喜好、股票的涨跌?人们好奇又渴望。

这里所说的从业者可能是开发工程师,可能是产品经理,也可能是运营,他们与机器学习专家们在同一家公司工作,参与同一个项目,但机器学习算法对他们仍然像黑魔法一样,神秘又疑惑。这样的局面未免让人沮丧,毕竟如果相对论都可以在高等教育中得到普及,有什么领域是复杂到没办法好好说清楚的呢。

这个系列文章,我将试着为开发工程师,产品经理、设计师、所有希望了解学习机器学习的人,介绍机器学习的原理、方法和实战技巧。

希望把所有的复杂变明了,所有的阴天破乌云,希望世界和平,阿门!

本篇综述

前两篇我们已经学习了机器学习的概念和组成:

这一篇,我们要具体地讲一个学习算法,把它用在有好货这个场景,看看这个算法到底是怎么样从用户日志中寻找规律,学得模型的。一旦学得模型以后就可以对未来做出预测 —— 预测用户是否会点击某个商品,预测人生的巅峰、世界的和平、一起学习机器学习的女朋友...

这个学习算法的名字叫 PLA,全称 Perceptron Learning Algorithm。其中 Perceptron 译作感知机,它是人工神经网络中最基础的两层神经网络模型。学好Perceptron Learning Algorithm,你离入门人工神经网络也就不远啦。

具体来说,这一篇我们将首先介绍PLA的假设集合,看看PLA的假设集合中等着被挑选的候选函数长什么样。看过PLA假设集合的函数表示之后,重要的是理解PLA假设集合的直观解释,事实上之所以把PLA作为第一个学习算法,就是因为它有着非常直观的理解方式。

接着将看到PLA的细节,PLA 是一个相当简洁的算法,算法过程仅有4步,我写的Python 编码含注释不到30行。学习PLA的重点应该放在理解PLA算法的第三步,理解PLA之所以被设计成这样,背后的含义其实朴素又直观。

然后,我们将讨论学习算法两个很重要的问题——学习算法能最终停止并学到东西吗?如果能,学习算法需要运行多久呢?这时我们将惊讶于经典PLA的两点性质:(1)算法可能永远也无法运行结束,会迷失在茫茫的训练数据中永远找不到出口。(2)哪怕知道PLA最终能找到出口,我们也无法事先知道学习需要花多久。不过别急于换台,我们紧接着就会给出一版升级的PLA算法,只需在经典PLA的基础上增加简单两步,就可以解决上面的问题。

好,我们开始吧。

1. PLA 的 假设集合 (Hypothesis Set)

首先,我们从有好货的用户日志中得到训练数据如下(考虑数据安全,数据当然是我Mock的):

2. Perceptron Hypothesis 的直观解释

3. PLA 怎么选一条最好的线

import numpy as npimport matplotlib.pyplot as pltdef PLA(trainingData):
    w = np.mat([1,2127,205]).transpose() # Step 1: 向量w赋初值
    while True: 
        (status, x, y) = noMistakePoint(trainingData, w)
        if status == 'YES': # Step 2: 切分正确,学习完成
            return w
        else:
            w = w + y*x # Step 3: 修正wdef noMistakePoint(training_data, w):
    '''训练数据中是否有点被切分错误'''
    status = 'YES'
    for (x, y) in training_data:
        if mSign(w.transpose() * x) <> sign(y):
            status = 'NO'
            return (status, x, y)
    return status, None, Nonesign = lambda x:1 if x > 0 else -1 if x < 0 else -1def mSign(m):
    '''判断某个矩阵的[0][0]元素正负.大于0返回1,否则返回-1'''
    x = m.tolist()[0][0]
    return 1 if x > 0 else -1 if x < 0 else -1

4. PLA 一定会停吗?PLA 多久会停?

当 PLA 停止计算时,就说明它找到了一条线能将所有的训练数据切分正确。那么问题来了,PLA 一定会停吗?它一定能找到这样的一条直线吗?

答案是:不一定! 事实上,如果训练数据本身就不存在任何一条线能将其正确切分,比如如下图所示,那么 PLA 无论如何也无法找到理想的直线。学习将进入永不停止的循环。

训练数据至少存在一条直线能将其切分开,称为训练数据是线性可分的 (Linear Seperable) 。因此:

训练数据是线性可分的 (Liner Seperable) ,是 PLA 能够学习的必要条件。

5. PLA 搞鸡毛啊!

这个时候有的朋友要骂娘啦,整了半天 PLA 的训练数据必须线性可分,哪怕线性可分需要计算多久也不知道。PLA 搞鸡毛啊! 不要急!!大招马上出来。

我们再看看下面这张图,这里的训练数据不是线性可分,是由其中两个点导致的。在现实中,哪怕原本的训练数据产生于某个“上帝真相”并且是线性可分的,在收集数据处理数据的过程中不可避免的会引入一些脏数据,这部分错误的训练数据我们称为噪声(Noise)。针对这种噪声数据引起的,原本线性可分的训练数据变成了不是线性可分的情况,有一个升级版的 PLA 算法,只需要增加简单的两步节能解决问题:

当然,如果你的训练数据不是线性可分是下图这种情况,作为线性分类器的 PLA 是无能为力的,这需要后面要讲的非线性模型来搞定。期待一下吧。

预告和其它

下一篇我们将围绕一个有关赚钱的机器学习问题展开讨论。

你是否也有过那么一时三刻的不自信:当你有一天成了机器学习专家,学会了从股市的历史数据中学得模型,这个时候你敢跟着模型对股市的预测,进行真金白银的投资吗?

所谓“有史为鉴,可以知兴亡”,从历史中总结出的规律,真的能在未来的预测中被信赖吗?为了做一个对未来负责的机器学习专家,我们下一篇将展开对这个问题的讨论。

感谢您的阅读,如果你希望收到后续文章的更新,可以考虑关注我。或者关注这个同名专栏,文章将会在您的通知中心推送更新。

再次感谢您的阅读,这里是《写给大家看的机器学习书》,希望我有把事情说清楚,有任何疑惑或者问题,欢迎留言。

祝开心 :)

系列推荐

本文分享自微信公众号 - PPV课数据科学社区(ppvke123)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2017-03-08

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏大数据文摘

Google首席科学家韩国大学演讲:大规模深度学习

15820
来自专栏机器学习算法与Python学习

数据科学家必用的25个深度学习的开放数据集!

原文:https://www.analyticsvidhya.com/blog/2018/03/comprehensive-collection-deep-le...

616140
来自专栏机器之心

专栏 | 李沐《动手学深度学习》第一章:机器学习简介

49450
来自专栏深度学习那些事儿

一篇文章解决机器学习,深度学习入门疑惑

研究生有不少日子,和之前的几个学长以及几个学弟偶尔也聊聊天。大部分聊的话题无关乎这几年大火的机器学习深度学习神经网络,而这篇文章的目的,则是从学生的角度(不管是...

73470
来自专栏达观数据

多模型融合推荐算法在达观数据的运用

多模型融合推荐算法在达观数据的运用 研发背景 互联网时代也是信息爆炸的时代,内容太多,而用户的时间太少,如何选择成了难题。电商平台里的商品、媒体网站里的新闻、小...

57160
来自专栏AI研习社

意想不到的盟友:改善隐私问题可以带来表现更好的机器学习模型

AI 研习社按:Nicolas Papernot 在 2017、2018 连续两年的 ICLR 上都发表了关于差分隐私方法 PATE 的论文。如今大家都意识到了...

18130
来自专栏新智元

9月机器学习文章Top10:星际2、Dota2皆入选,ML教程居榜首

【新智元导读】Mybridge AI(www.mybridge.co)基于文章的内容质量和热议程度对 9 月份和机器学习相关的论文进行了排名,从近 1400 篇...

38780
来自专栏机器之心

学界 | 深度神经网络比拼人类视觉:信号弱时的物体识别差异

选自arXiv 机器之心编译 参与:Smith 近日,来自德国 Tubingen大学和Potsdam大学的研究人员们共同发布了一项研究成果——深度神经网络和人类...

30150
来自专栏新智元

谷歌大脑与Open AI合著论文:机器视觉的一个致命缺陷

【新智元导读】计算机视觉很厉害,但是,只要稍加修改,比如使用美图软件加一个滤镜,计算机视觉就错误频出。MIT报道把这一缺陷称为计算机视觉的“阿喀琉斯之踵”,认为...

37680
来自专栏AI科技评论

干货 | 意想不到的盟友:改善隐私问题可以带来表现更好的机器学习模型

AI 科技评论按:Nicolas Papernot 在 2017、2018 连续两年的 ICLR 上都发表了关于差分隐私方法 PATE 的论文。如今大家都意识到...

14030

扫码关注云+社区

领取腾讯云代金券