《java机器学习》_sample


·.‘ 回国固罢噩围 i里计且有 Java 机器子习 Machine Learning in Java [斯洛文尼亚] Bostjan Kaluza 著 武传:每译 人民邮电出版社 北京 图书在版编目 ( C I P ) 数据 Java 机器学习 /(斯洛文)博思蒂安 · 卡鲁扎著 武传海译.一北京 :人 民邮电出版社, 2017.9 (图灵程序设计丛书〉 ISBN 978 7 115 4668 0 -8 、 I .① J … II. ①博…②武… III. ① JAVA 语 言一程序 设计凹 . ① TP312 .8 中国版本图书馆 CIP 数据核宇( 2017 )第 202589 号 内容提要 本书介绍如 何使用 Java 创 建并实现机器学习算法,既有基础知识,又提供实战案例。主要内容包括: 机器学习基本概念、原理, Weka 、 Mahout 、 Spark 等常见机器学习库的用毡,各类机器 学习常见任务,包 括分类、预测预 报、购物 篮分析、检测异常、行为识别、图像识别以及文本分析。最后还提供了相关 Web 资源、各种技术研讨会议以及机器学习挑战赛等进阶所需内容。 本书适合机器学习入 门 者,尤其是想使用 J ava 机器学习库进行数据分析的读者 。 ’ 著 [斯洛文尼亚] Bostjan Kalufa 译 武传海 责任编辑 陈曦 责 任印制 彭志环 ’ 人民邮电出版社出版发行 北京市丰台区成寿寺路 l l 号 邮编 100164 电子邮件 3 I S@ptpress.com.cn 网址 http ://www .ptpre ss.co m.cn 三 河市海波印务有限公司印刷 ’ 开本 : 8 00 × 1000 1/ 16 印张 : l 1.5 字数: 272 千 字 2017 年 9 月第 l 版 印数 : I - 3 500 册 2017 年 9 月河北第 l 次印刷 著作权合同登记号 图字: 01 - 2017-5590 号 定价 : 49.00元 读者服务热线:( 010)51095 1 86转600 印装质量 热线:(010)81055316 反盗版热线:( 010)81055315 广告经营许可证:京东工商广登字 20170147 号 -""- 目 IJ E司 机器 学 习 是 人 工 智能的 一 个分 支 ,它在算法与数据的协助下,让计算机像人类 一 样学习和行 动 。 针对给定的数据 集 ,机器 学 习算法会 学 习数据的不同属性,并对以后可能遇到的数据属性进 行 推断 。 本书教你如何使用 Java创建并实现机器学习算法,既有基础概念的讲解,也有示例供你学习 。 当然 ,还会介绍 一 些常用的机器 学 习库,如 Weka 、 Apache Mahout 、 Mallet 等 。 阅读本书后,你 将懂 得如向为特定问题选择合适的机器学习方法,以及如何比较与评估不同技术的优劣 。 书中还 会讲解性能提升技术,包括输入预处理以及合并不同方法产生的输出 。 我们将探讨使用 Java库进行机器学习的技术细节,并配有清晰易懂的示例 。 同时,你还将 学 习 如何准备 要 分析的数据 、 如何选择机器学习方法,以及如何衡量流程的有效性 。 本书内容 第 1 章 机器学习应用快速入门 。 讲解机器学习的基础知识 、 常见概念 、 原理,以及机器 学 习 的 应 用流 程 。 第 2 章 面向机器学习的 Java 库与平台 。 介绍各种机器学习 专 用的 Java 库与平台 。 你将了解 每个 库提供的功能,以及可以用于解决哪些问题 。 涉及的机器 学 习库有 Weka 、 Java-ML , Apache Mahout 、 Apache Spark 、 Deepleaming4j 和 Mallet 。 第 3 章 基本算法 一一-分类、回归和聚类 。 从最基本的机器学习任务入手,使用小巧又易懂 的数据 集 ,介绍分类 、 回归和聚类的关键算法 。 第 4 章 利用集成方法预测客户关系 。 深入研究 一 个真实的客户营销数据库,目标是对可能 流失 以及可进行追加推销与交叉推销的客户进行预测 。 我们将使用集成方法解决这个问题,并且 采 用在 KDDCup 竞赛中获胜的解决方案 。 第 5 章 关联分析 。 讲解如何使用关联规则挖掘分析共生关系 。 我们将通过“购物篮分析” 了 解顾客的购买行为,并讨论如何将这种方法应用到其他领域 。 、h 、民 2 前 __,_ D 第 6 章 使用 Apache Mahout 常 ij{f 推荐引 擎 。 讲解 一 些基本概念,帮助你了解推荐引擎原 理,然后利用 A p ac h e Ma h o u t 实现两个应用一一基于内容的过滤与协同推荐器 。 第 7 章 欺诈与异常检测 。 介绍异常和可疑模式检测的背景,然后讲解两个 实际应 用一一保 险索赔欺诈检测与网站流量异常检测 。 第 8 章 利用 Deeplearning4j 进行图像识别 。 介绍图像识别与基本的神经网络架构,然 后讨 论如何利用 D ee pl ea m i n g 4J库实现各种深度学习架构,以实现对于 写 体数 字 的识别 。 第 9 章 利用手机传感器进行行为识 别 。 借助传感器数据解决模式识别问题 。 这 一章介绍行 为识别过程,讲解如何使用 An dr oid设备收集数据,并提出 一 个分类模型以对 日常 生活行为进行 识别 。 第 10 章 利用 Mallet 进行文本挖掘 一一 主题模型与垃圾邮件 检测 。 讲解文本挖掘的基础知 识,介绍文本处理管道,演示如何将其应用于两个实际问题(主题 建模与文档分类) 。 第 11 章 机器学习进阶 。 这是全书最 后一章 ,提供关于如何部 署模型的实用建议,并进一步 给出提示,告诉你去哪里寻找更多资源、资料、场所和技术,以便深入了解机器学习 。 阅读前提 为了实际运行书中示例,你需要 一 台安装有 JDK 的个人计算机 。 所有能下载的示例与源代码 都假定你使用的是支持 Mave n (一个依赖管理与自动创建工具)与 Git (版本控制系统)的 Eclipse IDE 开发环境 。 各章示例依赖 We k a 、 D eep l eami n g4j 、 Ma ll et 、 Apache Mahout等各种库 。 关于如何 获取与安装这些库,会在各章首次用到它们时进行讲解 。 读者对象 本书为那些想、学习如 f可使用 J ava机器 学 习库进行数据分析的人而 写 。 或许你已经对机器学习 有了一点了解,但从未用过 Java ; 又或许你懂得一点 Java ,而在机器学习方面是个新手 。 不论你 属于哪种情况,本书都能让你快速上手,并提供必需的技能,让你能够成功创建、定制,以及在 实际生活中部署机器学习应用 。 如果你懂得 一点基本 的编程知识以及数据挖掘相 关概念会更好, 但不要求你必须拥有与数据挖掘程序包相关的开发经验 。 配套资料 本书专门配有一个在线支持网站( h ttp: // mac b ine- l earning-in-java . com ), 从中可以找到所 有示 例代码 、 勘误表,以及其他人门资料 。 前言 3 排 版约定 本书中,你 会 发现许 多 不同体例,它们用于区分不同类型的信息 。 下面给出 一 些例子,并对 其含 义进行说明 。 正文 中的代码 、 数据 库表名、 文件 夹 名 、 文件名 、 文件扩展名 、 路径名 、 伪 URL 、 用户输入 和 Twitter用 户 名 显 示如下: “比如 , Bob 拥有 height 、 eye color 、 h o b bi es 三个属性,对应值依次为 185cm 、 blue 、 climbi 叩与 sky divi 用 ” 。 代码块 表示 如下: Bob={ height: 185cm , eye color: blue, hobbies: climbing , s ky diving 所有命令 行输入或输出 写 成如下形式 : 12 , 3,7,2,0 , 1 , 8,9 , 13,4,11 , 5,15 , 10,6,14 , 16 新术语 与 重要词语使用黑体显示 。 你在屏幕上看到的词,比如菜单或对话框中的词,在正 文 中显 示如下:“在项目属性 上 点击鼠标右键,选择 Java Build Path ,单击 Libraries 选项卡, 选择Add External JARs 。 ” [~ 警 告或重要的注意事项 。 提示和技巧 。 读 者反馈 欢迎提供反馈,请将你对本书的 看 法告诉我们 : 哪些方面是你 喜 欢的,哪些方面你不 喜 欢 。 读者 反馈对我们来说很 重要 ,因为这可以帮助我们推出更符合读者 需 求的著作 。 要给我们提供反 馈 ,只 需 向 fee dback @ packtpub.c om 发送电子邮件,并在邮件主题中指出书名 。 如 果 你 有擅 长的 主 题, 井 有志于 写 书或撰稿, 请参 阅 www .packtpub .com/a uthors 的撰稿指南 。 飞、 4 前 读者支持 __,__ - - 口 ‘民 购买本社图书后,你将获得各种帮助,让手中图书最大限度地 发挥功效 。 下载示例代码 你可以从本书配套网站( http: // machi n e-leaming-in 但va.com )下载 书中 示例代码 。 导航到 Downloads 版块,点击至 LlGit仓 库链接 。 当然 ,你也可以使用自己的账 号登录 http: //www.pac 均uh.com 网站下载本书 示例 代码 。 不论你 在哪里购买本书,都可以访问 问: // www . p a cktpub . com/support 。 注 册之后,我 们 会使用电子邮件 将 示 例代码 直接 发送给你 。 下载示例代码时,请按照如下步骤进行: (1 )使用你的电子邮件地址与密码 登录 我们的网站,如果尚 未 加入 会员,请先注 册加入; (2 )移动鼠标到 SUPPORT 菜单之上; (3 )点击 Code Downloads & Eηata; (4 )在 Search 文本框中输入书名; (5 )选择你想下载代码文件的图书; (6 )从下拉菜单中选择你购买本书的地点; (7 )点击 Code Download 。 示例文件下载完成后,请使用如下最新版本的解压缩软件对文件进行解压 。 口 WinRAR/7-Zip for Windows 0 Zipeg/ iZip/UnRarX for Mac 口 7-Zip/PeaZip for Linux 勘误 虽然我 们力图让图书内 容准确无误 ,但错误仍不可避免 。 如果你在本社图书中发现错 误(包 括正文和代码),请告诉我们,我们将感激不尽 。 你这样做不仅可以让其他读者免遭同样 的 挫折, 还可帮助我们改进该书的后续版本 。 无论你发现什么错误 , 都 请告 诉我们 。 为此,可以访问 http ://www.packtpub.com/submi t-errata ,输 入书名,单击链接 Erra ta Submission Form , 再输入错误 详情 。 提交的勘误得到确认后,将被上传到我们的网站或添加到既有的勘 误 列 表 。 要查看己提交的勘误,请访问 https: //www.packtpub.com/books / content/support , 并在搜索框中 输入书名, Errata栏将列出你搜索的信息 。 目 第 1 章机器学习应 用 快速入门 .... ...... …l I. I 机器学习与数据科学…· ……········ ! 1.1. l 机器学习能够解决的问题 ·· ·2 1.1.2 机器学习应用流程…… … ... · 3 1.2 数据与问题定义 … ..... .. .…...... .........… 4 1.3 数据收集………………· 1.3. 1 发现或观察数据………………· · 5 1.3.2 生成数据…·· … ············ ······· ····6 1.3 3 采样陷阱..... . ... ……· ········7 1.4 数据预处理….. . .....…… …· ·· · ·· · · ·7 1.4. 1 数据清洗 . ........ . ... . .......…… … …··8 1. 4.2 填充缺失值……………… · · ····8 1.4.3 剔除异常值 . .......…...... ..... … …… 8 1.4.4 数据转换......….............. . . … ... ·9 1.4.5 数据归约 ······· ······· ········· ··· ······· 10 1.5 元监督学习…… ………. ......…… u …· 10 1. 5. 1 查找相似项目…· .. .. . .......… ·· IO 1. 5.2 聚类........ .. …… · ·············· ·· ····· · … 1 2 1.6 监督学习 …... ....…····· ···· ······· · ······· 13 1.6. 1 分类 …....... ……………· ·· ···· 14 1 6 2 回归…… ·· ……... .. ..….......… … · 16 1.7 泛 化 与评估……··…....... . . . .......… … 18 1.8 小结 ........… ……......... ...........….. 2 1 第 2 章 面向机器学习的 Java 库与 平台 …………... . ..…………… ·22 2.1 Java 环境 ...............…… E …····· ······· · . 22 2.2 机器学习库……......………. .. . . … … … 23 2.2.1 Weka ·············…………… ······· ·· 23 2.2.2 J ava 丰儿器学习 … ........... .… 2 5 、、 录 2.2 . 3 Apache Mahout· ····· ·· ·….........…… · 26 2 . 2.4 Apac h e Spark· ·· · · · · · · · ····················· 27 2 . 2 . 5 Deeplearning4j · …… · · · · · · · · · · · · · · ·28 2 . 2 . 6 MALLET ·· ………· ·29 2 .2 .7 比 较各 个 库…. . ... ...… …· · 30 2 . 3 创 建 机 器学习应用· • ……. ....... 3 1 2 .4 处理大数据… …… … … 31 2.5 小 结 …. .. ...... … … . . ........... . .…… … 33 第 3 章 基本算法 一一 分类、回归和 聚 类. ......................…..... . . . . . . . . . . . . . . . . 34 3 . 1 开始之前 … · ········ ········……… .......…· · 34 3 . 2 分类 ……... . ...…………… · 35 3 . 2 . 1 数据· …·······…….. 35 3 . 2 . 2 加 载数据…… … . . .... .. . . ..…........…. . 3 6 3. 2 . 3 特征选择 ··········….... ... .......… ·37 3 . 2.4 学 习 算法 … …… ….........… · 3 8 3 . 2.5 对 新数据分类…·· ... ... · 40 3 . 2 . 6 许 估与预测误差度量… … · 41 3 . 2 7 混淆矩阵………… ········ · ··· · ····· · ······· 41 3.2.8 选择分类算 法 …………… … … … …… 42 3 3 回归 …… ………… … …… …………… ……… … … 的 3 . 3 . 1 加 载数据…….. . . . . .…. . . . . .. . . . ... . ........ 43 3 . 3 .2 分 析 属性……........ . ... . ..…......... . ··· 44 3.3. 3 创建 与 坪估回归模型…·· … ·· 45 3 . 3.4 避免常 见 回归 问 题 的小 技巧 ·· · ·48 3.4 聚类... . ... . . …… . ... . ..... 4 9 3.4 1 聚类算法…….... . .... . . . .... . ......…… 49 3 42 4平千古… .. . . . ...…. . ..............………… 50 3 .5 小结 …… ··………········· · · ·· ······················ · · · · 51 2 目 录 第 4 章 利用集成方法预测客户关系…… 52 4 . 1 客户关系数据库.........…………................. 52 4 I I 挑战………........…........... . ..…........ 53 4 I 2 数据集…… . .... . .………...............… 53 4.1.3 许估……. . ....……............ . ... . . ....… · ·54 4 .2 最基本的朴素贝 叶斯分 类器基准 … … 55 4 2 I 获取数据…………...... . ... . . ... . .…… . 55 4.2 2 加载数据…...............…. . ....……… 56 4.3 基准模型…….......… .... . . ... ……· . . . . ... . . 58 4 .3. J 许估模型…..............…........ · 58 4 . 3.2 实现朴素贝叶斯基准线……....... . . 59 4.4 使用集成方法进行高级建模 ……·· · · ·60 4.4 . 1 开 始之前………... . . ...…· ·· · · 60 4.4 .2 数据预处理........….. ....…… … · 61 4.4 .3 4在性选择 … ... . . . . . . . . . . . . . ... . . . . . ... ... . . ·62 444 模型选择………... ... . ..…… ·· … 63 4.4 . 5 性能许估…………… ····················· ·· 66 4 . 5 小结 . ...........…………….........…................ 66 第 5 章关联分析……… ……… ……...… E … ……… · 67 5.1 购物篮分析.......................…………….. ·67 5.2 关联规则学习................. ..... .. .......… ········69 5.2. 1 基本概念….... ... . .... . .. ..... .. ............. 69 5.2 . 2 Apnori 算法....... . . . ..... . ….. . ........... 71 5.2.3 FP - 增长算法 …·· … ········· ··· 71 5 .2 .4 超 市 数据集……… … ·72 5.3 发现模式…….............…………… 73 5 3.1 Apriori 算法……………………· 73 5 . 3.2 F 札增长 算法· … ·74 5.4 在其 他 领域中的应用 .. .. ..…................… ·7 5 5.4 . 1 医疗 t乡断 . .. ....... ..……… ·················7 5 5.4.2 蛋白质序列 .. .. .......... . . ........ : ·········7 5 5.4.3 人口普查数据… 76 5.4.4 客户关系管理·· ·76 5.4 .5 IT 运 营分析 … ... ... · 76 5 .5 小结..................................…......... ..... · 77 、龟 第 6 章使用 Apache Mahout 制作 推荐引擎 …………………………...……….. 78 6.1 基本概念…………………………………………·四 6.1.1 关键概念………...................... ······79 6.1.2 基于用户与基于项目的分析…… 79 6.1.3 计算相似度的方法. ...............…... 80 6.1.4 利用与探索….. .. ............... ... ......... 81 6.2 获取 Apache Mahout·· .... ··· …............ ....… 81 6 . 3 创建 一个推荐引擎… … ……….. 84 6.3 .1 图书评分数据集 …………·84 6 3 .2 加载数据… ...... . .…………… 84 6.3.3 协同过滤.. ....... ……… ........… ·········89 6.4 基于内容的过滤 . .... .….. .. ....... . ...... . .. . ...… ·97 6.5 小结…··……..... .........…...... ... ... . .... … … ·97 第 7 章欺诈与异常检 j则 ............…............... 9g 7.1 可疑与异常行为检测… …………… ·9 8 7.2 可疑模式检测 ……… …… … .. 99 7 .3 异常模式检测…·· ’ ·········· · ·· ·· ··· ·· ···· ·· ····… ·JOO 7.3.J 分析类型……····· · ···· · ···············…. 100 7.3.2 事务分析………·· ·· ······· ·· ···· ·· ·· ···… 101 7 3.3 规划识别…...... . . ………… l 01 7.4 保险理赔欺诈检测……………· … 101 7.4.1 数据集…….........… . ............... . .. 10 2 7.4.2 为可疑模式建模…… … … 103 7.5 网站流 量异常检测… …· ........... .. 10 7 7.5.1 数据集 ……… …… … 10 7 7 . 5 .2 时序数据中的异常检测……....... 10 8 7 .6 小结………… … … E ………… E … … E ……………. 113 第 8 章利用 Deeplearning 叫进行 图像识别 ……····· · ·……............ . ....” l 14 8.1 图像识别简介……....... .. ...... . ........... 114 8.2 图像分类 …… .... ...… ………….. ...…… 120 8.2. l D ee pl eam ing4j ........…........ .. .....’ 120 8.2.2 MNIST 数据集.........….........…… 1 2 1 8.2.3 加载数据……···· ···········….. .... ..…. 121 8.2 .4 创建模型………… ………. 122 8 3 小结.... ....…· .......… …… 128 第 9 章利用手机传感器进行 行为识另 lj .......................................... 129 9.1 行为识别简介… …………· · ·129 9.1.1 手机传感器 …......... ·130 9.1.2 4于为识别流水线…….. .....… ········· 131 9.1.3 计划........…··….........… 132 9.2 从手机收集数据.......…...... . . .. · 133 9.2.1 安装 Android Studio .. ··········· ······ 133 9.2.2 加载数据采集器 . ....….......…· ·· ···· 133 9.2.3 收集训练数据... . ......… ·· ······ · · ····· 136 9.3 创建分类器 ….......…………···138 9.3.1 减少假性转换…·· ……· ·140 9.3.2 将分类器嵌入移动应用 ……··· 142 9.4 小结···· · ··· . …. . ......… · ·················… ·143 第 10 章利用 Mallet 进行文本挖掘一一 主题模型与垃圾邮件检测 … ······· 144 10 . l 文本挖掘简介........... . .....…·· …… · ·144 10.1.1 主题模型…….......… ·············· ··145 I 0.1.2 文本分类-……········…·············· 145 10.2 安装 Ma llet ····· ……······· · ·………......… · 146 10.3 使用文本数据………·········· 147 10.3.1 导入数据 ……. . ....…… ·· 149 10 .3.2 对文本数据做预处理……······· 150 10.4 为 BBC 新闻做主题模型…………… ·…·· 152 10.4.1 BBC 数据集……........ .. .....…·· 152 10.4.2 建模……·· …. ...... ... . ... .… 153 10.4.3 许估模型.........….................… 155 、、 目 录 3 10 4.4 重用模型…….......…················ 156 10.5 垃圾邮件检测….........………················· 157 10.5.1 垃圾邮件数据集.................…· 158 10.5 .2 特征生成…...............…………·· 159 10.5.3 训练与测试模型…..........……· 160 10.6 小结……··· · ··········…….......… . .......……·· 161 第 1 1 章机器学习进阶………………······· · 162 11.1 现实生活中的机器学习……………········ 162 11.1.1 噪声数据.........….................… 162 11.1.2 类不平衡…….......................… 162 11.1.3 特征选择困难………··········· · ··· 163 11 1.4 模型链......…........…················ 163 11.1.5 4于价的重要性…·…················· 163 11.1.6 从模型到产品…….......…········ 164 11 1.7 模型维护…… · ·…… ··· ·· · ··· ······· · · 164 11.2 标准与标记语言……........................…· 165 11.2.1 CRISP-DM ·························…· 165 11.2.2 SEMMA 方法.........….........…· 166 11.2.3 于页测模型标记语言…·············· 166 11.3 云端机器学习…. . . ..... .....………......……· 167 11.4 Web 资源与比 赛 …........ . .… ……········ 168 11.4.1 数据集.........…· …·· 168 11.4.2 在线课程…… E ….......….........… 169 11 4.3 比赛…·······………......……····· 170 11.4.4 网站与博客...... . ..... . .....………· 170 11.4.5 场馆与会议.........……….......… 171 11.5 小结…·…............…......................……… 171 机器学习应用快速 本章介绍机器学习的基础知识, 包括常见主题 与概念 ,这些内容将让你更容易理解相 关逻辑 以及所讲主题 。 本章的目标是让你快速了解 应用机器学习的 详细步骤,掌握机器学习的主要原理 。 本章涵盖 以下内容: 口介 绍机器学习及其与数据科学 的 关系 口讨论机 器学习应用的基本步骤 口讨论所处 理数据的类型及其重要性 口讨论收 集数据以及对数据进行预 处理的方法 口使用机 器学习理解数据 口 使用机器学习从数据获取有用信息并创建预测 器 如果你已经熟悉机器学习,并急于开始编写代码,请跳过本章内容,直接阅读其他章节 。 然 而,如果你想重温这些 内 容或者搞清一些 概念,强烈建议你认 真学 习本 章 。 1.1 机器学习与数据科学 如今,每个人都在谈论机器学习与数据科学 。 那么,机器 学 习究竟是什么?它与数据科 学有 着怎样 的联系呢?这两个术语常被混淆,因为它们经常使用相同的方法,有着明显的重叠 。 因此, 下面先区分这两个术语 。 Josh Wills 在 Twitter上说 : “所谓的数据科学家指这样 一类人,他们比软件工程师更懂统计学,比统计学家更 懂软 件工 程 。 ” 更具体 地 说,数据科学包含从数据 获 取知识的 整个 过程,它 综合运用统计 学、计算 机科 学 以 及其他领域的各 种方法,帮 助人们从数据中获取有用的知识与信息 。 事实上 ,数据科 学是一个不 断反复的过程,包括数据的采集、清洗、分 析 、 可视化和部署 。 、,民 、 2 第 1 章机器学习应用快速入门 另一方面,机器学习主要涉及数据科学的分析与建模阶段使用的通用 算法与技 术 。 对于机器 学习, Arthur Samuel 在 1959 年提出如下定义: “机器学习是指研究、设计与开发某些算法,让计算机获得学习的能力,而不需要 明确的编程 。 ” 1.1.1 机器学习能够解决的问题 机器学习方法主要有如下 三 种: 口 监督学习 口 无监督学习 口 强化学习 给定一组样本输入X与它们的结果 Y ,监督学习的目标是产生一个通用的映射函数f,使得每 一 个输入都有对应的确定输出, RPJXY,。 监督学习的 一 个应用例子是检测信用卡欺诈 。 学习算法会学习所有带有“正常”或“可疑” 标记(向 量 Y ) 的信用卡交易(矩阵 X ) , 并最 终产生 一 个决策模型 OPJ函数),对未见过的 交易 打标记(“正常”或“可疑”) 。 相反,无监督学习算法所学的数据没有给定的结果标签Y ,它主要 学 习数据的结构,比如 将 相似的输入数据归入某个聚类 。 因此,使用无监督学习能够发现隐藏在数据中的模式 。 无监督学 习的 一 个应用例子是基于物品( Item-based )的推荐系统,其 学习算法会发 现购物者 一 同购 买的 相似商品,比如购买了书 A 的人也购买了书 B 。 强化学习从完全不同的角度处理学习过程 。 它假设有 一 个智能体 ( agent ,可以 是 机器人 、自 动程序或计算机程序)与动态环境进行交互 ,以实现某个特定目标 。 环境由 一组 状态描述, 智能 体可以做出不同行为,以从 一 种状态变为 另一种状态 。 有些状态被标为目标状态,如果智能体 实 现了这种状态,就会获得很大的奖励;而在其他状态中,智能体得到的奖励很少或没有, 甚至还 会被“惩罚” 。 强化学习的目标是找到最优策略,即映射函数,指定每个状态要采取的行为 动作, 而没有指导者( teac h er )明确告知这样做是否会实现目标状态 。 强化 学习 的 一 个例子是汽车向动 驾 驶程序,其中“状态”与“驾驶条件”(比如当前速度 、 路况信息 、 周围交通状况 、速度限制 、 路障)相对应,行为会驱动汽车做出诸如左转、右转 、 停止 、 加速 、前行等 动作 。 学习算法会 产 生一个策略,指定汽车在特定驾驶条件下要采取的动作 。 本书中,我们把学习重点放在监督学习与无监督学习上,因为它们有许多相同的概念 。 如 果 强化学习激起了你的兴趣,建议阅读 Ric h a rd S. Sutton 与 Andrew Barto 二 人合 写 的 Reinforcement Learning: An Introduction ,它 是一本很好的入门书 。 1.1 机器学习与数据科学 3 1.1.2 机器学习应用流程 本书讲解的重点是机器学习的应用 。 我们将提供切实可用的技能,帮助你顺利地将学习算法 应用于 各种不同的情景设置 。 相比于机器学习相关的理论与数学知识,我们将把更多时间用来学 习 如何将机器学习技术应用于具体实践 。 借助这些实际应用技术,你可以让机器学习在具体应用 中发 挥强大作用 。 我们把讲解重点放在监督学习与无监督学习上,涵盖从数据科学到创建机器学 习应 用流程的所有必需步骤 。 标准的机器学习应用流程就是回答一系列问题,可概括成如下 5 个步骤 。 (1 ) 数据与问题定义: 第一步是要问一些有趣的问题 。 你试图解决的问题是什么?它为何 重 要? 哪种形式的结果能够回答你的问题?回答是简单的“是与否”吗?你需要从现有问题中挑选 吗? (2 ) 数据收集: 一旦 有问题要解决,你就需要使用相关数据 。 问一问自己,哪种数据能够帮 助你回答问题 。 你能从现有可用来源获取所需数据吗?你必须对多个来源进行合并吗?你必须生 产数 据吗 ? 存在取样偏差吗?你需要多少数据? (3 ) 数据预处理:数据预处理的第 一 项任务是数据清洗,比如填补缺失值 、 平整噪声数据 、 移除 异常值 、解 决数据 一 致性 。 通常,随后会有对多个数据源的整合以及数据转换,包括把数据 转换 到特定范围(数据标准化)、将数据分成 一 系列值段(数据离散化)、降低数据维数 。 (4 )利用无监督学习与监督学习进行 数据分析与建模: 数据分析与建模包括无监督机器学习 与监督 机器学习、统计推断和预测 。 这个阶段有多种机器学习算法可供选用,比如 k最近邻算 法 、 朴 素 贝叶斯算法 、 决策树 、支 持向量机 、 逻辑回归 、 K 均值算法等 。 至于选用明 II 种 算法, 取决于第一步中提 到的问题定义以及所收集的数据类型 。 经过这一步,我们最终会从数据推导出 模型 。 (5 )模型评价:最后 一步是 对模型进行评价 。 通过机器学习创建模型后,接下来检查模型对 源数据 的拟合程度 。 如果模型的针对性太强,即对训练数据过拟合,那么它对新数据的预测效果 就很有 可能比较差 ;如果模型太通用,这意味着模型对训练数据欠拟合 。 比如,向欠拟合的天 气 预测模型 询问加利福尼亚州的天气时,得到的回答总是“晴朗” 。 大多数时候这个回答是对的, 但就有 效预测天 气来说,这个模型真的没什么用 。 这 一 步的目标是准确评价模型,确保模型面对 新数 据也能正常 工作 。 进行模型评价时,常用的方法有独立测试、训练、集、交叉验证、留 一法交 叉验证 。 接下来,我们将详细讲解每个步骤,并且尝试理解 机器 学习应用流程过程中必须回答的问题 类型 ,还要了解与数据分析 、 评估相关的概念 。 、'• ‘民 4 第 l 幸机器学习应用快速入门 1.2 数据与问题定义 简单地说,数据就是 一 系列测量值,表现形式多样,比如数值 、文字、 测量值 、观测值 、事 物描述、图像等 。 测量尺度 数据最常见的表示方式是使用 一 组属性值对 。 请看如下例子 : Bob={ height : 185cm , eye color : blue, hobbies: climbing, sky diving Bob 拥有 height 、 eye color 、 hobbies 三 个属 d性,它们对应的值依次为 185cm 、 blue 、 climbing, skydiving 。 上面这组数据可以简单表示如下表 。 表格的列对应属性或特征,表格的行对应特定的数据样 本或实例 。 监督机器学习中,属性代表类或者目标变量,其值是我们想从其他属性值 ( X ) 进 行 预测得到的结果( Y ) ,如表 1-1 所示 。 姓名 Bob Anna 身高[ cm] 18 5.0 163 .0 表 1-1 示例要 Jj 表 H &球颜色 兴趣爱好 Blue Cli mbin g, sky dtvmg Brown Read mg 我们 首先注意到 的 是属性值 的 类型 。 比如,身高是 一 个数值,眼球颜色是 一 个文本,兴趣爱 好是 一 个列表 。 为了更好地理解属性值的类型,下面详细了解数据或测量尺度的不同类型 。 Steven s ( 1946 )定义了 如下 4种测 量尺度,它 们的 表现属性在不断增加 。 口称名数据 ( N ominal data )相互排斥,但不分顺序,比如眼球颜色 、 婚姻状况 、汽车的品 牌等 。 口顺序数据 ( Ordinal data )是数据顺序有意义的分类数据,但值之间没有区别,比如疼痛 程度、学习成绩字母等级、服务质量评级、 IMDB 电 影评分等 。 口等距数据 ( Interval data )中两个值之间的不同具有意义,但是无“绝对。”概念 。 比如 标准化后的考试分数、华氏温度等 。 口等比数据 ( Ratio data )拥有等距变量( interval variable )的所有属性,并且还有明确的 “ 0 点”定义 。 变量为 0 时 ,表示该变量代表的某种事物或特征不存在 。 身高、年龄、股票 价格 、每 周伙食支出等都是等比变量 。 1.3 数据收集 5 我们为什么要关注测量尺度呢?机器学习在很大程度上依赖于数据的统计属性,因此应该注 意每个数据类型自身具有的限制 。 有些机器学习算法只能被应用到测量尺度的一个子集上 。 表 1 -2 总结了每种测量类型的主要操作与统计特性 。 表 1-2 不同测量类型的主要操作与统计特性 特 ’性 称 名 Ill页 序 等 ]!§: 等 ~t 频率分布 --J --J --J --J 中位数和众数 --J --J --J {直顺序已知 --J --J --J 每个值之间的不同可以量化 --J --J 值可以加减 --J --J 值可以乘除 --J 拥有真0点 --J 此外,称名数据与顺序数据对应于离散值,而等距数据与等比数据还可以对应于连续值 。 监 督学习中,我们想要预测的属性值的测量尺度决定哪种机器算法可用。例如,从有限列表预测离 散值称为“分类”,它可以使用决策树算法实现;而预测连续值称为“回归”,可以使用模型树算 法实现 。 1.3 数据收集 那么,数据从何而来呢?我们有两种选择:从现有源观察并获取数据,或者通过调查、模拟、 实验生成数据 。 下面详细学习这两种方法 。 1.3.1 发现或观察数据 我们可以从很多地方发现或观察到数据,互联网就是最明显的数据源 。 英特尔( 2013 )给出 图 1-1 ,显示通过不同互联网服务收集的海量数据 。 2013 年,数字设备产生了4泽字节( 1021 =10 亿太字节)的数据。 2017年,入网设备数量预计达到地球总人数的 3倍,这些设备产生与收集的 数据量将进一步增加 。 有多种方法可以从互联网获取数据。 口从维基百科、 IMDb , Million Song Dataset等网站批量下载。 口通过API (《纽约时报》、推特、脸书、 Foursquare )访问数据 。 口网页抓取 :从网页上抓取公开、非敏感、匿名数据是可行的 。 抓取之前,请认真阅读版 权条款与完整的引用信息 。 ‘民 ”’k 6 第 l 幸机器学习应用快速入门 38. 1’ 4 制臼, 436 ,,..;:』.... ,., .. ;二函回” WoChotm曲唱归。,,饱 pco k' 34.7 MIUlon 帕阳””“捕’“(Ml叫阳, And future Growth Is Staggering w e 州州时 刷机制响川川 h zmx mt 阳’ AW 岛,阳,. ··saa --醺制-m 图 1-1 通过不同互联网服务收集的海蓝数据 找到数据之后,我们面对的主要问题是要花时间与空间积累数据 。 这些数据只表明发 生了什 么,而不收集意图、动机或内在动机 。 最后,这样的数据中可能充斥着噪声,它们可能不 完整、 不 一 致,甚至会随时间发生变化 。 获取数据的另一种方法是从各种传感器收集测量数据,比如移动设备中的惯性和位置传 感 器、环境传感器、软件代理关键性能监控指示器等 。 1.3.2 生成数据 另 一 种替代方法是你自己生成数据,比如通过调查 。 做调查设计时,我们必须把注意力放 在 数据采集上,明确被调查的对象是谁 。 我们只能从那些愿意参与调查并回答问题的被调查者处 获 取数据,并且,被调查者可以做出符合他们自身形象与研究者期望的回答 。 1.4 数据预处理 7 其次,我们也可以通过模拟收集数据 。 这个过程中,领域专家在微观水平上指定用户行为模 型 。 例如,群体模拟( crowd simulation )需要指定不同类型的用户在群体中如何行动,比如是随 大流还是伺 机逃离等 。 接着在不同条件下运行模拟,观察不同条件下会发生什么( Tsai 等, 20 11 ) 。 模拟适用于研究宏 观现象与 突 现行为( emergent behav ior ),然而这些模拟往往很难在实际生活中 进行验证 。 此外,你可以设计一些实验 ,彻底覆盖所有可能的结果,让所有变量保持不变, 一次只操 作 一 个变量 。 使用这种方法的代价很高,但通常都能得到质量最好的数据 。 1.3.3 采样陷阱 收集数据时可能碰到许多陷阱 。 为了证实这一点,我们先设想下面一个场景 。 假设存在 一 个 通用 的、不成文的规则,用 于在学生 之间免费发送普通邮件 。 如果你在贴邮票的地方写上“学生 到学生”,这封 邮件就会被免费投递到接收方 。 现在,假设雅各布给艾玛发送了 一套 明信片,并 且假设艾玛真 的收到了 一些 明信片 。 于是她就断定所有的明信片都寄到了,并且认为规则 是真实 有效 的 。 也就 是说,艾玛基于自己收到明信片这一事 实 就推断所有明信片都被寄到,然而她并没 有那些雅各布寄 出但未投递到的明信片信息 。 因此,艾玛无法在推断时把它们考虑进去 。 艾玛经 历的就是“幸存者偏差” ,即她只依据“ 幸 存”的数据得出结论 。 需要指出的是,使用“学生到 学 生” 邮 票 邮寄的明信片 上 都印有带圆圈的字母 T ,这表示“欠邮资”,邮资应该由接收方支付, 包括 小额罚 金 。 然而,邮政公司常常要付出更多代价收取这些费用,因 此 一 般不会这样做 ( Magalhaes, 2010 ) 。 另一个 例子来自 一项 研究,这项研究发现平均死 亡 年龄最低的职业是“学生” 。 做学生不 会 造成你在年纪很 小的时候死 亡 ,只能说明你还年轻 。 这才是学生这个群体平均死亡年龄低的原因 ( Gelman 与 Nolan, 2002 ) 。 此外, 一 项研究发现,发生事故的司机中,只有 1.5% 报告说他们 当时正在使用手机,而有 10 . 9% 的司机报 告 说是车中另一名 乘客分散了他们的注意力 。 据此,我们能推断说,司机驾车 时使用手机比与另一个乘客交谈更安全吗? ( Uts, 2003 )为了回答这个问题,我们 需要 知道 手机使 用的盛行 率 。 当 时收集数据期间,相比于开车时使用手机,司机更有可能与车中的另 一 个人进行交谈 。 1.4 数据预处理 数据预处理的目标是,用最可行的方式为机器学习算法准备数据,因为并非所有算法都可以 用于 处理缺少数据 、额外属性以及非标准值 。 、,l陶 ”k 8 第 1 幸机器学习应用快速入门 1.4 . 1 数据清洗 数据清洗也 叫 数据整理、数据清理,处理过程如下 : 口 识别不准确、不完整、不相关、已损坏的数据,并在进 一步 处理之前移除; 口 分析数据,提取感兴趣的信息,或者验证数据格式是否合法; 口 将数据转换为常见的编码格式,比如 ut 阳 、 int32 、 时标或者标准范围; 口 将数据转换为常见数据模式,比如如果收集的温度数据来自不同类型的传感器,那么 可 能需要将其变换为具有相同结构的数据 。 接下来,看看更具体的数据预处理步骤 。 1.4.2 填充缺失值 一 般来说,对于缺失值,机器学习算法工作得不是很好 。 但有极少数例外,比如决策树、朴 素贝叶斯分类器,以及一些基于规则的学习器等 。 了解一个值缺失的原因至关重要,这些原因 可 能是多方面的,比如随机误差、系统误差、传感器噪声等 。一 旦找到缺失原因,就可以采用多种 方法处理缺失值,常见处理方法如下 。 口移除实例: 如果有足够多的数据,并且其中只有几个非相关实例有 一些缺失值 ,那么 移 除这些实例是安全的 。 口移除属性: 当大部分值缺失 、 值为常量,或者当前属性与另一个属性有强相关关系时 , 移除该属性是有意义的 。 口指派为特殊值 NIA :有时缺失值是由正当理由引起的,比如值超出指定范围 、离散属性值 未定义、无法获取或测量得到的值一一这个值也可能是指示器( indicator ) 。 比如, 一个 人从来不评价电影,那么他对这部电影的评分就不存在 。 口填入属性平均值: 如果拥有的实例数量有限,那么不能移除实例或属性 。 这种情况下, 我们可以对缺失值进行估算,比如把属性的平均值或相似实例的平均值作为缺失值进行 填充 。 口依据其他属性值进行预测: 如果属性有时间依赖关系,那么可以根据之前的已有值预测 缺失值 。 如上所述,出现缺失值的原因多种多样,因此了解值缺失或损坏的原因非常 重要 。 1.4 .3 剔除异常值 异常值是指数据中那些与其他数值相比有较大差异的数值,这些异常值对所有学习算法都有 不同程度的影响 。 异常值可能是极端值,可以通过置信区域检测,并可借助阔值剔除 。 最好的 方 1.4 数据预处理 9 法是先 对数据进行可视化,然后检查可视化图形,从中找出异常值 。 图 1-2 的可视化图形是个例 -­ 子 。 请注意,数据可视化仅适用于低维数据 。 ... y . . . . . . . 4 . 8 斗 ’ ① ·.. ..· . ·. 4.4 40 45 so 55 60 65 x 图 1-2 可视化图形 1.4.4 数据转换 数据转换技术将数据集转换为机器学习算法要求的格式,用作机器学习算法的输入 。 数据转 换甚至 可以帮助算法学得更快,获得更好的性能,比如标准化 。 假设数据服从高斯分布,采用如 下方式做值变换:均值为 0 ,标准 差为 1 。 x- n-v 兔u - ρUW E-d 守A - 6··· X 一X 另一方面,归一化将属性值按比例缩放,使之落入一个小的特定区 间,通常 是 [ O , I ] 。 x 主二旦巳一 日iax-mm 许多机器学习工具箱自动对数据做归一化与标准化处理 。 最后一个变换技术是离散 化,用于将 一 个连续特征的范围切分为若干区间 。 为什么要这样 做?因为有些算法,比如决策树、 朴素贝叶斯算法,更擅长处理离散属性 。 最常用的选取区间(离 散化)的方法如下 。 口等宽离散化: 该方法将连续变量的值域划分成k个具有相同宽度的区间 。 口等频离散化:假设 有N个实例, k个区 间中的 每一个都包含大约 Ni k个实例 。 口最小楠 ( 度量体系的混乱程度)离散化:该 方法会递归 地分割区间, 直到区间分割 引起 的恼减大于情增( Fayyad 和 Irani, 1993 ) 。 其中,前面两个方法需要手工指定区间数量,而最后一 种方法则自动设置区间数 量 。 但后者 需要 分类变量,这意味着它不能用于无监督机器学习任务 。 、,民 ’院、 10 第 1 幸机器学习应用快速入门 1.4.5 数据归约 数据归约用于处理大量属性与实例,属性数对应于数据集的维度数 。 具有较低预测能力的维 度不仅对整个模型的贡献率非常小,还会带来许多危害 。 比如, 一个拥有随机值的属性可能产生 一些随机模式,这些随机模式会被机器学习算法识别 。 为了解决这个问题,第一种处理方法是把这些属性剔除,换言之,只保留那些最看好的属性 。 这个过程称为特征选取或属性选取,具体可使用的方法有ReliefF 、信息增益、基尼指数等,它们 主要面向离散属性 。 另一个处理方法是专注于连续属性,将数据集从原始维度转换到低维空间 。 例如,假设有 一组三维空 间中的点,我们可以将其映射到三维空间 。 这个过程中会丢失一些信息,但如果第 三个维度是不相关的,则不会丢失很多信息,数据结构与相关性几乎都能完美保留 。 具体可用 方法如下 : 口奇异值分解 ( SVD ) 口主成分分析 ( PCA ) 口神经网络自动编码器 ( Neural nets auto encoders) 数据归约中的第二个问题是数据包含太多实例 。 这么多个实例可能是重复的,或者来自一个 非常频繁的数据流 。 解决这个问题的方法是从中选用实例子集,选择时要保证所选数据的分布与 原数据的分布相似,更重要的是观测的过程类似 。 减少实例数量的技术包括随机数据采样、数据 分层法等。准备好数据后,接下来对数据进行分析与建模 。 1.5 无监督学习 无监督学习是指,通过数据分析从没有标签的数据中发现隐藏的结构 。 由于数据不带有标签, 所以我们无法通过误差测量对学过的模型做评价 。 即使如此,无监督学习仍然是个极其强大的工 具 。 你是否曾经好奇过,亚马逊是如何预测你喜欢什么书的?在你还未做出选择时, Netflix如何 知道你想看什么?这些问题的答案都可以在无监督学习中找到 。 下面给出一个类似的例子。 1.5.1 查找相似项目 许多问题都可以归结为查找元素相似集,比如购买了类似商品的顾客、包含相似内容的网页 、 含有相似对象的图像、访问过类似网站的用户等 。 如果两个项目相距非常近,就可以将其视为是类似的 。主要问题是如何表示每个项目,以及 如何定义项目之间的距离 。 距离测量主要有两类: 一类是欧氏距离 ( Euclidean distance ),另 一类 是非欧距离( no - Euc l i dean distance ) 。 1.5 元监督学习 11 1. 欧氏距离 n 维欧氏空间中,两个元素之间的距离基于元素在这个空间中的位置,常称为“ p -范数距 离” ( p-norm distance ) 。 常用的两个距离度量是 L2 与 L l 范 数距离 。 L2 范数也叫欧氏距离,它是最常用的距离度 量 ,用于度量 三 维空间中的两个元素相距多远 。 它是两个元素在每个维度上差 的平方和的平方根,计算公式如下: L2norm d ( 。) = ~"L: '= I (a; -bi )2 L1 范数又称曼哈顿距离( Manhattan Distance )、城市街区距离( City Block Distance )、出租 车 范数 · ( Taxicab Norm ),它是两个元素在每个维度上差的绝对值之和,计算公式如下: L1norm d(a,b) = L~Ja ; -b;I 2. 非欧距离 非欧距离基于元素的属性,而非它们的空间位置 。 其中较为著名的有杰卡德距离( Jaccard Distance )、余弦距离( Cosine Distance )、编辑距离( Edit Distance )、汉明距离( Hamming Distance ) 。 杰卡德距离计算两个集合间的距离 。 首先,计算两个集合的杰卡德相似系数( Jaccard Similarity ),它被定义为“两个集合交集的元素个数除以并集的元素个数”,公式如下 : AnB sim(A,B) =一一一AuB 杰卡德距离被定义为“ l 减去杰卡德相似系数”,公式如下: AnB d(A,B) = 1-sim(A,B) = 1 一一一一AuB 余弦距离也称为余弦相似度( Cosine Similar 即 ) 。 两个向量的余弦距离关注的是它们的方向, 而非大小 。 因此,如果两个向量方向一致,那么它们的余弦相似度为 1 ,而两个垂直向量的余弦 相似度为 0 。 假设有两个多维点,所对应的向量分别从原点( 0, 0, 0, ... , 0 )指向它们所在的位 置 。 两 个向量之 间形成 一 个夹角,它们的余弦距离就是向量的标准点积,如下: (A, B) = arcos __:生主 余弦距离通常用于高维特征空间,比如文本挖掘 。 一个文本文档代表一个实例,特征对应于 不同单词,它们的值对应于单词在文档中出现的次数 。 通过计算余弦相似度,我们能够了解两个 文档 内容的相似程度 。 、、 飞 12 第 l 幸机器学习应用快速入门 编辑距离用于比较两个字符串 。 两个字符串 a ( =a1a2a3 ... a ")与 b ( = b1 b 2b 3 ... bn )之间的距 离是 指,从字符串 a转成字符串 b所需的最少编辑操作数,允许的编辑操作包括插入一个字符、删除 一 个字符 。 比如,有两个字符串 a=abcd 和 b =a bbd , 将字符串 a转成 b 时,必须先删除字符串 b 中的第 三个字母b ,然后在删除位置插入字母 c 。整个过程中没有比这更少的操作数了,所以字符串 a到 b 的编辑距离就是 d(a, b )=2 。 汉明距离用于比较两个大小相同的向量,计算它们不同的维数 。 换言之,该距离指的是从一 个向量变换为另一个向量所需的替换数 。 许多距离可以用于度量各种属性,比如相关性度量两个元素之间的线性关系,马氏距离 ( Mahalanobis Di s tance )度量一个点与其他点所服从的分布之间的距离 SimRank基于图形理论衡 量元素呈现结构 的相似程度,等等 。 正如你想的那样,为你的问题选择并设计合适的相似性度量 后,就完成了一大半工作 。 A.A. Goshtasby 所著的 Image R egistration: Prine ψ !es,岛 ols and Methods 一书 的第 2 章中,关于相 似性度量评估的讲解令人印象深刻,可以 参考学习 。 3 . 维数灾难 维数灾难是指我们拥有大量特征一一通常有成千上百个一一时,这些特征会产生一个带有稀 疏数据的极大空间,以致距离异常 。 比如在高维 空 间中,几乎所有点对彼此之间都 是等距的 。 其 实, 几乎所有点对的距离都接近平均距离 。 维数灾难的另一个表现是,任意两个向量几乎都是垂 直的,这意味着所有夹角都接 近 90 ° 。 实际上,这让任何距离度量都失去了意义 。 使用某种减少特征数量的数据归约技术或许可以解决维数灾难问题 。 比如,可以运行 ReliefF 等特征选择算法或 PCA 等特征提 取 /缩减算法减少特征数量 。 1.5.2 聚类 聚类技术根据某种距离度量,将类似的实例归人相应的簇 。 主要思想是将类似(相互靠得很 近)的实例放入同一个簇,同时让不相似(彼此离得很远)的点位于不同的簇 。 图 1-3 展现 了簇 的样子 。 聚类算法有两个最基本的方法。第一个是 分层 ( hierarchical )或 凝聚( agglomerative )方 法,先将每个点作为它自己的簇,然后不断把最相似的簇合并在一起 。 合并达到预先指定的簇数 时,或者待合井的簇覆盖一大片区域时,就停止合并操作 。 另一个方法基于点分配( Point Assignment )。首先估计(比如随机)初始的簇中心(即簇质 心),然后将每个点分配到离它最近的簇,直到分配完所有点 。 最有名的算法是K均值聚类算 法 。 K均值聚类算法中,把那些相互间尽可能远的点选为初始的簇中心,或者(分层)聚集数据 样本并选取离每个簇(共k个簇)中心最近的点作为初始的簇中心 。 Q.9 。a 0.7 0.0 - Cl.> J_ • QA 03 。2 。J 1.6 监督学习 . . . (l.) 也主 也2 . . . . . . O.:• o;,。aα, 图 1-3 簇 1.6 监督学习 13 . 许多令人惊叹的技术背后隐藏着一个关键概念一一监督学习,这些技术包括声音识别、垃圾 邮件过滤、图像中的面部识别、侦测信用卡欺诈等 。 更正式 地讲,给定 一组学习样本 D ,用特征 X进行描述,监督学习的目标是找到一个函数对目标变量 Y进行预测 。 函数f描述特恼与类 Y之间 的联系,称为模型 : f (X ) • Y 监督学习算法的通用结构由如下决策定义( Hand 等, 2001 ): 口定义任务; 口确 定机器学习算法,它会产生特定归纳 偏置,即先验假设,这是针对目标概念做出的; 口确 定得分函数与代价函数,比如信息增益、均方根误差等 ; 口确定 最优耳里索方法优化得分函数; 口找到 一 个函数,用以描述X与 Y之间的关系 。 、•• 、,马 14 第 1 幸机器学习应用快速入门 上面许多决定已经由任务的类型与我们拥有的数据集确定了 。 接下来将详细学习分类与 回 归 方法,以及相应得分函数的有关内容 。 1.6.1 分类 分类可以处理离散类,其目标是对目标变量中的互斥值之一进行预测 。 一个应用例子是做信 用评估,最终预测结果是判断目标人物的信用是否可靠 。 最流行的算法有决策树 、 朴素贝叶斯分 类器、支持向量机、神经网络以及集成算法( Ensemble Method ) 。 1 . 决策树学习 决策树学习过程中会创建一个分类树,树的每一个节点对应一个属性,边对应属性一个可能 的值(或区间),节点由此而生,每个叶子对应一个类标签 。 决策树可以可视化并以明确的方式 表示预测模型,这让它成为一个很透明(白箱)的分类器 。 比较有名的算法有ID3 与 C4.5 ,此外 还有许多可选实现与改进算法(比如Weka 中的 J4 8 ) 。 2 . 概率分类器 给定一组属性值,概率分类器( Probabilistic Classifiers )可以对一组类的分布进行预测, 而 不预测一个确切的类 。 这可以作为确定性程度来使用,即分类器对自己的预测有多大把握 。 最基 本的分类器是朴素贝叶斯分类器,它也是最理想的分类器一一当且仅当属性是条件独立的 。 但不 幸的是,这在实际情况中极其少见 。 其实有一个称为概率图模型的庞大分支,包括成百上千的算法,比如贝叶斯网络 、 动态贝 叶斯网络、隐马尔可夫模型、条件随机场(不仅可以处理两个属性间的特定关系,还可以处理 现时依赖性) 。 关于这个主题, Karkera写了一本很棒的入门书 Building Probabilistic Graphical Models with Python, Koller与 Friedman 出版了一本详尽的理论“圣经”一一 《 概率图模型: 原 理与技术》。 3 . 核方法 通过对模型应用核技巧( kernel trick ),用核函数( kernel function )替代模型的特征(预测器 ), 可以将任意一个线性模型转换为非线性模型 。 换言之,核技巧隐式地将数据集变换成更高维度 。 核技巧充分利用了“分离更高维的实例通常更容易”这一事实 。 可以使用核技巧的算法包括核感 知器、 支持向 量机 ( SVM )、高斯过程、 PCA 、典型相关分析 、 岭回归 、 谱聚类、 线性自适应过 滤器等 。 4 . 人工神经网络 人工神经网络是受生物神经网络结构的启发而提出的,可以用于机器学习,也可以进行模式 识别 。 人工神经网络通常解决回归与分类问题,包含各种算法以及各种问题类型的变种 。 比较流 1.6 监督学习 15 行 的分类方法有感 知器 、 受限破尔兹曼机 、 深度信念网络( Deep Belief Network ) 。 5. 集成学习 集成方法由 一 系列不同的弱模型组成,以此获得更好的预测能力 。 先单独训练各个模型,然 后 采用某种方式将其预测组合起来, 以产生更全面的预测 。 因此,集成体包含针对数据的多种建 模方式,希望能够产生更好的结果 。 集成学习是机器学习算法中非常强大的工具,也很流行,包 括 Bo osting方法 、 Bagging方法 、 AdaBoost 、 随机森林 。 这些方法的主要不同在于它们组合的学习 器的类型以及选用组合方式 。 6. 分类评估 我们的分类器工作效果很好吗?这个分类器比另 一 个要好吗?在分类中,我们计算分对与分 错的次数 。 假设有两个可用的分类标签一- yes 与 no , 有 4 种可能的 结果,如表 1-3 所示 。 口 真正-命中 :这表 示一个 y es 实例被正确地预测为 yes 。 Q 真负一正确否定 :这 表示一个 no 实例被正确地预测为 no 。 口假正-误警 :这表示 一个 no 实例被预测为 yes 。 口假负-未命中:这表示一个 y es 实例被预测为 no 。 真正吗? Yes No 表 1-3 两个分类标签的可能结果 预测为正? Yes TP -真正 FP -假正 No FN -假正 刊-真负 对分类器的性能进行度量的两个最基本度量值是分类错误与分类精度,如下: 错误数 分类错误=一一一= 总数 FP + FN +TP+FN 正确数 分类精度= 1 -错误=气π-;;--- = 息室E FP+FN +TP+FN 这两个度量-值的主要问题是,它们不能处理不平衡类 。 对一笔信用卡交易是否为欺诈进行分 类就是不平衡类问题的一个例子 :正常交易占 99.99% ,欺诈仅占极小数 。 对于每笔交易,分类器 将其判断为正常交易,这种准确率可达 99.99% ,但我们主要感兴趣的是那些极少出现的几个分类 。 ( 1 )准确率与召回率 这个解决方案用到了两个不包含 TN (正确否定)的度量值,它们定义如下 。 口准确 率:被分类器判定为正 的所有样本实例( TP+FP )中,被正确判断为正( TP )的正 例样本所占比重 。 、 ‘百h 16 第 l 幸机器学习应用快速入门 TP 准确率=一一一一TP+FP 口 召回率:在总正例样本( TP+FN )中 被正确判定为正( TP )的正例所占比重 。 召 回率=~TP+FN 常见的做法是,把两个度量值组合起来,形成F值( F-measure )作为加权平均值;计算分数 的同时考虑准确率和召回率,分数的最好值为 1 ,最差值为 0 ,计算公式如下 : F值- 2 *准确率*召回率…- (2) Roe 曲线 大多数分类算法都会返回一个分类置信度,记作月X) ,它反过来计算预测 。 沿用前面信用卡 欺诈的例子,规则可能如下 : l 欺诈,如果'j(X) >阔值F(x) = ~ · | 非欺诈,其他 阔值决定错误率与真正率 。 我们可以把所有可能的阔值结果绘制成ROC 曲线(受试者工作 特征曲线 ),如图 1-4所示 。 TP DE -- Fr . - . / 挣 γ .·叶飞 . .. ·NW ., . . . .. . . 图 1-4 闽值的ROC 曲线 图中短点虚线表示的是随机预测器, 长点虚线表示的是完美预测器 。 为了判断分类器A是否 优于分类器C ,我们对曲线以下的区域进行比较 。 大多数工具箱都提供上面提到的所有度量指标,且开箱即用 。 1.6.2 回归 回归方法处理连续的目标变量 ,这与使用离散目标变量的分类方法不同 。 例如,预测未来几 1.6 监 督学 习 17 天的室外温度时·,我 们 会使用回归方法,而分类方法 只 能预测未来几天是否下雨 。一 般来说,回 归过程评估 的 是各 种特征之间的联系,即特征变化是如何改变目标变量的 。 1 . 线性回归 最基本的回归模型假定特征与目标变量之 间有线性依赖关系 。 这个模型经常使用最小 二 乘法 进行拟合,它是使误差 的 平方最 小的模型 。 许多情况下,线性回归不能对复杂关系进行建模 。 比 如,图 1-5 显示了 4 组不同的点,它们有相同的线性回归 曲线 。 其 中左上模型描述了数据的总体趋 势,可以认为模型是合适的;左下模型 对数据点的拟合更好,但有 一 个离群点(你应该小心检查 它);右上与右下 的线性模型 完全偏离了下层的数据结构,不能将其视为合适的模型 。 12 -1 12 . 10 五二 8 . .·纱’马 . 6 6 . . 4 同 . 4 6 8 10 12 14 16 18 4 6 8 10 12 14 16 18 X1 X2 . 12 12 10 10 . 去 8 去 8 6 :1γ ’ 4 4 6 8 10 12 14 16 18 4 6 8 10 12 14 16 18 X 3 X4 图 1-5 线性回归模型 2 . 回归评估 回归中,我们从输入X预测数值 Y ,这些预测通常是错误的、不准 确的 。 我们 要 问的 主要 问 题 是:这些预测值与实际值 相 差多 少 ? 换言之,我们要测量预测值与实际值之间的距离 。 (1 )均方 误差 均方误差( mean squared error )是预测值与实际值差的平方和的平均值,计算公式如下: 、简 、、 18 第 1 幸机器学习应用快速入门 MSE(X, Y) = ,/.!._艺 (f(X;)-1';) 2 n 王I 均方误差对异常值非常敏感 。 比如, 99 个准确率 100 % 的预测加上 l 个准确率为 90% 的预测, 得分和 100 个准确率为 99% 的预测一样 。 而且,均方误差对平均值也敏感 。 因此,人们更多使用相 对平方误差( relative squared error )将预测器的 MSE 与均值预测器一一总是用于预测平均值一一 的 MSE 进行比较 。 (2 )平均绝对误差 平均绝对误差( mean absolute error )是预测值与实际值差的绝对值之和的平均值,计算公 式 如下: MAS(X,Y) =过|只不)一写| MAS 对异常值不太敏感,但它对平均 值与规模是敏感的 。 (3 )相关系数 相关系数以两变量与各自平均值的离差为基础,通过两个离 差 相乘反映两变量之间相 关程 度 。 若相关系数为负值,则表示弱相关;若为正值,则表示强相关;若为 0 ,则表示不相关 。实 际值X与预测值立之间的相关系数定义如下 : ): ,(X -X)(Y Y) cc 叩= 】 叫 … ~ I, ;'= 1 (X; - X) 2 ~L ;= I (写- f) 2 相关系数对平均值与规模完全不敏感,对异常值不太敏感 。 它能获取相对排序( relative ordering ),对文档关联性与基因表达等任务进行分级排列时很有用 。 1.7 泛化与评估 模型创建好之后,我们如何知道它针对新数据正常工作?这个模型有什么好 ? 为了回答 这 些问题,首先学习模型泛化( model generalization ),然后了解如何对模型在新数据上的性能 进 行评估 。 欠拟合与过拟合 对预测器训练得到的模型可能太复杂或者太简单 。 低复杂度 模型(最左边模型)可能像预测 最频繁或平均类值一样简单 ,而高复杂度模型(最右边模型)能够 表示训练实例 。 模型太 刚性 (如 1.7 泛化与许估 19 图 1-6 左侧模型)就不能获得复杂模式,而模型太柔性( 如图中 右 侧模型)就会 把训 练数据中 的 噪声 也 一 起融合进去 。 我们面临的主要挑战在于选择合适 的 学习方法及其参数,只有这样,经过 学 习得到的模型才能在新数据上有良好的表现( 见图 1-6 中间模型) 。 .· .一-『---A•.. . . . 。 , , 。 。。 , , ..。 。。 I .。 。 , -, 。 川 . 。 I • • 。 , A , ·。。们, 。 , 。 、/才 。 。。 ,, . 、 。… - ’ “ 白, , 、 。 。 V l 。 , · .I I 。… 。 I · • •I 。 \ / 0 … 。、,, , 。 、、.. ,,‘。 图 1-6 不同类型的模型 。 。。 … ~ 。 。 J ,『』工J 。 。 < · 、、‘ A”·、、 。~ . n 11 'lrt. _ 。 怡,- /. /飞 飞 】 。 rr’- 。。 1 • 1 。 。。 图 1-7 反映了训练集中的错误是如何随着模型复杂度减少 的 。 简单刚性模型对数据的拟合度 不 够,导致大量错误 。 随着模型复杂度 的 增 加,它可以更好地描述训练数据的结构, 错误 必 然会 减 少 。 如果模型太复杂,极有可能对 训 练数据 拟 合过度,预测错误随之增 加 。 刚性模型 柔 ·性 模型 p .’未\来数据 谷~-- Y . 尔;拟合 F \\
还剩35页未读

继续阅读

下载pdf到电脑,查找使用更方便

pdf的实际排版效果,会与网站的显示效果略有不同!!

需要 10 金币 [ 分享pdf获得金币 ] 0 人已下载

下载pdf

pdf贡献者

mozai

贡献于2018-06-19

下载需要 10 金币 [金币充值 ]
亲,您也可以通过 分享原创pdf 来获得金币奖励!
下载pdf