精华内容
下载资源
问答
  • 机器学习实战》学习笔记(一):机器学习基础

    万次阅读 多人点赞 2019-08-19 17:01:32
    专栏【机器学习】 【机器学习】《机器学习实战》读书笔记及代码 总目录 https://blog.csdn.net/TeFuirnever/article/details/99701256 ————————————————————————————————————...

    欢迎关注WX公众号:【程序员管小亮】

    【机器学习】《机器学习实战》读书笔记及代码 总目录

    GitHub代码地址:

    ——————————————————————————————————————————————————————

    本章内容

    • 机器学习的简单概述
    • 机器学习的主要任务
    • 学习机器学习的原因
    • Python语言的优势

    1、何谓机器学习

    什么是机器学习?书中举了一个很有意思的例子,我们来听一下,就当开胃菜了。

    最近我和一对夫妇共进晚餐,他们问我从事什么职业,我回应道:“机器学习。”妻子回头问丈夫:“亲爱的,什么是机器学习?”她的丈夫答道:“T-800型终结者。”在《终结者》系列电影中,T-800是人工智能技术的反面样板工程。
    在这里插入图片描述

    哈哈,承包了我一天的笑点,极其学习的概念到底是什么,这个我们在很多博客中都又提到过。

    如果你还是不清楚的话,实在是很过分了 😐,在深度学习大火的如今,机器学习也正是出现在人们视野中,现今,机器学习已应用于多个领域,远超出大多数人的想象,比如NLP,再比如推荐系统。
    在这里插入图片描述

    机器学习在日常生活中的应用,从左上角按照顺时针方向依次使用到的机器学习技术分别为:人脸识别、手写数字识别、垃圾邮件过滤和亚马逊公司的产品推荐。

    在本书中,给出的定义是:【简单地说,机器学习就是把无序的数据转换成有用的信息。】

    1. 传感器和海量数据

    虽然已从互联网上获取了大量的人为数据,但最近却涌现了更多的非人为数据。传感器技术并不时髦,已经发展了好多年的传统行业,但是如何将它们接入互联网这确实是新的挑战。地震预测是一个很好的例子,传感器手机了海量的数据,但是如何从这些数据中抽取出有价值的信息是一个非常值得研究的课题。

    1. 机器学习非常重要

    在过去的半个世纪里,发达国家的多数工作岗位都已从体力劳动转化为脑力劳动。过去的工作基本上都有明确的定义,类似于把物品从A处搬到B处,或者在这里打个洞,但是现在这类工作都在逐步消失。现今的情况具有很大的二义性,类似于“最大化利润”,“最小化风险”、“找到最好的市场策略”……诸如此类的任务要求都已成为常态。虽然可从互联网上获取到海量数据,但这并没有简化知识工人的工作难度。针对具体任务搞懂所有相关数据的意义所在,这正成为基本的技能要求。

    2、关键术语

    通过构建下面的鸟类分类系统,来对机器学习领域的常用术语进行一个总结。
    在这里插入图片描述
    机器学习的主要任务就是 分类。如何判断飞入进食器的鸟是不是象牙喙啄木鸟呢?(任何发现活的象牙喙啄木鸟的人都可以得到5万美元的奖励。)这个任务就是 分类,有很多机器学习算法非常善于 分类。本例中的类别就是鸟的物种,更具体地说,就是区分是否为象牙喙啄木鸟。

    我们决定使用某个机器学习算法进行 分类,首先需要做的是算法训练,即学习如何 分类。通常我们为算法输入大量已分类数据作为算法的 训练集训练集 是用于训练机器学习算法的数据样本集合,表1-1是包含六个训练样本的训练集,每个训练样本有4种 特征(体重、翼展、脚蹼和后背颜色)、一个 目标变量(种属),目标变量 是机器学习算法的预测结果,在 分类 算法中目标变量的类型通常是标称型的,而在 回归 算法中通常是连续型的。训练样本集必须确定知道 目标变量 的值,以便机器学习算法可以发现 特征目标变量 之间的关系。正如前文所述,这里的目标变量 是种属,也可以简化为标称型的数值。我们通常将分类问题中的目标变量称为 类别,并假定分类问题只存在有限个数的 类别

    为了测试机器学习算法的效果,通常使用两套独立的样本集:训练数据测试数据。当机器学习程序开始运行时,使用 训练样本集 作为算法的输入,训练完成之后输入 测试样本。输入 测试样本 时并不提供 测试样本目标变量,由程序决定样本属于哪个类别。比较 测试样本 预测的 目标变量 值与 实际样本类别 之间的差别,就可以得出算法的实际精确度。

    假定这个鸟类分类程序,经过测试满足精确度要求,是否我们就可以看到机器已经学会了如何区分不同的鸟类了呢?这部分工作称之为 知识表示,某些算法可以产生很容易理解的知识表示,而某些算法的知识表示也许只能为计算机所理解。知识表示 可以采用规则集的形式,也可以采用概率分布的形式,甚至可以是训练样本集中的一个实例。在某些场合中,人们可能并不想建立一个专家系统,而仅仅对机器学习算法获取的信息感兴趣。此时,采用何种方式 表示知识 就显得非常重要了。

    3、机器学习的主要任务

    分类问题的主要任务是将实例数据划分到合适的分类中;回归问题的主要任务是预测数值型数据。分类和回归属于监督学习,之所以称之为 监督学习,是因为这类算法必须知道预测什么,即 目标变量的分类信息,也就是label。

    监督学习 相对应的是 无监督学习,此时数据没有 类别信息,也不会给定 目标值。在 无监督学习 中,将数据集合分成由类似的对象组成的多个类的过程被称为 聚类;将寻找描述数据统计值的过程称之为 密度估计。此外,无监督学习 还可以减少数据特征的维度,以便我们可以使用二维或三维图形更加直观地展示数据信息。

    在这里插入图片描述

    4、如何选择合适的算法

    从上面的表格中可以看出,如果我们能确定算法的目的,想要算法完成何种任务,再加上确定需要分析或手机的数据是什么,就能大概确定哪一个算法更适合了。

    首先考虑使用机器学习算法的目的。

    • 如果想要预测目标变量的值,则可以选择监督学习算法
      • 如果目标变量是离散型,则可以选择分类器算法
      • 如果目标变量是连续型的数值,则需要选择回归算法
    • 如果不想预测目标变量的值,则可以选择无监督学习算法
      • 进一步分析是否需要将数据划分为离散的组。如果这是唯一的需求,则使用聚类算法;
      • 如果还需要估计数据与每个分组的相似程度,则需要使用密度估计算法。

    其次需要考虑的是数据问题。主要应该了解数据的以下特性:特征值是离散型变量还是连续型变量,特征值中是否存在缺失的值,何种原因造成缺失值,数据中是否存在异常值,某个特征发生的频率如何(是否罕见得如同海底捞针),等等。

    一般说来发现最好算法的关键环节是反复试错的迭代过程。

    5、开发机器学习应用程序的步骤

    机器学习算法开发应用程序通常遵循以下的步骤。
    (1) 收集数据
    (2) 准备输入数据
    (3) 分析输入数据
    (4) 训练算法
    (5) 测试算法
    (6) 使用算法

    6、Python 语言的优势

    选择Python作为实现机器学习算法的编程语言的原因:
    (1) Python的语法清晰;
    (2) 易于操作纯文本文件;
    (3) 使用广泛,存在大量的开发文档。

    7、NumPy 函数库基础

    机器学习算法涉及很多线性代数知识,因此在使用Python语言构造机器学习应用时,会经常使用NumPy函数库。如果不熟悉线性代数也不用着急,这里用到线性代数只是为了简化不同的数据点上执行的相同数学运算。将数据表示为矩阵形式,只需要执行简单的矩阵运算而不需要复杂的循环操作。

    8、总结

    尽管现在引起很多人的注意,但是机器学习算法其实还是一个专业的学科,很多人都是道听途说,仍然有很长的路要走。随着每天我们需要处理的数据在不断地增加,能够深入理解数据背后的真实含义,是数据驱动产业必须具备的基本技能。如果你想走这个方向,就要下定决心,走到黑,加油,共勉。

    下一章我们将介绍第一个分类算法——k-近邻算法。

    参考文章

    • 《机器学习实战》
    展开全文
  • 在监督学习中,给定一组数据,我们知道正确的输出结果应该是什么样子,并且知道在输入和输出之间有着一个特定的关系。 监督学习分类 回归(regression)和分类(classification)。 在回归问题中,我们会预测一个...

    机器学习的五大分类,监督学习 无监督学习 半监督学习 迁移学习 增强学习@监督学习 无监督学习 半监督学习

    监督学习
    在监督学习中,给定一组数据,我们知道正确的输出结果应该是什么样子,并且知道在输入和输出之间有着一个特定的关系。
    监督学习分类
    回归(regression)和分类(classification)。
    在回归问题中,我们会预测一个连续值。也就是说我们试图将输入变量和输出用一个连续函数对应起来;比如通过房地产市场的数据,预测一个给定面积的房屋的价格就是一个回归问题。这里我们可以把价格看成是面积的函数,它是一个连续的输出值。而在分类问题中,我们会预测一个离散值,我们试图将输入变量与离散的类别对应起来。比如:给定医学数据,通过肿瘤的大小来预测该肿瘤是恶性瘤还是良性瘤(课程中给的是乳腺癌的例子),这就是一个分类问题,它的输出是0或者1两个离散的值。(0代表良性,1代表恶性)。分类问题的输出可以多于两个,比如在该例子中可以有{0,1,2,3}四种输出,分别对应{良性, 第一类肿瘤, 第二类肿瘤, 第三类肿瘤}。
    无监督学习
    在无监督学习中,我们基本上不知道结果会是什么样子,但我们可以通过聚类的方式从数据中提取一个特殊的结构。在无监督学习中给定的数据是和监督学习中给定的数据是不一样的。在无监督学习中给定的数据没有任何标签或者说只有同一种标签。GAN就是一种无监督学习
    无监督学习与监督学习的区别

    1. 有监督学习方法必须要有训练集与测试样本。在训练集中找规律,而对测试样本使用这种规律。而非监督学习没有训练集,只有一组数据,在该组数据集内寻找规律。
    2. 有监督学习的方法就是识别事物,识别的结果表现在给待识别数据加上了标签。因此训练样本集必须由带标签的样本组成。而非监督学习方法只有要分析的数据集的本身,预先没有什么标签。如果发现数据集呈现某种聚集性,则可按自然的聚集性分类,但不予以某种预先分类标签对上号为目的。
    3. 非监督学习方法在寻找数据集中的规律性,这种规律性并不一定要达到划分数据集的目的,也就是说不一定要“分类”。
      半监督学习
      所给的数据有的是有标签的,而有的是没有标签的。常见的两种半监督的学习方式是直推学习(Transductive learning)和归纳学习(Inductive learning)。
        直推学习(Transductive learning):没有标记的数据是测试数据,这个时候可以用test的数据进行训练。这里需要注意,这里只是用了test数据中的feature而没有用label,所以并不是一种欺骗的方法。
        归纳学习(Inductive learning):没有标签的数据不是测试集。
      迁移学习
      随着越来越多的机器学习应用场景的出现,而现有表现比较好的监督学习需要大量的标注数据,标注数据是一项枯燥无味且花费巨大的任务,所以迁移学习受到越来越多的关注。Transfer Learning 的定义是:Ability of a system to recognize and apply knowledge and skills learned in previous domains/tasks to novel domains/tasks。将某个领域或任务上学习到的知识或模式应用到不同但相关的领域或问题中为目标。
      在这里插入图片描述
      增强学习(reinforcement learning)
      reinforcement learning的特点:
      agent是从环境中去学习,不是data中,是基于环境的,angent需要从环境中获得大量的信息来学习和采取行动action,目标是学习从环境状态到行为的映射,使得agent选择的行为能够获得环境最大的奖励,reinforcement learning中的奖励来自于环境中的反馈。

      如图,监督学习中,我们是告诉的机器,当听到hello,则说hi;听到byebye,则说good bye.而加固学习是在自行对话然后得到了人的反馈中,自行学习。

    我们对Markdown编辑器进行了一些功能拓展与语法支持,除了标准的Markdown编辑器功能,我们增加了如下几点新功能,帮助你用它写博客:

    1. 全新的界面设计 ,将会带来全新的写作体验;
    2. 在创作中心设置你喜爱的代码高亮样式,Markdown 将代码片显示选择的高亮样式 进行展示;
    3. 增加了 图片拖拽 功能,你可以将本地的图片直接拖拽到编辑区域直接展示;
    4. 全新的 KaTeX数学公式 语法;
    5. 增加了支持甘特图的mermaid语法1 功能;
    6. 增加了 多屏幕编辑 Markdown文章功能;
    7. 增加了 焦点写作模式、预览模式、简洁写作模式、左右区域同步滚轮设置 等功能,功能按钮位于编辑区域与预览区域中间;
    8. 增加了 检查列表 功能。

    功能快捷键

    撤销:Ctrl/Command + Z
    重做:Ctrl/Command + Y
    加粗:Ctrl/Command + B
    斜体:Ctrl/Command + I
    标题:Ctrl/Command + Shift + H
    无序列表:Ctrl/Command + Shift + U
    有序列表:Ctrl/Command + Shift + O
    检查列表:Ctrl/Command + Shift + C
    插入代码:Ctrl/Command + Shift + K
    插入链接:Ctrl/Command + Shift + L
    插入图片:Ctrl/Command + Shift + G
    查找:Ctrl/Command + F
    替换:Ctrl/Command + G

    合理的创建标题,有助于目录的生成

    直接输入1次#,并按下space后,将生成1级标题。
    输入2次#,并按下space后,将生成2级标题。
    以此类推,我们支持6级标题。有助于使用TOC语法后生成一个完美的目录。

    如何改变文本的样式

    强调文本 强调文本

    加粗文本 加粗文本

    标记文本

    删除文本

    引用文本

    H2O is是液体。

    210 运算结果是 1024.

    插入链接与图片

    链接: link.

    图片: Alt

    带尺寸的图片: Alt

    居中的图片: Alt

    居中并且带尺寸的图片: Alt

    当然,我们为了让用户更加便捷,我们增加了图片拖拽功能。

    如何插入一段漂亮的代码片

    博客设置页面,选择一款你喜欢的代码片高亮样式,下面展示同样高亮的 代码片.

    // An highlighted block
    var foo = 'bar';
    

    生成一个适合你的列表

    • 项目
      • 项目
        • 项目
    1. 项目1
    2. 项目2
    3. 项目3
    • 计划任务
    • 完成任务

    创建一个表格

    一个简单的表格是这么创建的:

    项目Value
    电脑$1600
    手机$12
    导管$1

    设定内容居中、居左、居右

    使用:---------:居中
    使用:----------居左
    使用----------:居右

    第一列第二列第三列
    第一列文本居中第二列文本居右第三列文本居左

    SmartyPants

    SmartyPants将ASCII标点字符转换为“智能”印刷标点HTML实体。例如:

    TYPEASCIIHTML
    Single backticks'Isn't this fun?'‘Isn’t this fun?’
    Quotes"Isn't this fun?"“Isn’t this fun?”
    Dashes-- is en-dash, --- is em-dash– is en-dash, — is em-dash

    创建一个自定义列表

    Markdown
    Text-to- HTML conversion tool
    Authors
    John
    Luke

    如何创建一个注脚

    一个具有注脚的文本。2

    注释也是必不可少的

    Markdown将文本转换为 HTML

    KaTeX数学公式

    您可以使用渲染LaTeX数学表达式 KaTeX:

    Gamma公式展示 Γ ( n ) = ( n − 1 ) ! ∀ n ∈ N \Gamma(n) = (n-1)!\quad\forall n\in\mathbb N Γ(n)=(n1)!nN 是通过欧拉积分

    Γ ( z ) = ∫ 0 ∞ t z − 1 e − t d t   . \Gamma(z) = \int_0^\infty t^{z-1}e^{-t}dt\,. Γ(z)=0tz1etdt.

    你可以找到更多关于的信息 LaTeX 数学表达式here.

    新的甘特图功能,丰富你的文章

    Mon 06 Mon 13 Mon 20 已完成 进行中 计划一 计划二 现有任务 Adding GANTT diagram functionality to mermaid
    • 关于 甘特图 语法,参考 这儿,

    UML 图表

    可以使用UML图表进行渲染。 Mermaid. 例如下面产生的一个序列图:

    张三 李四 王五 你好!李四, 最近怎么样? 你最近怎么样,王五? 我很好,谢谢! 我很好,谢谢! 李四想了很长时间, 文字太长了 不适合放在一行. 打量着王五... 很好... 王五, 你怎么样? 张三 李四 王五

    这将产生一个流程图。:

    链接
    长方形
    圆角长方形
    菱形
    • 关于 Mermaid 语法,参考 这儿,

    FLowchart流程图

    我们依旧会支持flowchart的流程图:

    Created with Raphaël 2.2.0 开始 我的操作 确认? 结束 yes no
    • 关于 Flowchart流程图 语法,参考 这儿.

    导出与导入

    导出

    如果你想尝试使用此编辑器, 你可以在此篇文章任意编辑。当你完成了一篇文章的写作, 在上方工具栏找到 文章导出 ,生成一个.md文件或者.html文件进行本地保存。

    导入

    如果你想加载一篇你写过的.md文件,在上方工具栏可以选择导入功能进行对应扩展名的文件导入,
    继续你的创作。


    1. mermaid语法说明 ↩︎

    2. 注脚的解释 ↩︎

    展开全文
  • 机器学习实践应用

    万次阅读 多人点赞 2018-04-12 10:04:41
    机器学习是一门多领域交叉学科,涉及概率论、统计学、逼近论、凸分析、算法复杂度等多门学科,专门研究计算机怎样模拟或实现人类的学习行为。机器学习是人工智能的核心,是使计算机具有 智能的根本途径。 本书通过对...

    内容简介

    机器学习是一门多领域交叉学科,涉及概率论、统计学、逼近论、凸分析、算法复杂度等多门学科,专门研究计算机怎样模拟或实现人类的学习行为。机器学习是人工智能的核心,是使计算机具有 智能的根本途径。

    本书通过对机器学习的背景知识、算法流程、相关工具、实践案例以及知识图谱等内容的讲解,全面介绍了机器学习的理论基础和实践应用。书中涉及机器学习领域的多个典型算法,并详细给出了机器学习的算法流程。

    本书适合任何有一定数据功底和编程基础的读者阅读。通过阅读本书,读者不仅可以了解机器学习的理论基础,也可以参照一些典型的应用案例拓展自己的专业技能。同时,本书也适合计算机相关专业的学生以及对人工智能和机器学习感兴趣的读者阅读。

    通过阅读本书,你将了解到:

    • 机器学习全流程的串联方式,包括数据预处理、特征工程、算法、模型评估等;
    • 最常用的机器学习算法,包括逻辑回归、随机森林、支持向量机、KMEANS、DBSCAN、K 近邻、马尔科夫决策、LDA、标签传播等;
    • 机器学习算法在实际业务中的应用,涉及金融、医疗、新闻、电商等诸多领域;
    • 机器学习的常用工具:R、Spark-MLib、TensorFlow、PAI 等;
    • 时下最热门的技术领域:深度学习、知识图谱等。

    作者简介

    李博,花名“傲海”。目前任阿里云数据产品经理,主要负责机器学习平台的产品化建设以及对外业务应用。本科、硕士毕业于北京邮电大学,曾就职于索尼和华为(实习),从事数据相关产品的开发。作为 CSDN 博客专家、云栖社区博客专家,长期分享 IT 技术相关文章,内容涉及机器学习算法、Android 应用及源码开发等领域。一直活跃于开发者社区,主导开发了多个 GitHub 百星开源项目,还开发并上线了多款手机 App。

    本书内容

    推荐序

    近年来,在 IT 圈大家谈论最多的就是人工智能。AlphaGo 与围棋选手的人机大战更是让我们领略到人工智能技术巨大潜力的同时,又将人工智能推向了一个新的制高点。

    人工智能的发展得益于云计算和大数据技术的成熟与普及。和人工智能相关的还有两个核心词汇——机器学习和深度学习。这三者有着什么样的关系?所谓人工智能,通俗地讲是指由人工制造出来的系统所表现出来的智能。人工智能研究的核心问题包括推理、知识、交流、感知、移动和操作物体的能力。而机器学习是人工智能的一个分支,很多时候机器学习几乎成为人工智能的代名词。机器学习简单来讲就是通过算法,使机器能从大量历史数据中学习规律,从而对新的样本做出智能识别或对未来做预测。深度学习是机器学习的一个新领域。之所以称为“深度”,是因为前面说的机器学习是浅层的学习,主要基于概率统计、矩阵或图模型而得出的分析结论。深度学习的概念源于人工神经网络的研究,它基于神经网络框架,通过模拟人脑学习的方式来处理数据。在人工智能实践中,数据是载体和基础,智能是追求的目标,而机器学习则是从数据通往智能的技术桥梁。因此,在人工智能领域,机器学习才是核心,是现代人工智能的本质。

    人工智能的火热使市场上对机器学习人才的需求不断提高,很多从事软件开发的程序员纷纷转行投向机器学习领域。但机器学习对人才的技术和理论水平要求都非常高,除了要掌握统计学中各种复杂的机器学习算法的理论推导外,还要懂计算机算法的实现逻辑以及分布式、并行化等架构理论。

    本书是以应用场景为导向,以代码实现为样例贯穿始终,并融入了通俗易懂的理论知识。对于机器学习爱好者和想进入相关领域的从业者来说,是一本值得推荐的好书。

    从2015年开始,我有幸与作者在同一个团队工作,一起设计并研发阿里云的机器学习平台——PAI。作者对机器学习的理解以及产品上的设计思想都在本书中完美地呈现,值得准备进入机器学习领域的爱好者和从业者好好品读。

    感谢作者让我在新书出版之前先睹为快。

    ——刘吉哲
    阿里云高级专家

    致谢

    感谢我的父母这些年对我的鼓励,感谢我的女朋友,家人的支持永远是我的源动力,让你们生活得幸福是我奋斗的目标。感谢我的大学同学,特别是本科宿舍的室友,你们是我心中的一股清流。最后我要特别感谢我的同事,感谢楚巍、不老、吉哲、云郎、贾总、品道等人以及 UED 小团队,感谢你们对我工作上的支持和帮助。在阿里云大家庭中,我工作得很快乐,个人成长也非常迅速。同时,我也非常感谢出版社的编辑胡俊英在本书写作期间为我提供建议和帮助。

    最后对自己这段时间的写作过程做一个总结,最大的感触是,在这样快速紧张的生活和工作节奏下,连续8个月坚持做一件事情是非常需要毅力的。每天下班之后坚持学习和写作2小时,常常熬到凌晨才关灯睡觉,但是这份坚持换来了将近500小时的时间用来“充电”。在这段时间中,写作已经成为我的一种生活方式,在飞机上、在高铁上、在出租车上、在厕所中……很多地方都留下了思考和回忆。无论最终能做到什么程度,都希望自己可以继续把这样的激情保持下去。最后感谢所有在工作和学习中给过我帮助的人,也感谢所有拒绝我、批评过我的人,因为有你们才有了这本书。

    前言

    人工智能是近年来非常火的话题,人们似乎看到了在某些领域内机器智能取代人力的可能性。之所以人们可以得到这样的判断,主要是基于以下几方面原因:随着互联网的发展,人类社会积累了大量的数据可供分析;机器学习的算法不断迭代,特别是近年来随着深度学习的发展,人们从理论层面取得了实质性突破;随着分布式计算的成熟,云计算让计算资源不再成为瓶颈。我们可以把人工智能看作一个数据挖掘体系,在这个体系当中,机器学习的作用主要是学习历史数据中的经验,把这些经验构建成数学模型。人类利用机器学习算法生成的模型,就可以解决日常的一些问题,如商品推荐和对股票涨跌的预测等。

    以上谈到了机器学习的主要作用,我们再来了解机器学习在业务中的应用,其实机器学习算法正在逐步向“平民化”演变。早些时候,只有一些规模比较大的公司会投入资源在智能算法的研究上,因为这些算法需要大量的数据积累以及计算资源,而且整个业务框架跟算法的结合也需要耗费很大人力,所以只有少数数据业务量达到一定规模的公司会在这方面投入。但是随着各种开源算法框架的发展以及计算资源的价格走低,机器学习不再是“奢侈品”,很多规模不大的公司也开始尝试用机器学习算法生成的模型来指导自身业务,用数据来解决业务问题是代价最小的方式,而且效果会随着数据量的积累变得越来越明显。机器学习算法正在帮助越来越多的企业实现转型,从传统的商业智能(Business Intelligence,BI)驱动到人工智能(Artificial Intelligence,AI)驱动。通过平日里与客户打交道,我们可以了解到,现在不只是互联网公司,更多传统行业,如教育、地产和医疗等,也在尝试把自己的业务数据上传到云,通过机器学习算法来提升自己的业务竞争力。

    综上所述,业务与机器学习算法的结合很有可能是下一阶段行业变革的驱动力,如果固守原来的传统技术,不尝试提升业务的数据驱动力,企业很有可能在这一波新的浪潮中被淘汰。本书尝试将算法与实际的业务实战相结合,将对机器学习的全链路逐一进行介绍。在描述算法理论的时候,本书尽可能用更直白易懂的语句和图示来替代公式。另外,为了帮助读者更有成效地理解机器学习算法的使用逻辑,书中不单介绍了算法,还对整个数据挖掘的全流程,包括数据预处理、特征工程、训练以及预测、评估进行了介绍。而且本书还通过真实案例的数据,在各种不同业务场景下对整个数据挖掘流程进行了详细介绍。此外,书中还简单地介绍了深度学习和知识图谱这两个未来可能被更多关注的领域。总之,本书不是一本理论教程,而是一本推动算法与业务实践相结合的指南。

    写作本书的目的

    我从研究生阶段开始接触机器学习算法,在硕士研究生期间主要从事算法的理论研究和代码实现,当时参与了一些开源算法库的开发和算法大赛,那时对机器学习的理解更多的是停留在数学公式推导层面。那时候理解的机器学习就是一门统计科学,需要把公式研究透彻。直到入职阿里云,从事了机器学习平台相关的工作,我对机器学习的看法发生了很大改变。根据平日里与客户的沟通,我认识到,对绝大部分中小企业用户而言,机器学习算法只是帮助大家提升业务成效的工具,很多用户对机器学习的理解还处于比较初级的阶段,与这种现状相矛盾的是目前市面上部分机器学习相关的图书都更偏向于理论研究,而比较缺乏实际应用的场景。

    写这本书的目的就是希望可以提供这样一本素材,能够让渴望了解机器学习的人快速了解整个数据挖掘体系的轮廓,可以用最小的成本帮助用户把算法迁移到机器学习云服务上去。至于算法的精密度和深度的探索,那是数学家需要考虑的事情,对绝大部分的机器学习算法用户而言,这样一本能帮助大家快速理解算法并能够将其在业务上实践的教程可能会更加有效。

    对我而言,本书也是我对自己学习成果的总结。从 2013年起,我陆陆续续在 CSDN、GitHub 和云栖社区上分享过一些自己在 IT 领域的学习笔记和代码,收到了很多朋友的反馈,也有一些出版社的朋友找到我希望可以把这些内容整理成书,但是一直没有特别笃定的想法——什么样的书是有价值的。通过近一年来的机器学习平台产品建设以及与客户的不断接触,我心中的想法逐渐清晰,很多机器学习爱好者最关心的是如何使用算法而不是这些算法背后的推理,于是本书就应运而生了。虽然我才疏学浅,书中内容未免有描述不足之处,但是我真心希望这本书可以在读者探索机器学习的道路上为其提供助力。

    读者对象

    本书的读者对象如下:

    • 有一定数学基础,希望了解机器学习算法的人;
    • 有编程基础,希望自己搭建机器学习服务解决业务场景的工程师;
    • 数据仓库工程师;
    • 与数据挖掘相关的高校学生;
    • 寻求数据驱动业务的企业决策者。

    如何阅读本书

    本书的结构是按照读者对机器学习的认知过程和数据挖掘的算法流程来组织的,一共分为5个部分,共9章内容。

    第1部分是机器学习的背景知识介绍,包括第1章。这一部分主要介绍机器学习的发展历史以及现状,另外,也介绍了机器学习的一些基本概念,为接下来的内容做准备。

    第2部分介绍机器学习的算法流程,包括第2~6章,分别介绍了场景解析、数据预处理、特征工程、机器学习常规算法和深度学习算法。在第5章的算法部分,对常见的分类算法、聚类算法、回归算法、文本分析算法、推荐算法和关系图算法都进行了介绍,从这一章可以了解到不同业务场景下不同算法的区别和用法。第6章对深度学习相关内容进行了讲解,包括常用的3种模型 DNN、CNN 和 RNN 的介绍。

    第3部分介绍机器学习的相关工具,包括第7章的内容。这里的工具是一个广泛的概念,包括了 SPSS 和 R 语言这样的单机统计分析环境,也包括了分布式的算法框架Spark MLib和TensorFlow,还有企业级的云算法服务 AWS ML 和阿里云 PAI。通过阅读这一章,读者可以根据自身的业务特点,选择适合自己的算法工具。

    第4部分介绍机器学习算法的实践案例,包括第8章,帮助读者理解整个数据挖掘流程。这一章针对不同行业和不同场景搭建了实验,分别介绍了如何通过机器学习算法应对心脏病预测、商品推荐、金融风控、新闻分类、贷款预测、雾霾天气预报和图片识别等业务场景,因此也是本书的核心章节。

    第5部分主要针对知识图谱这个热点话题进行介绍,包括第9章,知识图谱的介绍主要是从图谱的概念以及实现的角度来说明。

    尽管读者可以根据自己的侧重点来选择阅读顺序,但我强烈建议读者按照顺序来阅读,这样对理解书中的概念并能够循序渐进地掌握相关知识更有帮助。

    勘误和服务

    虽然花了很多时间去反复检查和核实书中的文字、图片和代码,但是因为认知能力有限,书中难免会有一些纰漏,如果大家发现书中的不足之处,恳请反馈给我,我一定会努力修正问题,我的个人邮箱是 garvin.libo@gmail.com。如果大家在阅读本书的时候遇到什么问题,也欢迎通过各种方式与我取得联系。

    个人网站

    博客地址

    读者也可以到异步社区的页面内提交勘误。因为工作繁忙,可能来不及一一回复,但是我会尽力与读者保持沟通,谢谢大家的支持。

    第01章:机器学习概述(上)

    在本章中,笔者会以对于人工智能发展历史的回顾作为开篇,进而介绍一些人工智能的发展现状,还会引出对于机器学习的基本概念的一些讲解。这一章作为全书的开篇,希望给各位读者一个宏观的概念——什么是机器学习?它会给我们的生活带来哪些改变?

    1.1 背景

    正如爱因斯坦所说:“从希腊哲学到现代物理学的整个科学史中,不断有人试图把表面上极为复杂的自然现象归结为几个简单的基本概念和关系,这就是整个自然哲学的基本原理。”人类进化的发展史,从某种意义上来讲就是不断归纳经验进而演绎的过程。从刀耕火种的新石器时代到近代的工业革命以及现代科技的发展,人类已经积累了大量的经验。这些经验既是“种瓜得瓜,种豆得豆”这样的常识,也是例如相对论这样的定理公式。人类文明正沿着时间这条坐标轴不断前进,如何利用过往的经验来推动人类社会的再一次飞跃,人工智能或许是我们需要的答案。

    人工智能的起源应该可以追溯到17世纪甚至更早,当时人们对于人工智能的定义是基于推理的。人们畅想着如果两个哲学家或者历史学家的观点出现矛盾,两个人不必再进行无休止的争吵,世界上的所有理论会抽象成类似于数学符号的语言,人们只需要拿出笔来计算就可以解决矛盾。这种抽象逻辑给了后人引导,如今,机器学习在行业上的应用也是将业务逻辑抽象成数字来进行计算,从而解决业务问题。但是在远古时代,这些逻辑还只是科学家脑中的想法。实际上,直到有机器的出现,人工智能才真正作为一门学科而受到广泛关注。

    谈到近代人工智能的起源就不得不提到一个名字——图灵(见图1-1)。

    enter image description here

    图1-1 阿兰 · 图灵

    随着第二次世界大战的爆发,越来越多的机械开始替代手工,人们开始幻想什么时候机器能代替人类来进行思考。在20世纪40年代,关于人工智能的讨论开始兴起。但是,机器做到什么程度才算人工智能,这需要一个标准来判定。图灵用了最直白的话语描述了人工智能,这就是图灵测试(见图1-2)。

    enter image description here

    图1-2 图灵测试

    1950年,计算机科学和密码学的先驱阿兰 · 麦席森 · 图灵发表了一篇名为《计算机器与智能》的论文,文中定义了人工智能测试的方法,让被测试人和一个声称自己有人类智力的机器在一起做一个实验。测试时,测试人与被测试人是分开的,测试人只有通过一些装置(如键盘)向被测试人问一些问题,随便是什么问题都可以。问过一些问题后,如果测试人能够正确地分出谁是人、谁是机器,那机器就没有通过图灵测试,如果测试人没有分出谁是机器、谁是人,那这个机器就是有人类智能的。

    人工智能的另一个重要标志是人工智能这一学科的诞生,故事发生在1956年达特茅斯会议。会议上提出了这样的理论:“学习或者智能的任何其他特性都能被精确地描述,使得机器可以对其进行模拟。”这个论调很像机器学习算法在今日的应用,我们需要提取可以表示业务的特征,然后通过算法来训练模型,用这些模型对于未知结果的预测集进行预测。这次会议对于人工智能在更广阔的领域发展起到了推动作用。在之后的20年里,人类在人工智能,特别是相关的一些统计学算法的研究上取得了突破进展,比较有代表性的如神经网络算法,就是在这个时期诞生的。有了这些智能算法作支撑,更多的真实场景才可以在数学层面进行模拟,人类慢慢学会通过数据和算法的结合来进行预测,从而实现某种程度上的智能化应用。

    人工智能在发展过程中也遇到过非常多的挑战。20世纪70年代,随着理论算法的逐步成熟,人工智能的发展遇到了计算资源上的瓶颈。随着计算复杂度的指数性增长,20世纪70年代的大型机器无法负担这一切。同时,当时的互联网还处于发展初期,在数据积累方面也才刚刚起步。科学家往往没有足够的数据去训练模型,以图像印刷文字识别(Optical Character Recognition,OCR)为例。如果想针对某一场景训练一套精度较高的 OCR 模型,需要千万级的数据样本,这样的数据无论从数据获取、存储和计算成本来看,在当时都是不可能实现的。所以人工智能在之后很长的一段时间内都受限于计算能力以及数据量的不足。

    虽然经历了近20年的消沉时期,但是数据科学家对于人工智能的探索从未停止过。在 21 世纪,随着互联网的井喷式发展,越来越多的图像和文本数据被分享到网页上,停留在互联网巨头的服务器中,随之而来的是用户在网上的浏览记录和购物记录的收集。互联网已经变成了一个大数据仓库,许多网络大咖们纷纷将注意力投向数据挖掘领域,数据库成为了一座座金矿,数据科学家们开始用一行行公式和代码挖掘数据背后的价值,越来越多的公司做起了数据买卖。这些代码和公式就是本书的主角——机器学习算法。马云先生在很多年前的公开演讲上就已经明确表示过“阿里巴巴是一家数据公司”。数据的积累就像是一块块肥沃的土地,需要机器学习算法来在上面耕种,云计算就是挥舞在土地上的“锄头”。PB 级数据的积累使得人们不得不将单机计算迁移到多机,并行计算理论开始得到了广泛的应用,这就催生了云计算的概念。云计算,就是分布式计算,简单来讲就是将一个很复杂的任务进行拆解,由成百上千的机器各自执行任务的一个小模块,然后将结果汇总。

    以 Hadoop 为代表的开源分布式计算架构为更多的企业提供了分布式计算的技术支持。随着 Caffe 和 Tensorflow 等高效率的深度学习架构被开源,许多小型企业也具备了自主研发改进算法模型的能力。人工智能的应用开始普及,并且逐渐融入我们的生活当中。人们开始习惯了在 Google 上输入一个词条马上就能返回上千万条信息,通过刷脸或者指纹识别来进行支付,在淘宝购物时获得智能商品推荐。图像识别、文本识别和语音识别的发展给我们的生活带来了颠覆式的影响。2016年,Google关于人工智能的一场秀将人工智能产业带到了一个新高度。机器智能战胜人类围棋选手一直以来被认为是不可能实现的任务,但是 AlphaGo 成功地实现了这一点。AlphaGo 的成功不仅仅验证了深度学习和蒙特卡洛搜索算法的实践性,更加再一次印证了这样的事实,即人类不再是产生智能的唯一载体。任何机器,只要能够进行信息的接收、存储和分析,都是可以产生智能的。而这里面的关键因素是信息的量级以及算法的深度。

    人工智能的发展史,就是对于过往经验的收集和分析方法不断演绎的历史。在机器出现之前,人类只能通过别人的分享和自己的实践在很小的信息量级上来对事物进行判断,这种对于外界事物的认知受限于人的脑力和知识量。不同于人类的脑力,抽象意义上的机器可以被当成一个信息黑洞,吸收所有的信息,而且可以不分昼夜地对这些数据进行大维度的分析、归纳以及演绎,如果人类将这些机器学习后得到的认知进行分享,就形成了人工智能。于是,随着人类社会的发展,数据的积累以及算法的迭代将进一步推动整个人工智能的发展。

    正如前面所提到的,人工智能的发展体现在机器带动人类进行经验归纳以及思考,那么人工智能背后的引擎就是本书要介绍的重点——机器学习算法。机器学习是一种多学科交织的研究型学科,涉及生物学、统计和计算机等多个学科。机器学习算法发展到目前阶段,做的事情主要是将生活中的场景抽象成为数学公式,并且依靠机器的超强计算能力,通过迭代和演绎生成模型,对于新的社会问题进行预测或者分类操作。人工智能的发展史其实伴随着机器学习算法的进化史,正是随着机器学习算法的不断发展以及计算能力的提升,人工智能产业才得到了发展,进而达到了目前这种火热的局面。下面将对于机器学习算法在目前阶段所取得的一些成就进行一个介绍,方便大家了解机器学习算法的用途。

    1.2 发展现状

    上一节中回顾了人工智能的发展历程,不考虑计算能力等硬件条件的限制,当今世界的人工智能可以总结为数据和智能算法的结合。通过对过往经验的分析得到实验模型,并且利用这种模型指导实际的业务。把人工智能看作一个人类大脑的话,里面的血液就是数据,而大脑里面的血管承载着数据的流转,可以看作是相关的机器学习算法。所以在介绍机器学习算法之前,大家不得不先了解一下大数据时代的特性,然后再针对当前数据爆炸的这种情况介绍机器学习算法的一些用途。

    1.2.1 数据现状

    21世纪注定是属于互联网的,在这个数字时代产生了很多新名词,这里边有云计算、电子商务和有共享经济。大数据也是互联网时代的产物,出现在报纸中、电视上、网页里。“大数据”已经成为信息时代的代名词,乃至于好多人还来不及认识它,就已经开始被它支配。什么是数据?客观世界存在的那一刻开始,数据就已经出现了,从宇宙中天体运动的速度、角度及天体的质量,到人类文明的产生、更迭和演进。数据无处不在,但是数据的价值在于如何采集和利用。

    正是受到互联网的驱动,人类开始采集和利用数据。对于大数据时代,我最深切的感触是大数据未来的版图清晰又模糊。清晰的是人们已经开始意识到数据是有价值的,并且已经开始采集数据,看看人们都做了什么?根据存储市场调研的最新报告,目前世界全年的数据保存量约合 50EB,这些数据来源于互联网、医疗健康、通信、公共安全以及军工等行业。接下来,我们来看看这些数据是如何产生的。

    以全球最大的 SNS 服务商 Facebook 为例。Facebook 现在的用户数达到9.5亿,这些用户的每一个行为,包括每一次通知、页面访问、查看朋友的页面,都会被Facebook 的服务器追踪,并且产生历史行为数据。而全世界9.5亿用户平均每个月在 Facebook 上花费的时间超过6.5个小时,产生的数据量大小超出人们的想象。Facebook 上每天可以产生 500TB 左右的数据量,我们来看看这些数据具体包括什么。人们每天分享 25 亿个内容条目,包括状态更新、墙上的帖子、图片、视频和评论,每天有 27 亿个“ like”操作,人们每天上传 3 亿张图片。

    虽然诸如 Facebook、Google 和 Alibaba 这样的国际互联网巨头已经开始积累数据,并且将数据进行分析来反哺业务。但是截止到今天,全世界每年保存下来的数据只占到数据产生总量的百分之一不到,其中可以被标记并且分析的数据更是连百分之十都不到。这种现状造成了两方面的瓶颈,一方面是数据产生和数据收集的瓶颈,另一方面是采集到的数据和能被分析的数据之间的瓶颈。

    针对数据产生和数据采集的瓶颈,其原因一方面是硬件存储成本的限制,但是随着硬盘技术的发展和产能的提升,这方面的缺陷正逐渐弱化。笔者认为,造成目前数据采集与数据生成失衡的主要原因是数据的采集缺乏标准。虽然,互联网公司对数据采集和标准制定方面已经形成了一套成熟的体系,如网站的点击行为、日志的收集等。但是对于更多行业,特别是传统行业来说,数据的采集方式还处于摸索当中,而且从目前来看,这样的摸索还将持续相当长的时间。尽管现在提倡互联网思维以及世界万物联网的思想,但是互联网对于采集数据的经验恐怕很难复制到传统行业。因为互联网行业对于数据采集存在天然的优势,互联网的数据都是托管在数据库里,以二进制的方式记录在硬盘中,只要稍作处理就可以形成一份质量较高的结构化数据。但是在传统行业,以建筑行业为例,数据产生于工地上一砖一瓦的堆砌,产生于工地的施工建设,这样的数据如何转成二进制来存储需要由新的标准来指定,而这种标准更多地受限于技术手段。如果我们的图像识别做得足够智能,拍一张照片就可以将工地的数据量化,这样可能就可以解决这种问题。对于传统行业的数据智能化进程可能还需要耐心的等待。

    数据采集方面还需要制定更多的标准以及技术的支持,但是数据的应用方面也存在不小的缺陷。如果目前世界上采集到的数据能被充分利用是足够颠覆生活的,可惜的是目前可以供分析的数据还只占很小的比例。造成这样的困境主要有两方面因素,一个是目前比较主流的机器学习算法都是监督学习算法,监督学习需要的数据源是打标过的数据,打标数据很多时候是依赖于人工标记。比如我们需要一份数据来训练模型进行电影推荐,除了已知的电影的特征数据以外,还需要一份打标的数据来表示电影的好看程度,有点像豆瓣的电影分数,这种数据很难通过计算机的计算直接生成,需要依赖于人工打标。人工打标的影响就是,一方面很难生成大量的标本(上千万样本的数据),设想一下1000万人坐到一个地方一起看一部电影再进行评分是多么浩大的一项工程。另一方面,人工打标的成本太高,目前有很多负责打标的第三方公司,打标服务往往在市场上可以卖到很高的价格。

    另一个导致可分析数据比例较低的因素是对于非结构化的数据处理能力较低。非结构化数据指的是文本或者图片、语音、视频这样的数据。这部分数据来自于用户在贴吧的评论、社交软件上的头像、直播平台上的视频展现等。虽然目前的科技水平已经具备了文本和图像方面的分析能力,但是在大批量处理和特征提取方面依然处于相对基础的阶段。以图像识别为例,目前比较成熟的包括人脸识别和指纹识别等,图像识别的特点是每种事物的识别需要训练相对应的模型,而这种模型需要大量的训练样本来提高精确率,一个成熟的模型通常需要千万级别的训练样例。人脸的数据是比较容易获取的,所以相应的模型比较容易训练,但是假如我们需要训练一个模型来识别某一款杯子,针对这一款杯子的训练数据是很难达到理想量级的,这也提高了特定场景下图像识别的门槛。

    互联网在不断发展,数据的生成也不会停下脚步。目前被广泛引用的互联网数据中心(International Data Corporation,IDC)和 EMC 联合发布的“2020年的数字宇宙”报告显示,到2020年全球数字宇宙将会膨胀到40000EB,均摊每个人身上是5200GB以上,这个数据量的数据将会如何被有效存储和应用,目前我们还不敢想象。不过可以肯定的是,数据会成为重要的资源,就像是水电煤一样,在大数据时代,特别是未来的数据爆发时代,数据一定会展现出更大的潜能,人类社会也会进入数据处理技术(Data Technology,DT)时代。

    1.2.2 机器学习算法现状

    之前讲了大数据,这里再讲机器学习就变得容易理解了。传统的机器工作模式是程序员向机器输入一连串的指令,可以理解为是代码,然后机器按照这些指令一步一步执行下去,结果通常是我们可以事先预料的。这种逻辑在机器学习里是走不通的,机器学习是指我们向机器(更准确地说是机器学习算法)中输入数据,然后机器会根据数据返回结果,这些结果是通过数据自我学习得到的,学习的过程通过算法来完成。我们可以这样来定义,机器学习方法是计算机利用已有的数据(经验)得出了某种模型,并利用这些模型预测未来的一种方法。这个过程其实与人的学习过程极为相似,只不过机器是一个可以进行大维度数据分析而且可以不知疲倦地学习的“怪兽”而已(见图1-3)。

    enter image description here

    图1-3 机器学习与人的不同

    机器学习跟模式识别、统计学习、数据挖掘、计算机视觉、语音识别和自然语言处理等领域都有着很深的联系。如今生活在这样的 DT 时代,随时随地都是机器学习的影子,通过机器对大数据进行分析而带来的人工智能应用,正在一点一点地改变人们的生活方式和思维方式。看到这里很多人都会发问:机器学习究竟能做什么?其实机器学习已经服务了我们生活的各个方面,下面以一个简单的购物场景来介绍机器学习是如何应用在我们的日常生活中的。

    现在是 2016 年,如果你还没有尝试过网上购物,那真的是落伍了。网上购物目前已经成了人们的生活方式。下面就简单地聊聊机器学习算法在购物行为中的应用。假设我们在餐厅吃饭,看到一个人的短袖体恤很漂亮,我们想买同款,但是又不好意思开口去问。那么我们可以先偷拍一张这个人的T恤的照片,然后拍立淘(见图1-4)就会显示出这件衣服的同款。

    enter image description here

    图1-4 拍立淘

    这里就用到了机器学习中的图像识别技术。但是往往与这件衣服相近的款式又非常的多,因此我们需要把这些款式按照一定的规则进行排序,这就涉及了机器学习算法模型的训练,通过这个模型,我们把所有的类似款式进行一个排名,最后就得出了最终的展示顺序。

    当然,更多的时候我们是通过键盘的输入来搜索商品的,但是如果犯懒,还可以选择通过语音的方式输入内容,这就是语音转文本的运用。在我们搜索一款产品之后,网页的边栏上会出现一些推荐列表,而且每个用户的推荐列表都是不同的,这就是所谓的千人千面。这个场景的实现依赖的是推荐系统后台的用户画像,而用户画像就是大数据和机器学习算法的典型应用,通过挖掘用户的特征,如性别、年龄、收入情况和爱好等特征,推荐用户可能购买的商品,做到个性化推荐。

    到了这一步,我们终于把商品放到了购物车里,开始下单。下单之前我们发现网银账户中的钱不够用了,想申请一些贷款。这个时候,我们发现有一个贷款额度,这个额度是如何计算的呢?这里面涉及金融风控的问题,而金融风控也是根据机器学习的算法来训练模型并且计算出来的。

    下单之后我们的商品就被安排配送了,目前除了少数边远地区,基本上5天之内就可以收到商品。这段时间包含了商品的包装、从库存发货到中转库存、从低级仓库到高级仓库配送、向下分发。这么多工序之所以能够在短时间内完成,是因为仓储在库存方面已经提前做了需求量预测,提前在可能的需求地附近备货,这套预测算法也是建立在机器学习算法基础之上的。

    我们的快递员拿到货物,打开地图导航,系统已经为他设计了配送的路径,这个路径避免了拥堵而且尽量把路线设计到最短距离,这也是通过机器学习算法来计算的。快递员走进门,我们拿到货物后,发现衣服的尺码不合适怎么办?打开客服,输入问题,然后我们发现可以瞬间得到回复,因为这名客服人员可能并不是真的“客服人员”,只是一个客服机器人而已。智能客服系统利用文本的语意分析算法,可以精准地确定用户的问题,并且给予相应问题的解答。同时,智能客服还可以对用户问题的语境进行分析,如果问题很严重需要赔偿,如:“你的产品害我坏肚子了”这样的问题会由客服机器人通过情感分析挑出来,交给专人处理。

    如上所述,笔者简单列举了机器学习在网上购物中的几大应用,这里面涉及了很多智能算法,包括模型的训练和预测、语义分析、文本情感分析、图像识别技术以及语音识别技术。我们可以看到,在网购这种最常见的场景下,机器学习算法几乎贯穿了全部流程。

    当然,我们还可以列举出非常多诸如上述例子,因为场景实在太多了,没有办法全部穷举出来,这里通过场景来切分把机器学习的一些高频场景列举如下。

    • 聚类场景:人群划分和产品种类划分等。
    • 分类场景:广告投放预测和网站用户点击预测等。
    • 回归场景:降雨量预测、商品购买量预测和股票成交额预测等。
    • 文本分析场景:新闻的标签提取、文本自动分类和文本关键信息抽取等。
    • 关系图算法:社交网络关系(Social Network Site,SNS)网络关系挖掘和金融风险控制等。
    • 模式识别:语音识别、图像识别和手写字识别等。

    上面列举的应用只是机器学习算法应用场景中的一小部分,其实随着数据的积累,机器学习算法是可以渗透到各行各业当中,并且在行业中发生巨大的作用。随着数据智能、数据驱动等思想的传播,机器学习算法正在成为一种普世的基础能力向外输出。我们可以预见未来随着算法和计算能力的发展,机器学习应该会在金融、医疗、教育、安全等各个领域有更深层次的应用。笔者特别期待机器学习算法在破解基因密码以及癌症攻破方面可以取得突破,同时无人车、增强现实(Augmented Reality,AR)等新概念、新技术的发展也需要依赖于机器学习算法的发展。相信未来,机器学习算法会真正做到颠覆生活改变人类命运。

    第01章:机器学习概述(下)

    1.3 机器学习基本概念

    在开始机器学习的算法流程介绍之前,因为机器学习是一个多学科交叉的学科,有很多类似于统计学的概念,但是在叫法上与传统的统计学又有一定的区别,我们需要了解一些机器学习相关的基本概念,因为如果不明确这些概念的话,对于一些文献的阅读和理解会构成障碍。下面通过这一节的介绍帮助大家对于基础的机器学习名词和概念进行了解,首先介绍一下机器学习的基本流程,然后针对机器学习涉及的数据、算法和评估这3个方面用到的基础概念进行介绍。

    1.3.1 机器学习流程

    机器学习的过程就是一个数据流转、分析以及得到结果的过程,在使用的过程中很多人花了很多时间在算法的选择或者调优上,但其实机器学习的每一个步骤都是至关重要的,介绍算法的具体实现的资料已经比较丰富了,笔者希望花更多的篇幅来介绍数据的处理和整个机器学习流程的串联。

    机器学习的整个流程大致可以分为6个步骤,整个流程按照数据流自上而下的顺序排列,分别是场景解析、数据预处理、特征工程、模型训练、模型评估、离线/在线服务(见图1-5),下面来逐一介绍下这些步骤的基本功能。

    enter image description here

    图1-5 数据挖掘流程

    (1)场景解析。场景解析就是先把整个业务逻辑想清楚,把自己的业务场景进行一个抽象,例如我们做一个广告点击预测,其实是判断一个用户看到广告是点击还是不点击,这就可以抽象成二分类问题。然后我们根据是不是监督学习以及二分类场景,就可以进行算法的选择。总的来说,场景抽象就是把业务逻辑和算法进行匹配。

    (2)数据预处理。数据预处理主要进行数据的清洗工作,针对数据矩阵中的空值和乱码进行处理,同时也可以对整体数据进行拆分和采样等操作,也可以对单字段或者多字段进行归一化或者标准化的处理。数据预处理阶段的主要目标就是减少量纲和噪音数据对于训练数据集的影响。

    (3)特征工程。特征工程是机器学习中最重要的一个步骤,这句话一点都没有错。特别是目前随着开源算法库的普及以及算法的不断成熟,算法质量并不一定是决定结果的最关键因素,特征工程的效果从某种意义上决定了最终模型的优劣。通过一个例子说明一下特征工程的作用,2014 年某互联网巨头举办了一场大数据竞赛,参赛队伍在 1000 个以上,到最后,这里面几乎所有的参赛队伍都用了相同的一套算法,因为算法的优劣是比较容易评判的,不同算法的特性是不一样的,而且可供选择的算法种类是有限的。但是特征的选取和衍生却有极大的不定性,100 个人眼中可能有 100 种不同的特征,所以这种大赛到了后期,往往大家比拼的就是特征选取的好坏。在算法相对固定的情况下,可以说好特征决定了好结果。

    (4)模型训练。如图1-6所示的“逻辑回归二分类”组件表示的是算法训练过程,训练数据经过了数据预处理和特征工程之后进入算法训练模块,并且生成模型。在“预测”组件中,读取模型和预测集数据进行计算,生成预测结果。

    enter image description here

    图1-6 模型训练

    (5)模型评估。机器学习算法的计算结果一般是一个模型,模型的质量直接影响接下来的数据业务。对于模型的成熟度的评估,其实就是对于整套机器学习流程的评估。

    (6)离线/在线服务。在实际的业务运用过程中,机器学习通常需要配合调度系统来使用。具体的案例场景如下:每天用户将当日的增量数据流入数据库表里,通过调度系统启动机器学习的离线训练服务,生成最新的离线模型,然后通过在线预测服务(通常通过 Restful API,发送数据到服务器的算法模型进行计算,然后返回结果)进行实时的预测。具体架构如图1-7所示。

    enter image description here

    图1-7 机器学习服务架构

    利用这种架构就实现了离线训练和在线预测的结合,串联了从离线到在线的整个业务逻辑。

    1.3.2 数据源结构

    前面已经介绍了机器学习的基本流程,下面将针对机器学习的数据结构进行介绍。如果把机器学习算法比作一个数据加工场,那么进入工厂的数据就是被算法用来加工的原材料,机器学习算法需要的数据是什么样结构的呢?如果经常关注大数据相关的文章,基本会听说过“结构化数据”和“非结构化数据”这两个词,当然这里面还能衍生出“半结构化数据”,下面分别介绍一下这几种数据的结构。

    (1)结构化数据。结构化数据是指我们在日常数据库处理中经常看到的日志类数据结构,是以矩阵结构存储在数据库中的数据,可以通过二维表结构来显示,如图1-8所示。

    enter image description here

    图1-8 结构化数据示例

    结构化数据主要由两个部分组成,一个部分是每个字段的含义,也就是图1-8中的 age、sex、cp 等字段头,另一个部分是每个字段的具体数值。通常来讲,机器学习算法处理的数据都是结构化的数据,因为机器学习需要把数据带入矩阵去做一些数学运算,结构化数据原生是以矩阵形态存储的,所以机器学习算法通常是只支持结构化数据的。

    结构化数据中还有两个非常重要的概念需要介绍一下,即特征(Feature)和目标列(Label)。这是机器学习算法中最常出现的两个名词,其中特征表示的是数据所描述对象的属性,如用一组数据来形容人,那么这个人的身高、体重、性别和年龄都是特征。在结构化数据的数据集中,每一列数据通常就对应一个特征。

    目标列表示的是每一份数据的打标结果,因为前面也介绍过,机器学习的原理其实是从历史数据中来学习经验,目标列表示的是这一组数据的结果。例如,我们想通过一份体检数据来预测对象是否有心脏病,需要先通过成千上万份的训练数据来生成模型,这成千上万份的训练数据需要打标,也就是说机器要事先知道什么样体检指标的人患病了,什么样的人没有患病,这样才能学习出预测模型。通过一个例子来说明,如图1-9所示为一份心脏病预测需要的数据结果,其中框起来的字段表示的是对象是否患病,这一列是目标列。其他3个字段 age、sex 和 cp 描述的是对象的特征,是特征列。

    (2)半结构化数据。半结构化数据是指按照一定的结构存储,但不是二维的数据库行存储形态的数据。比较典型的半结构化数据就是 XML 扩展名的存储数据,如图1-10所示。

    enter image description here

    图1-9 目标列说明

    enter image description here

    图1-10 半结构化数据

    另一种半结构化数据就是在数据表中,某些字段是文本型的,某些字段是数值型的。见表1-1。

    表1-1 半结构化数据

    IDOccupationIncome
    小李老师241
    小王厨师521
    小刘司机421
    小方运动员23636

    半结构化数据常用于一些数据的传递,但是在机器学习算法相关的应用方面还有一定距离,需要做数据转换把半结构化数据转为结构化数据来进行操作。

    (3)非结构化数据。非结构化数据的数据挖掘一直以来是机器学习领域的热点话题,特别是随着深度学习的发展,目前对于非结构化数据的处理似乎找到了方向。典型的非结构化数据就是图像、文本或者是语音文件。这些数据不能以矩阵的结构存储,目前的做法也是通过把非结构化数据转为二进制存储格式,然后通过算法来挖掘其中的信息。第6章和第7章将详细介绍如何使用深度学习算法实现非结构化数据的处理。

    以上就是对于真实业务场景下需要处理的3类数据结构的介绍。机器学习算法对于结构化数据的支持是比较好的,对于半结构化数据和非结构化数据,在真实的业务场景下,通常是先把这两类数据做转化,然后才通过算法来进行数据挖掘。关于非结构化数据转为结构化数据的方法在第4章也有相关介绍。

    1.3.3 算法分类

    上面对于机器学习的流程和数据源结构都进行了介绍,下面对于算法的分类进行一个简单的说明。机器学习算法包含了聚类、回归、分类和文本分析等几十种场景的算法,常用的算法种类为 30 种左右,而且还有很多的变形,我们将机器学习分为 4 种,分别是监督学习、无监督学习、半监督学习和增强学习。

    (1)监督学习。监督学习(Supervised Learning),是指每个进入算法的训练数据样本都有对应的期望值也就是目标值,进行机器学习的过程实际上就是特征值和目标队列映射的过程。例如,我们已知一只股票的历史走势以及它的一些公司盈利、公司人数等信息,想要预测这只股票未来的走势。那么在训练算法模型的过程中,就是希望通过计算得到一个公式,可以反映公司盈利、公司人数这些信息对于股票走势的影响。通过过往的一些数据的特征以及最终结果来进行训练的方式就是监督学习法。监督学习算法的训练数据源需要由特征值以及目标队列两部分组成。

    如图1-11所示,ifhealth 是目标队列,age、sex 和 cp 为特征队列,这就是一个典型的监督学习的训练数据集。因为监督学习依赖于每个样本的打标,可以得到每个特征序列映射到的确切的目标值是什么,所以常用于回归以及分类场景。常见的监督学习算法见表1-2。

    表1-2 监督学习

    分类算法

    K 近邻、朴素贝叶斯、决策树、随机森林、GBDT 和支持向量机等

    回归算法

    逻辑回归、线性回归等

    监督学习的一个问题就是获得目标值的成本比较高。例如,我们想预测一个电影的好坏,那么在生成训练集的时候要依赖于对大量电影的人工标注,这样的人力代价使得监督学习在一定程度上是一种成本比较高的学习方法。如何获得大量的标记数据一直是监督学习面临的一道难题。

    enter image description here

    图1-11 监督学习

    (2)无监督学习。无监督学习(Unsupervised Learning),学习上面讲的监督学习的概念之后,其实无监督学习就比较好理解了。无监督学习就是指训练样本不依赖于打标数据的机器学习算法。既然是没有目标队列,也就缺少了特征环境下的最终结果,那么这样的数据可能对一些回归和分类的场景就不适合了。无监督学习主要是用来解决一些聚类场景的问题,因为当我们的训练数据缺失了目标值之后,能做的事情就只剩下比对不同样本间的距离关系。常见的无监督学习算法见表1-3。

    表1-3 半监督学习

    聚类算法

    K-Means、DBSCAN 等

    推荐算法

    协同过滤等

    相较于监督学习,无监督学习的一大好处就是不依赖于打标数据,在很多特定条件下,特别是打标数据需要依靠大量人工来获得的情况下可以尝试使用无监督学习或者半监督学习来解决问题。

    (3)半监督学习。半监督学习(Semi-supervised Learning),是最近几年逐渐开始流行的一种机器学习种类。上文中也提到,在一些场景下获得打标数据是很耗费资源的,但是无监督学习对于解决分类和回归这样场景的问题又有一些难度。所以人们开始尝试通过对样本的部分打标来进行机器学习算法的使用,这种部分打标样本的训练数据的算法应用,就是半监督学习。目前很多半监督学习算法都是监督学习算法的变形,本书将介绍一种半监督学习算法——标签传播算法。其实目前半监督算法已经有很多的应用了,推荐大家去深入了解。

    (4)强化学习。强化学习(Reinforcement Learning),是一种比较复杂的机器学习种类,强调的是系统与外界不断地交互,获得外界的反馈,然后决定自身的行为。强化学习目前是人工智能领域的一个热点算法种类,典型的案例包括无人汽车驾驶和阿尔法狗下围棋。本书介绍的分词算法隐马尔科夫就是一种强化学习的思想。

    上面就是关于监督学习、无监督学习、半监督学习和强化学习的一些介绍。监督学习主要解决的是分类和回归的场景,无监督学习主要解决聚类场景,半监督学习解决的是一些打标数据比较难获得的分类场景,强化学习主要是针对流程中不断需要推理的场景。本书对于这4类机器学习算法都有介绍,具体的分类见表1-4,方便大家有针对性的学习。

    表1-4 算法分类

    监督学习

    逻辑回归、K 近邻、朴素贝叶斯、随机森立、支持向量机

    无监督学习

    K-means、DBSCAN、协同过滤、LDA

    半监督学习

    标签传播

    强化学习

    隐马尔可夫

    1.3.4 过拟合问题

    机器学习模型训练的过程中会遇到非常多的问题,如参数或者梯度的设置不合理、数据的清洗不够彻底,但是如果问一个数据挖掘工程师什么问题是数据挖掘领域中最常见的问题,他的答案八成是“过拟合”,这也是为什么我们要单独拿出一小节来讲一下数据挖掘过程中的过拟合问题。

    过拟合(Over-fitting),从字面的意义上理解的话就是过度拟合的意思,常发生在线性分类器或者线性模型的训练和预测当中。过拟合现象是在数据挖掘过程中经常会遇到的问题,如通过训练集训练了一个模型,这个模型对于训练集的预测准确率很高,可以达到95%,但是我们换一份数据集进行预测,发现准确率只有30%,出现这种情况的原因很有可能是训练的过拟合现象。

    过拟合的原理就是机器学习算法过度学习了训练集数据,听上去有点难以理解,下面通过一个例子进行解释。假设我们有一组二维数据展示在坐标系当中,我们想对这个二维数据进行一个线性的回归训练。如果拟合出的曲线是如图 1-12 所示的虚线,其实是一种欠拟合(underfitting)的形式,曲线拟合的并不理想,因为并没有通过回归算法很好地拟合出一种符合数据分布的曲线。

    enter image description here

    图1-12 线性拟合曲线一

    我们再来看看图1-13。

    enter image description here

    图1-13 线性拟合曲线二

    如果最终拟合出来的是如图1-13所示情况,就是一种比较理想的状况,我们看到最终的曲线走势已经几乎刻画了数据的分布,这种曲线是比较理想的。那么什么是过拟合呢?我们来看下图1-14。

    enter image description here

    图1-14 线性拟合曲线三

    如图1-14所示这种情况是典型的过拟合,图中的曲线已经跟数据分布完全一致。那么有的人可能会问,做线性回归的目的不就是为了找到最符合数据走向的曲线么,为什么当我们拿到的结果跟数据走向完全匹配的时候反而不好呢?这是因为训练线性回归曲线或者线性分类器的目的是要对于其他数据集进行分类或者预测。如果在针对训练集做曲线拟合的时候做得过于“完美”,那么当我们针对于其他预测集进行预测的时候,这套模型很有可能会失准,因为这套模型在训练的时候过度地接近于训练集的特征,缺乏鲁棒性。所以在机器学习训练过程中,100%的拟合训练集数据并不一定是好的。

    通过前面的介绍,我们已经明白了过拟合发生的现象和原理,那么究竟是什么原因导致了过拟合问题的出现呢?原因可以总结为以下几种。

    • 训练数据集样本单一,如训练样本只有白色鸭子的数据,我们拿生成的模型去预测黑鸭子肯定是不对的。所以在做训练的过程中,要求训练样本要尽可能地全面,覆盖所有的数据类型。
    • 训练样本噪音数据干扰过大,噪音数据是指数据集中的干扰数据。过多的噪音数据会导致模型记录了很多噪音特征,忽略了输入和输出之间的关系。
    • 模型过于复杂,模型参数太多往往也是造成过拟合现象的一个重要因素。所以一个成熟的模型不一定是非常复杂的,而是要求模型对于不同的数据集都有稳定的输出表现。

    针对过拟合这样的常见性问题,其实已经有了很多预防和解决的办法如下所示。

    • 在训练和建立模型的时候,一定要从相对简单的模型开始,不要一上来就把模型调得非常复杂、特征非常多,这样很容易造成过拟合现象的发生。而且当模型过于复杂而造成过拟合现象发生之后,也比较难于排查具体的问题出在哪一部分特征。
    • 数据的采样,一定要尽可能地覆盖全部数据种类。另外,数据需要经过清洗后再进行算法训练,否则如果混入了大量噪声数据,会加大过拟合问题发生的概率。
    • 在模型的训练过程中,我们也可以利用数学手段预防过拟合现象的发生,可以在算法中添加惩罚函数来预防过拟合,这里如果想详细了解可以参考正则化 L1、L2 规范,本书就不对这部分内容展开来讲了。

    以上对于过拟合问题进行了基本的描述,而且也介绍了问题发生的原因以及预防的方法。因为过拟合问题是在使用机器学习算法的过程中非常有可能碰到的问题,所以掌握这方面的知识以及应对手段是非常重要的。希望通过本节的学习,大家可以在模型训练当中有意识地避免过拟合问题的发生。

    1.3.5 结果评估

    前文介绍了一些机器学习算法在具体数据挖掘过程中可能会遇到的一些概念和名词,我们知道机器学习算法的最终目的是生成模型,模型的好坏需要通过一些指标来评估,现在就来介绍一下在机器学习算法中可能用到的一些关于结果评估的概念。常用到的概念可能包括精确率、召回率、F1 值、ROC 和 AUC 几种,看上去概念有点多,因为每个指标都是从不同维度来对结果进行评估,下面将分别介绍这几个概念的含义。

    (1)精确率、召回率、F1 值。因为精确率(Precision)、召回率(Recall)和 F1(F-Measure)值常被放在一起作比较,所以把相关的这3个指标放在一起介绍。计算这3个指标还需要先了解下 TP、TN、FP 和 FN 这4个指标的含义。

    • TP(True Positive):本来是正样本,被模型预测为正样本。
    • TN(True Negative):本来是负样本,被模型预测为负样本。
    • FP(False Positive):本来是负样本,被模型预测为正样本。
    • FN(False Negative):本来是正样本,被模型预测为负样本。

    上面这4个概念读上去有点难以理解,我们通过一个实际的案例讲解一下。例如有一个预测集,里面有500个女生和100个男生,需要通过机器学习生成模型,尽可能地区分数据集中的女生,所以女生是正样本,假如我们最终的预测结果是70个女生和20个男生。下面计算精确率、召回率以及 F1 值,首先要计算 TP、TN、FP 和 FN 这4个值。在这个案例里面,TP 为本来是女生又被预测为女生的人数,所以 TP 的值为70;FP表示本来是男生被预测为女生的人数,FP 的值为20;FN 表示本来是女生但被预测为男生的人数,FN 的值为500−70=430。

    最终精确率、召回率、F1 值的公式如下。

    enter image description here

    通过上面的公式可以看出,其实精确率的概念通俗来讲就是模型在预测的时候正确的比例。召回率表示的是在预测到的正样例占全部正样例的比例。这可以看到精确率和召回率是对模型的两个维度的评估,前者评估的是准确性,后者评估的是覆盖率。当然在实际的模型评估中,我们希望精确率和召回率都尽可能高,但是实际上这两个指标是相互矛盾的,为了更均衡的评估精确率和召回率,我们创建了 F1 值。F1 值表达的是精确率和召回率的综合评估,现在很多的模型评估都是通过 F1 值来做,就是考虑到了 F1 值可以把这两个指标结合在一起来评估。

    (2)ROC 和 AUC。ROC(Receiver Operating Characteristic Curve)曲线是常用的二分类场景的模型评估算法曲线,ROC曲线的样例如图1-15所示。

    enter image description here

    图1-15 ROC 曲线

    图1-15中的齿状弧形曲线就是 ROC 曲线,这个曲线的横轴为上面提到的 FP 值,TP 值是纵轴。如何来评估模型的好坏呢?通过 ROC 曲线可以清晰地展示出来,只要是模型曲线越接近于左上角就说明模型的效果越好。通过 AUC 值来表示 ROC 曲线与横轴围起来的面积(也就是图1-15中有颜色覆盖的部分),这个 AUC 值越大表示模型的效果越好。AUC 的取值是0到1,通常大于0.5,当 AUC 的取值达到0.9以上时,证明这个模型的效果是比较不错的。

    上面介绍了 ROC 和 AUC 两个指标的概念,AUC 是通过 ROC 曲线计算出来的面积实现的。AUC 和 F1 值一样,都是通过一个数值来对于最终的结果进行评估的。ROC 的作用更多是通过对于曲线的光滑程度以及曲线的斜率来获取模型内包含的信息。

    1.4 本章小结

    本章作为全书的开篇章节,通过对于人工智能领域的发展历史引出了本书的主角——机器学习算法,其实机器学习算法已经贯穿了我们的日常生活,正是因为这些智能算法的普及,所以越来越多的人把目光瞄向了这一新生的技术。我们通过举例介绍了机器学习算法的发展现状,帮助读者梳理了这一学科的应用领域,另外通过对于一些基础概念的介绍,帮助初学者对于机器学习入门。有了上述背景,下面就正式开始对整个机器学习全流程的介绍。

    第02章:场景解析
    第03章:数据预处理(上)
    第03章:数据预处理(下)
    第04章:特征工程(上)
    第04章:特征工程(中)
    第04章:特征工程(下)
    第05章:机器学习算法——常规算法(上)
    第05章:机器学习算法——常规算法(中)
    第05章:机器学习算法——常规算法(下)
    第06章:机器学习算法——深度学习(上)
    第06章:机器学习算法——深度学习(下)
    第07章:常见机器学习工具介绍(上)
    第07章:常见机器学习工具介绍(中)
    第07章:常见机器学习工具介绍(下)
    第08章:业务解决方案(上)
    第08章:业务解决方案(中)
    第08章:业务解决方案(下)
    第09章:知识图谱(上)
    第09章:知识图谱(下)

    阅读全文: http://gitbook.cn/gitchat/geekbook/5a377733d7fd13649973b0dc

    展开全文
  • 作者 | Farhad Malik译者 | Monanfei责编 | 夕颜出品 | AI科技...为什么大量数据科学和机器学习的文章都围绕正态分布进行讨论?我决定写一篇文章,用一种简单易懂的方式来介绍正态分布。 在机器学习的世界中...

    https://www.toutiao.com/a6709997655394615815/

     

    机器学习中,正态分布为何如此重要?

     

    作者 | Farhad Malik译者 | Monanfei责编 | 夕颜出品 | AI科技大本营(ID: rgznai100)

    为什么正态分布如此特殊?为什么大量数据科学和机器学习的文章都围绕正态分布进行讨论?我决定写一篇文章,用一种简单易懂的方式来介绍正态分布。

    在机器学习的世界中,以概率分布为核心的研究大都聚焦于正态分布。本文将阐述正态分布的概率,并解释它的应用为何如此的广泛,尤其是在数据科学和机器学习领域,它几乎无处不在。

    我将会从基础概念出发,解释有关正态分布的一切,并揭示它为何如此重要。

     

    文章结构

     

    本文的主要内容如下:

    1. 概率分布是什么
    2. 正态分布意味着什么
    3. 正态分布的变量有哪些
    4. 如何使用 Python 来检验数据的分布
    5. 如何使用 Python 参数化生产一个正态分布
    6. 正态分布的问题

     

    简短的背景介绍

     

    1. 首先,正态分布又名高斯分布
    2. 它以数学天才 Carl Friedrich Gauss 命名
    正态分布又名高斯分布
    1. 越简单的模型越是常用,因为它们能够被很好的解释和理解。正态分布非常简单,这就是它是如此的常用的原因。
    因此,理解正态分布非常有必要。

     

    什么是概率分布?

     

    首先介绍一下相关概念。

    考虑一个预测模型,该模型可以是我们的数据科学研究中的一个组件。

     

    • 如果我们想精确预测一个变量的值,那么我们首先要做的就是理解该变量的潜在特性。
    • 首先我们要知道该变量的可能取值,还要知道这些值是连续的还是离散的。简单来讲,如果我们要预测一个骰子的取值,那么第一步就是明白它的取值是1 到 6(离散)。
    • 第二步就是确定每个可能取值(事件)发生的概率。如果某个取值永远都不会出现,那么该值的概率就是 0 。
    事件的概率越大,该事件越容易出现。
    • 在实际操作中,我们可以大量重复进行某个实验,并记录该实验对应的输出变量的结果。
    • 我们可以将这些取值分为不同的集合类,在每一类中,我们记录属于该类结果的次数。例如,我们可以投10000次骰子,每次都有6种可能的取值,我们可以将类别数设为6,然后我们就可以开始对每一类出现的次数进行计数了。
    • 我们可以画出上述结果的曲线,该曲线就是概率分布曲线。目标变量每个取值的可能性就由其概率分布决定。
    • 一旦我们知道了变量的概率分布,我们就可以开始估计事件出现的概率了,我们甚至可以使用一些概率公式。至此,我们就可更好的理解变量的特性了。概率分布取决于样本的一些特征,例如平均值,标准偏差,偏度和峰度。
    • 如果将所有概率值求和,那么求和结果将会是100%

     

    世界上存在着很多不同的概率分布,而最广泛使用的就是正态分布了。

     

    初遇正态分布

     

    我们可以画出正态分布的概率分布曲线,可以看到该曲线是一个钟型的曲线。如果变量的均值,模和中值相等,那么该变量就呈现正态分布。

     

    如下图所示,为正态分布的概率分布曲线:

     

    机器学习中,正态分布为何如此重要?

     

     

    理解和估计变量的概率分布非常重要。

    下面列出的变量的分布都比较接近正态分布:

     

    1. 人群的身高
    2. 成年人的血压
    3. 传播中的粒子的位置
    4. 测量误差
    5. 回归中的残差
    6. 人群的鞋码
    7. 一天中雇员回家的总耗时
    8. 教育指标

     

    此外,生活中有大量的变量都是具有 x % 置信度的正态变量,其中,x<100。

     

    什么是正态分布?

     

    正态分布只依赖于数据集的两个特征:样本的均值和方差。

    均值——样本所有取值的平均

    方差——该指标衡量了样本总体偏离均值的程度

    正态分布的这种统计特性使得问题变得异常简单,任何具有正态分布的变量,都可以进行高精度分预测。

    值得注意的是,大自然中发现的变量,大多近似服从正态分布。

     

    正态分布很容易解释,这是因为:

    1. 正态分布的均值,模和中位数是相等的。
    2. 我们只需要用均值和标准差就能解释整个分布。

     

    正态分布是我们熟悉的正常行为

     

    为何如此多的变量都大致服从正态分布?

     

    这个现象可以由如下定理理解释:当在大量随机变量上重复很多次实验时,它们的分布总和将非常接近正态分布。

     

    由于人的身高是一个随机变量,并且基于其他随机变量,例如一个人消耗的营养量,他们所处的环境,他们的遗传等等,这些变量的分布总和最终是非常接近正态的。

     

    这就是中心极限定理

     

    本文的核心:

    我们从上文的分析得出,正态分布是许多随机分布的总和。 如果我们绘制正态分布密度函数,那么它的曲线将具有以下特征:

     

    机器学习中,正态分布为何如此重要?

     

    如上图所示,该钟形曲线有均值为 100,标准差为1:

     

    • 均值是曲线的中心。 这是曲线的最高点,因为大多数点都是均值。
    • 曲线两侧的点数相等。 曲线的中心具有最多的点数。
    • 曲线下的总面积是变量所有取值的总概率。
    • 因此总曲线面积为 100%

     

    机器学习中,正态分布为何如此重要?

     

     

    更进一步,如上图所示:

     

    • 约 68.2% 的点在 -1 到 1 个标准偏差范围内。
    • 约 95.5% 的点在 -2 到 2 个标准偏差范围内。
    • 约 99.7% 的点在 -3 至 3 个标准偏差范围内。

     

    这使我们可以轻松估计变量的变化性,并给出相应置信水平,它的可能取值是多少。例如,在上面的灰色钟形曲线中,变量值在 99-101 之间的可能性为 68.2%。

    正态概率分布函数

    正态概率分布函数的形式如下:

     

    机器学习中,正态分布为何如此重要?

     

     

    概率密度函数基本上可以看作是连续随机变量取值的概率。

    正态分布是钟形曲线,其中mean = mode = median。
    • 如果使用概率密度函数绘制变量的概率分布曲线,则给定范围的曲线下的面积,表示目标变量在该范围内取值的概率。
    • 概率分布曲线基于概率分布函数,而概率分布函数本身是根据诸如平均值或标准差等多个参数计算的。
    • 我们可以使用概率分布函数来查找随机变量取值范围内的值的相对概率。 例如,我们可以记录股票的每日收益,将它们分组到适当的集合类中,然后计算股票在未来获得20-40%收益的概率。

     

    标准差越大,样品中的变化性越大。

    如何使用 Python 探索变量的概率分布

     

    最简单的方法是加载 data frame 中的所有特征,然后运行以下脚本(使用pandas 库):

    DataFrame.hist(bins=10)
    #Make a histogram of the DataFrame.
    

     

    该函数向我们展示了所有变量的概率分布。

     

    变量服从正态分布意味着什么?

     

    如果我们将大量具有不同分布的随机变量加起来,所得到的新变量将最终具有正态分布。这就是前文所述的中心极限定理。

     

    服从正态分布的变量总是服从正态分布。 例如,假设 A 和 B 是两个具有正态分布的变量,那么:

     

    • A x B 是正态分布

    • A + B 是正态分布

     

    因此,使用正态分布,预测变量并在一定范围内找到它的概率会变得非常简单。

     

    样本不服从正态分布怎么办?

     

    我们可以将变量的分布转换为正态分布。

    我们有多种方法将非正态分布转化为正态分布:

    1.线性变换

    一旦我们收集到变量的样本数据,我们就可以对样本进行线性变化,并计算Z得分:

     

    1. 计算平均值
    2. 计算标准偏差
    3. 对于每个 x,使用以下方法计算 Z:

     

     

    机器学习中,正态分布为何如此重要?

     

     

    2.使用 Boxcox 变换

    我们可以使用 SciPy 包将数据转换为正态分布:

     

     

    •  
    scipy.stats.boxcox(x, lmbda=None, alpha=None)
    3.使用 Yeo-Johnson 变换
    

    另外,我们可以使用 yeo-johnson 变换。 Python 的 sci-kit learn 库提供了相应的功能:

    sklearn.preprocessing.PowerTransformer(method=’yeojohnson’,standardize=True, copy=True)
    

    正态分布的问题

    由于正态分布简单且易于理解,因此它也在预测研究中被过度使用。 假设变量服从正态分布会有一些显而易见的缺陷。 例如,我们不能假设股票价格服从正态分布,因为价格不能为负。 因此,我们可以假设股票价格服从对数正态分布,以确保它永远不会低于零。

     

    我们知道股票收益可能是负数,因此收益可以假设服从正态分布。

    假设变量服从正态分布而不进行任何分析是愚蠢的。

    变量可以服从Poisson,Student-t 或 Binomial 分布,盲目地假设变量服从正态分布可能导致不准确的结果。

     

    总结

     

    本文阐述了正态分布的概念和性质,以及它如此重要的原因。

    希望能帮助到你。

    原文链接:http://bit.ly/2NyetFz

    展开全文
  • 机器学习、深度学习、强化学习和人工智能的关系是什么?人工智能的学习算法大家庭1. 机器学习的定义2. 深度学习的定义3. 强化学习的定义4. 迁移学习的定义5. 人工智能的定义6. 机器学习 VS 深度学习 VS 强化学习 VS ...
  • 机器学习极简入门课

    千次阅读 2018-07-03 02:45:07
    本达人课针对机器学习初学者,从机器学习、深度学习最基本的原理及学习意义入手,以模型为驱动,带领大家吃透几个最经典的机器学习模型——学习这些模型的原理、数学推导、训练过程和优化方法。 本课为每个模型提供...
  • 机器学习入门——机器学习基础概念

    千次阅读 多人点赞 2020-03-15 17:02:02
    包括机器学习的主要任务,机器学习的分类等。 文章目录引言用到的数据机器学习的主要任务分类回归 用到的数据 鸢尾花(IRIS)是比较常见的在我们学习机器学习时用到的数据。数据来源: ...
  • 我应该使用哪种机器学习算法?

    千次阅读 2018-12-16 14:56:05
    我应该使用哪种机器学习算法? 该资源主要面向初学者到中级数据科学家或分析师,他们有兴趣识别和应用机器学习算法来解决他们感兴趣的问题。 当面对各种各样的机器学习算法时,初学者提出的一个典型问题是“我应该...
  • 十个机器学习的成功案例

    万次阅读 2018-12-19 19:52:43
    导读: 人工智能(AI)和机器学习(ML)(人们曾认为这两者是公司不切实际的项目)正在成为主流。 人工智能(AI)和机器学习(ML)(人们曾认为这两者是公司不切实际的项目)正在成为主流。 有越来越多的企业正在...
  • 机器学习(概述一)——定义

    千次阅读 2019-05-28 16:18:17
    机器学习(Machine Learning, ML)是一门多领域交叉学科,涉及概率论、统计学、逼近论、凸分析、算法复杂度理论等多门学科。它是人工智能的核心,是使计算机具有智能的根本途径,其应用遍及人工智能的各个领域,它主要...
  • Python 机器学习经典实例

    万次阅读 多人点赞 2018-04-12 10:44:15
    本书首先通过实用的案例介绍机器学习的基础知识,然后介绍一些稍微复杂的机器学习算法,例如支持向量机、极端随机森林、隐马尔可夫模型、条件随机场、深度神经网络,等等。 用最火的 Python 语言、通过各种各样的...
  • 人工智能、机器学习与深度学习这几个关键词时常出现在媒体新闻中,并错误地被认为是等同的概念。本文将介绍人工智能、机器学习以及深度学习的概念,并着重解析它们之间的关系。本文将从不同领域需要解决的问题入手,...
  • 机器学习简介

    万次阅读 2018-10-17 10:09:40
    本文的目的是能让即便完全不了解机器学习也能了解机器学习,并且上手相关的实践。这篇文档也算是EasyPR开发的番外篇,从这里开始,必须对机器学习了解才能进一步介绍EasyPR的内核。当然,本文也面对一般读者,...
  • 通过机器学习,现在给了一幅“白色”“眼睛蓝色”“有铃铛”的动物,让计算机判断是不是猫 不同机器学习算法,在面对上述情况时,可能得到不同的结果。一部分可能判断这只动物是猫,一部分可能判断不是猫 为什么...
  • 机器学习-数据处理

    千次阅读 2018-06-17 22:38:39
    1.什么机器学习机器学习是从数据中自动分析获得规律(模型),并利用规律对未知数据进行预测。2.数据类型离散型数据:由记录不同类别个体的数目所得到的数据,又称计数数据,所有这些数据全部都是整数,而且不能再...
  • 导读:人工智能的快速发展,带动了相关技术的繁荣。近些年,国内外的科技公司对机器学习人才都有大量需求。怎样入行机器学习?本文带你从0开始学起。作者:星环科技人工智能平台团队来源:大数据DT...
  • 机器学习什么

    千次阅读 2018-06-27 11:35:32
    本文的目的是能让即便完全不了解机器学习也能了解机器学习,并且上手相关的实践。这篇文档也算是EasyPR开发的番外篇,从这里开始,必须对机器学习了解才能进一步介绍EasyPR的内核。当然,本文也面对一般读者,不...
  • 什么是人工智能、机器学习、深度学习、数据挖掘以及数据分析?本文尝试给出自己的理解和认知。
  • 编译 | AI 科技大本营参与...由于机器学习和产品管理之间的交集是一个相当丰富的话题,一篇文章不足以详细地阐述所有有关的内容,因此我打算把它分成三部分来分别说明:第一部分——问题定义:什么样机器学习产品是最
  • 机器学习和深度学习概念入门

    万次阅读 多人点赞 2017-06-03 11:27:28
    作者:谭东  对于很多初入学习人工智能的... 人工智能包括了机器学习机器学习包括了深度学习,他们是子类和父类的关系。  先看什么是人工智能。人工智能(Artificial Intelligence),英文缩写为AI。是计算机
  • 机器学习中的方法技术与应用场景

    千次阅读 2019-01-17 08:24:56
    关于机器学习我们到底能做什么?怎么做?有哪些方法和技术?下面的一些解释可能对你有用。 无论是网络中,技术社区中,或者在职场中,你可能越来越多的听到机器学习这个名词,它是人工智能的一个子集或者说一个分支...
  • 什么边缘计算会在这种嵌入式机器学习的范式下发挥重要作用呢?   1.数据传输带宽和任务响应延迟 :在移动场景下,机器学习任务在需要大量的数据进行训练的同时又需要更短的响应延迟。以自动驾驶为例,比较...
  •  为什么机器学习需要大量数据,到底有多少数据才是足够的数据,我们再看一下机器学习新动向,怎么通过跟机交互能够获得更多数据,这个包括日志数据挖掘、重包,还有对进比较热门的 人机协同计算 。最后我想介绍...
  • 什么机器学习

    千次阅读 多人点赞 2019-02-22 21:47:14
    当第一次试着编程时,我就爱上了这门艺术(是的,我相信编程既是科学又是艺术),。 我很快就迷上了如何通过设置逻辑规则和条件来控制程序的流程,if...... 我学习了代码的重复使用和设计模式。 我学会了用UML...
  • 1月10日,在青岛举行的2019国家智能产业峰会智能驾驶平行论坛上,孙振平研究员结合国内外机器学习相关技术在智能驾驶领域的研究现状和课题组近年来的一些研究成果,向与会人员分享了题为《机器学习在无人驾驶中的...
  • 机器学习

    千次阅读 2017-07-14 12:39:25
    机器学习是人工智能的一个分支。人工智能的研究是从以“推理”为重点到以“知识”为重点,再到以“学习”为重点,一条自然、清晰的脉络。显然,机器学习是实现人工智能的一个途径,即以机器学习为手段解决人工智能中...
  • 如何选择最佳机器学习算法?

    千次阅读 2021-01-21 19:05:53
    你能不能给我们说说,什么样的算法适合解决什么样的问题?” 咖哥回答 :“这很值得说一说。没有任何一种机器学习算法,能够做到针对任何数据集都是最佳的。通常,拿到一个具体的数据集后,会根据一系列的考量因素...
  • 量化中的机器学习简述

    千次阅读 2019-06-24 17:54:20
    特别是机器学习,在最近几年大出风头,无人驾驶汽车,阿尔法狗战胜人类最强棋手,演唱会人脸识别抓捕逃犯,手机多国语言在线翻译,这一切一切无不给我们带来深深的震撼,可以说人工智能将在不久的未来引来巨大的爆发...
  • 机器学习平台建设

    万次阅读 多人点赞 2018-09-13 17:53:43
    本文从机器学习平台的架构开始,再到具体的功能,然后从需求的角度带给读者思考,找到合适的机器学习平台建设之路。最后,推荐了微软开源开放的机器学习平台OpenPAI,是可私有部署的机器学习训练平台。 本文不少...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 122,792
精华内容 49,116
关键字:

机器学习适合什么样的人