产品经理进阶:100个案例搞懂人工智能(txt+pdf+epub+mobi电子书下载)


发布时间:2021-08-04 06:07:49

点击下载

作者:林中翘

出版社:电子工业出版社

格式: AZW3, DOCX, EPUB, MOBI, PDF, TXT

产品经理进阶:100个案例搞懂人工智能

产品经理进阶:100个案例搞懂人工智能试读:

前言

写作缘由

2016 年,我曾看过一则新闻,讲述日本的北海道大学修建了一段不会被大雪覆盖的道路。其奥秘在于道路边上铺设了加热管,道路中设置了几个摄像头,能够通过图像识别技术检测落雪的厚度。加热管根据落雪的厚度自动调节温度,这样做能够用最低的能耗保持道路不被积雪覆盖。

这件事带给我很大的触动:原来人工智能还能这么玩,做这么酷的事情!人工智能可以帮助我们解决很“大”的问题,大到证券的量化分析、交通资源的动态配置等;也可以帮助我们解决很“小”的问题,小到让我们走在路上不用受积雪的困扰。这离不开工程师的开发能力,更离不开产品经理发现需求、寻找解决方案的能力。很荣幸我能成为其中一员,能为人工智能的发展做出一点贡献。

最初,我刚开始接触人工智能的时候,学习算法的过程非常痛苦和艰辛,主要原因在于,国内外所有人工智能相关的教材几乎都是面向专业技术人员编写的,通篇都是公式的推导与计算,很少有老师着眼于原理和场景的讲解。这对于非专业出身的产品经理来说非常不友好,晦涩难懂的公式实在是难以消化,只能花大量的时间研究资料,慢慢理解。2018 年,在电子工业出版社策划编辑郑柳洁的盛情邀请下,我萌生了为产品经理写一本算法入门书的想法。在写作过程中,我一直在思考采用什么形式才能将算法的本质讲得通俗易懂,减轻读者学习的压力。最终决定以案例讲原理,用生动的比喻代替枯燥的公式方式,让产品经理更容易接受、更容易理解。这也是本书名字的由来。

如果你想成为人工智能领域的产品经理,但又不懂技术、不懂算法,那么本书能够让你对人工智能的算法与应用有新的认知和理解,不会再觉得人工智能是一个高不可攀、遥不可及的领域。相反,人工智能是普通人也可以理解、学习和实现的,没有技术背景的产品经理也能通过学习此书,成为一名优秀的人工智能产品经理。

阅读建议

本书旨在帮助想要进入人工智能领域的产品经理掌握常见的机器学习、深度学习技术,了解不同技术的应用方式与场景,同时掌握正确的工作方法,在整个产品研发周期中体现出人工智能产品经理的价值。全书共分13章,从数据如何处理开始,到模型调优,再到算法的原理与商业化应用,由浅入深,探索人工智能的奥秘。建议读者按照章节顺序阅读,以便对机器学习有系统的认识。

第1章主要介绍什么是机器学习,以及哪些问题适合用机器学习来解决。当你对机器学习有一个初步认识后,我们再具体学习机器学习有哪些步骤,如何选择模型,以及机器学习可以分为哪些类别。

第2章主要介绍数据预处理的各种方法。在实际的项目中,最初拿到手的原始数据总是存在各种各样的问题,为了让模型更好地学习数据中的规律,我们采用数据预处理的方法对原始数据进行加工。

第3章主要介绍数据的探索方法与模型的评价指标。通过对数据本质、可视化方式及模型指标三方面的探索,让产品经理对数据有更深刻的认识与理解。掌握数据的基本概念可以让我们在收集数据及进行数据预处理时更有针对性,知道哪些是不符合要求的数据,哪些是有价值的数据。

第4~8章主要介绍五大机器学习基础算法——回归分析、决策树、朴素贝叶斯、神经网络和支持向量机,它们的基本原理、应用场景,以及在模型开发的过程中产品经理如何有效地解决问题。

第9~10章主要介绍集成与降维算法,这两类比较特殊的机器学习算法能够有效提升机器学习的效果。

第11~13章主要介绍深度学习在图像识别、自然语言处理与AI绘画三个方向的发展与成果。深度学习已经成为计算机视觉、语音识别和许多其他领域中机器学习的主要方法,因此也是产品经理必须关注、了解的重要领域。

致谢

感谢家人给我的大力支持,特别感谢我的妻子张容焕一直以来对我的理解与鼓励。

感谢深大互联网圈、十八罗汉工作室对本书的支持,感谢王正勇对本书的指导与帮助。

感谢平安科技同仁,感谢姜凯英、王仲秋等领导对本书的支持。

感谢电子工业出版社策划编辑郑柳洁为本书出版所付出的辛苦和努力。

最后,由于作者的水平有限,书中难免存在一些错误或不准确的地方,恳请读者批评指正。如你遇到任何不解的问题,或想提出宝贵意见,请添加微信号justinaqiao与作者交流,期待能够得到你的真诚反馈。1 机器学习入门1.1 什么是机器学习1.1.1 人类学习VS机器学习

自计算机问世以来,人类一直尝试赋予计算机思想,让计算机变得更智能,使它能够理解我们说的话,看懂我们的表情,还能够帮助我们处理复杂的事情。为此,一个专门的学科诞生了,即人工智能(Artificial Intelligence)。如今,人工智能已经成为计算机科学的一个重要分支,它主要研究智能的实质,并提出一种模拟人类思考的方式。该领域的研究对象包括机器人、语音识别、图像识别、自然语言处理和专家系统等。

从20世纪50年代起,人工智能的发展进入第一阶段推理期,当时的人工智能通过赋予计算机一种简单的逻辑推理能力使它变得智能。在当时,计算机已经能够证明一些简单的数学定理,但远没有达到真正智能的标准。20世纪70年代,人工智能的发展进入了第二阶段知识期。在这个时期出现了大量的专家系统,很多科学家尝试将人类的知识教给计算机,这有点像中学生的“题海战术”。但人类产生的知识量巨大,计算机没有办法全部学会,因此人工智能的发展很快就遇到了瓶颈。

无论在推理期还是知识期,计算机都是按照人类设定的规则和总结的规律运作的,没有办法做到举一反三。如果只教会计算机做题,却没有教会它解题的思路,则下次遇到别的题目时它仍旧不会。于是一些学者想到,如果教会计算机学习的方法,让它能够自我学习,问题不就迎刃而解了吗?因此,机器学习(Machine Learning)的概念应运而生,人工智能终于进入“机器学习期”。

对人类来说,“学习”是指一个人通过观察、模仿、理解、实践等手段获得知识或技能的过程。父母亲会不断地和婴儿说话,婴儿则通过模仿“听”和“说”的方式逐渐学习语言。我们从小阅读书籍、模仿字帖写字,通过“听”“说”“读”“写”四种方式掌握使用、书写汉字的技能,这些都是学习的过程。

机器学习,顾名思义,就是让计算机也能像人类一样学习,通过观察和训练,发现事物规律,从而获得分析问题、解决问题的能力。我们对比一下人类学习和机器学习两个过程,人类学习汉字时需要用的书籍、字帖对于计算机来说相当于输入数据(Data),人类通过“听”“说”“读”“写”等不同的方式掌握使用汉字的能力,机器则通过某种学习算法(Learning Algorithm)去学习这些输入数据。最后人类把使用汉字称为一种技能(Skill)。对于计算机来说从这些数据中发现规律就是它的技能。通常,我们把机器学习的结果叫作模型(Model)。图1-1展示了人类学习与机器学习的对比。图1-1 人类学习与机器学习的对比

技能是运用知识和经验执行一定活动的能力。计算机通过学习,可以帮助我们做数据分类、轨迹预测、重要因子识别等事情。例如,根据基金的历史表现和对大盘的数据分析,预测明年众多的基金中哪些能够获得高收益;从茫茫人海中准确识别出每个人的容貌等。

从事过资讯或电商行业的产品经理经常会提到“个性化推荐”技术,淘宝在很早之前就把这项技术应用到了产品设计中。如图1-2所示,我们每次打开手机淘宝,看到的淘宝首页的广告栏及推荐板块的内容都不一样,并且很可能会惊喜地发现这些东西正好是我们想要的。图1-2 淘宝的个性化推荐1.1.2 机器学习三要素

怎么让计算机知道用户当下最想要买什么商品呢?要实现这个功能,需要具备三个方面的条件,如图1-3所示。图1-3 机器学习三要素

1. 数据

若想让计算机能够理解用户在想什么,首先要让计算机去观察这个用户在电商网站上都做了些什么,买了些什么。它需要观察的数据包括用户看了哪些商品,会点进哪些商品的详情页浏览,在哪些商品页面上停留的时间比较长,买了哪些商品等。这些历史数据中蕴含了绝大部分人的购买规律、生活状态,计算机甚至可以根据这些数据生成用户画像。这些数据像一座金矿一样静静地等待被挖掘,而我们希望计算机能够通过自主学习的方式,把其中的规律挖掘出来,以便将来面对新的用户和商品时,就能预测哪些商品会受到哪类用户的欢迎。

2. 学习算法

算法是机器学习数据的一种策略,就像“听”“说”这种人类的学习方法一样,可以帮助模型理解数据。然而算法都有一定的局限性,因此面对不同的数据、不同的目的,需要选择不同的算法。例如,预测客户当下想购买的商品,建立用户的画像或者分析客户的购买决策因素,需要使用不同的算法。机器学习算法有很多,常见的有逻辑回归、贝叶斯分类、决策树、随机森林等,这些算法我们在后面章节会详细介绍。

3. 模型

进行一系列的训练之后,计算机就能学得一个预测模型,下次用户登录进来时就能根据其历史行为做出判断,在首页推荐其想要购买的商品。同时也能做到面对新的用户和商品时,预测哪些商品会受到哪类用户的欢迎,让用户感觉该网站能够想其所想。

讲到这里,部分读者可能会有这样的疑问:我们通过人工的方法也能掌握这些规律,在没有机器学习之前我们也一直在做类似的事情,那为什么需要机器学习呢?

还是以淘宝为例,2017年“双11”的交易额突破了1682亿元,14万个品牌共投入1500万种商品参与到“双11”活动中。如此庞大的数据量已经远远超出了人类能够处理的能力范围,我们很难在短时间内从错综复杂的数据中找到蕴藏其中的规则,做出准确的判断。何况这些数据还是结构化的交易类数据,处理起来已经如此困难,更不用说现代企业每日决策所依赖的数据中有80%的数据为非结构化数据了。

对企业来说,商品的交易数据、运输成本、库存管理、历史定价、服务成本、支持成本等数据仅仅是每日做决策时所需的结构化数据的几个主要来源。而非结构化的数据,如社交媒体、邮件记录、通话记录、客户服务、技术支持记录、物联网的传感数据、竞争对手和合作伙伴的定价信息、供应链跟踪数据等以指数级增长的数据,其中常常会蕴含对优化推荐销售更具有指导意义的预测模型,而这些数据正是当今企业所忽视的,也是我们很难去总结和应用的数据。

但机器学习很善于处理这类问题,因为它会不断地学习并改善模型的表现。机器学习算法本质上是迭代、持续学习的,并且会寻找最优的输出结果。每出现一次误算,算法都会吸取教训并改正错误,然后开始下一次数据分析的迭代计算。计算过程以毫秒为单位,其可以异常高效地优化决策和预测输出。机器学习可以对大量数据进行分析并获得规律,然后利用规律对未知数据进行预测。它不但能从数据中看到人类能看到的规律,更重要的是能在更短的时间内发现人类看不到的规律,我想这就是机器学习最大的应用价值。

在医学领域,机器学习通过图像识别技术,已经实现了让计算机自动识别肿瘤细胞,帮助医生快速进行医学诊断;在制造业领域,通过强化学习的方式自动检测产品缺陷,提高出品率,帮助企业加快生产周期,降低生产成本;在金融领域,利用神经网络技术可以避免传统程序化交易因为无法根据实时发生的市场变动调整算法,从而造成资产损失的风险。在零售、安防、航空、互联网等其他不同领域,机器学习都有广泛的应用,它已经使我们的生活产生了巨大的变化。作为产品经理,更要学习各种算法的实现原理,知道实现机器学习的必要条件,从而懂得在后续工作中需要重点关注哪些方面的内容,以便运用机器学习解决问题。1.2 什么问题适合用机器学习方法解决1.2.1 必备条件

机器学习不是万能的,不能解决所有的问题。机器学习擅长的是通过已知经验找到规律去解决问题。如果我们面对的问题没有任何规律可循,完全是一个随机事件,那么使用再复杂的机器学习算法也无济于事。值得注意的是,很多问题看似没有规律,实际上是人类处理不了太大的数据量,看起来杂乱的数据掩盖了背后的规律,这类问题并非无迹可寻,只是需要用正确的方法。所以面对问题,产品经理首先要分析可行性,想清楚数据背后的关联关系,透过数据现象看到问题本质。

当银行决定某个客户的贷款额度时,可以根据过往成功放贷的数据找出每个贷款区间的人群特点、自身的房车资产状况等,然后再根据这个客户的信息进行计算。

每天我们的邮箱都会收到大量的邮件,其中包含了不少垃圾邮件。我们可以根据过往垃圾邮件的特点、经常出现的关键字和IP地址等,做一个能够自动识别垃圾邮件的程序。

一些产品线众多的企业早已开始利用客户购买记录以及行为特点来优化不同产品线的交叉销售策略,例如研究同时购买“啤酒”和“尿布”的男性顾客、同时购买“面包”和“打折商品”的女性顾客的特点。

上述例子都展示了适合用机器学习解决的问题,它们主要有以下三个必备条件,如图1-4所示。图1-4 使用机器学习的三个必备条件

1. 有规律可以学习

申请贷款、识别垃圾邮件和购买东西,这三者都不是随机事件,它们存在共性,有内在的规律等待被发现。

2. 编程很难做到

利用编程把上面的规律都写下来的难度非常大,比如银行面对的客户数据维度非常多,数据与数据之间的联系也非常复杂,我们很难通过穷举的方式把规则全都列清楚,并且这样的规则在面对异常数据时也没办法自我修正,对新数据的适应性也会变得越来越差;反之,机器学习可以通过对大量的数据学习形成模型,实现规则的自我学习,不断提升模型的准确率。

3. 有足够多能够学习到其中规律的数据

银行有大量历史上申请过贷款的客户可以参考,邮件程序有大量垃圾邮件的范本可以参考,企业也有大量成交客户数据可以供模型训练学习。最后这一点非常重要,谈机器学习而没有数据的支撑就像建造房子时没搭房梁便想砌砖加瓦一样。1.2.2 机器学习可解决的问题

满足这三个条件的问题,我们都可以尝试使用合适的算法去解决。如图1-5所示,通常我们可以使用机器学习解决以下五类问题。图1-5 机器学习可解决的问题

1. 回归

回归任务是机器学习最典型的应用场景,是一种预测场景。在这类任务中,计算机程序会通过输入数据的属性值(特征)找出规律来预测新的输出数值。就像是在二维平面中根据一些连续的点构建出一个函数方程,然后通过方程画出下一个点的位置。因此,通常我们把通过连续值构建模型的任务称为回归任务。常见的回归算法包括线性回归、逻辑回归、多项式回归以及岭回归,等等。

这类任务在日常生活中随处可见,例如保险公司通过历史保费数据去预测新投保人的索赔金额,以设置更合理的保险费,以及投资公司通过股票历史数据预测未来的价格等。这类预测也用在银行放贷交易中,根据已知数据和模型,评估应该给不同客户发放的贷款额度是多少。

2. 分类

上面的预测任务是通过连续值构建函数从而找到下一个预测值,分类任务则是对离散值进行分类并判断预测值的所属类别。在这类任务中,输入的训练数据不但要有属性值(特征),还需要有对应的标签(类别)。所谓的学习,本质就是找到这一堆特征值和标签之间的关系。这样当下次遇到有特征而无标签的未知数据输入时,我们就可以通过已有的关系预测出它们的标签是什么。常见的分类算法包括决策树、逻辑回归、朴素贝叶斯以及神经网络算法等。

分类任务不但在日常生活中很常见,在互联网领域也有着极为广泛的应用,典型场景有商品图片的自动识别分类、广告点击行为的预测,以及基于文本内容的垃圾短信、垃圾邮件识别,等等。在电商及金融领域常用的客户画像精准营销也是一种综合性的分类任务。

另外,我们在电商领域中经常看到的推荐系统实际上是一个分类结合回归的复杂场景。推荐系统通常利用客户的历史行为、当前用户所处的环境以及商品的特点来决定推荐的内容。所以,当我们设计规则的时候可以从商品出发,找到其受众特点,也可以从人群出发,找到他们的商品偏好。值得一提的是,电商的推荐系统往往是由模型以及业务规则叠加组合而成的,并非单纯依靠算法计算适合推荐的商品。

3. 聚类

聚类是指根据“物以类聚”的原理,将样本聚集成不同组的过程,这样的一组数据对象集合叫作簇。聚类的目的是使得属于同一个簇的样本相似,而属于不同簇的样本应该足够不相似。与分类不同,我们进行聚类前并不知道将要划分成几个组以及是什么样的组,训练数据不需要带有标签,完全依靠算法聚集成簇。

产品经理经常做的用户行为分类就是一个典型的聚类场景,事先我们并不知道用户会进行什么操作,完全根据用户的使用情况对用户进行分类。在这个场景下往往根据运营人员所能接受的运营数目,给定聚类数来使用聚类。完成后为每个结果标注变量的大小,告诉运营人员每个类别的属性,然后分别制定不同的运营策略。

4. 寻找关键因素(归因)

机器学习的另一个用处是帮助我们找到影响某个问题的重要因素。比如上述银行放贷的例子中,客户的属性非常多,通过模型我们可以找出对放贷影响最大的因素,以便指导业务同事重点收集客户与该因素有关的信息。

5. 异常检测

在这类任务中,机器需要识别其特征显著不同于其他数据的异常值,并标记为不正常的数据。异常检测任务的一个典型应用场景是信用卡欺诈检测。通过对用户的购买习惯建模,信用卡公司可以检测到用户的卡是否被盗用。一旦发现某张卡出现大量和平时购买习惯不同的交易,信用卡公司会判定这张卡发生了不正常的消费行为,此时可以尽快冻结该卡以防欺诈。另外,在网络攻击、疾病的病因寻找、工厂的质量检测中也会大量运用机器学习的异常检测技术。

产品经理拿到需求后,在构想整个使用场景的时候,应首先想这个问题到底适不适合用机器学习的方式去解决,同时还需要思考怎么拿到有效的数据,如果有数据缺失如何补充,数据类型是什么样的,是否有合适的算法可以支持实现。在心里有了初步的答案后,再和开发工程师进行交流。这种对数据的提前考虑能够极大地提高沟通效率。1.3 机器学习的过程1.3.1 机器学习的三个阶段

学习了机器学习的概念后,我们知道机器学习实际上就是计算机通过算法处理数据并且学得模型的过程。“模型”这个词经常被我们挂在嘴边,但大部分人仍然不清楚模型是怎么做出来的,模型在计算机里是怎么表示的,对模型很难有一个具象的认识。实际上模型主要完成转化的工作,帮助我们将一个在现实中遇到的问题转化为计算机可以理解的问题,这就是我们常说的建模。

如图1-6所示,在机器学习中生成一个模型的过程包括准备数据、建立模型以及模型应用三个阶段。准备数据有收集数据、探索数据及数据预处理三个步骤。对数据进行处理后,在建立模型阶段开始训练模型、评估模型,然后通过反复迭代优化模型,最终在应用阶段上线投产使用模型,在新数据上完成任务。图1-6 机器学习的三个阶段

在数据准备阶段,我们首先通过各种渠道收集相关数据,然后对数据、需求和机器学习的目标进行分析,尤其是对数据进行一些必要的梳理,从而了解数据的结构、数据量、各特征的统计信息、数据质量情况及分布情况等,以便后续根据数据的特点选择不同的机器学习算法。除此之外,为了更好地体现数据分布情况,我们通常选择用可视化的方式把数据的概况展示出来。

通过数据探索,我们可能会发现不少问题,如存在数据缺失、数据不规范,有异常数据、非数值数据、无关数据和数据分布不均衡等情况。这些问题会直接影响数据的质量,因而得到的模型误差率会偏高。我们希望把样本数据的各个变量处理得更规范整齐并且具有表征意义,这样才能最大限度地从原始数据中提取特征信息以便算法和模型使用。为此,接下来要进行重点工作——数据预处理,这是机器学习过程中必不可少的关键步骤。生产环境中的数据往往是原始数据,也就是没有经过加工和处理的数据,这类数据常常存在千奇百怪的问题,因此,数据预处理的工作通常占据整个机器学习过程的大部分时间。

接下来就是整个机器学习中的重头戏——建模。训练模型的过程从本质上来说就是通过大量训练数据找到一个与理想函数最接近的函数。这是所有机器学习研究的目标,也是机器学习的本质所在。

最理想的情况下,任何适合使用机器学习去解决的问题,在理论上都能被一个最优的函数完美解决。但在现实应用中不一定能准确地找到这个函数,所以我们会去找与这个理想函数较接近的函数。如果一个函数能够满足我们的使用,那么我们就认为该函数是好的。

在训练数据的过程中,通常认为存在一个假设函数集合,这个集合包含了各种各样的假设函数,我们需要做的就是从中挑选出最好的一个,这个假设函数与理想函数是最接近的。训练模型的过程,就好比在数学上,我们知道有一个方程和一些点的坐标,用这些点来求这个方程的未知项,从而得到完整的方程。但在机器学习中,我们往往很难得到这个完整的方程,所以我们只能通过各种手段求最接近理想情况下的未知项的值,使得这个结果最接近原本的方程。图1-7展示了模型训练的本质。图1-7 模型训练的本质

这个过程非常重要,在后续章节真正学习机器学习算法时,我们需要利用这个过程去理解算法的实现过程、构造损失函数的原因,以及找到所谓“最优解”的方法。在实际问题求解中,我们将理想函数与实际函数之间的差距称为损失值,所有的损失值加起来构成一个损失函数。求解最好的实际函数,也就是求解令损失函数最小化的过程。1.3.2 模型的训练及选择

一般情况下,不存在在任何情况下表现效果都很好的算法。因此在实际选择模型时,我们会选用几种不同的方法来训练模型,比较它们的性能,从中选择最优的方案。在训练模型前,可以将数据集分为训练集和测试集,或将训练集再细分为训练集和验证集,以便评估模型对新数据的表现。

构建模型后,我们通常使用测试数据测试模型的效果。如果我们对模型的测试结果满意,就可以用这个模型对新数据进行预测;如果我们对测试结果不满意,则可以继续优化模型。优化的方法很多,在后面的章节中再详细讨论。

到这里模型训练的工作就完成了。计算机在样本数据上使用一个算法,经过学习后得到一个模型,然后为模型输入新的待预测的数据,得到最终的预测结果。

总结上述训练模型的过程,可分为以下三步:(1)根据应用场景、实际需要解决的问题以及手上的数据,选择一个合适的模型。(2)构建损失函数。需要依据具体的问题来确定损失函数,例如回归问题一般采用欧式距离作为损失函数,分类问题一般采用交叉熵代价函数作为损失函数,这部分内容在后续章节会展开讲述。(3)求解损失函数。求解损失函数是机器学习中的一个难点,因为做到求解过程又快又准不是一件容易的事情。常用的方法有梯度下降法、最小二乘法等,这部分内容同样在后续章节会展开讲述。

实际上在每个阶段,产品经理都可以做很多事情以帮助开发工程师提升模型的效果,因为产品经理最接近业务,最了解一线需求,也就是最了解问题背景、方案应用场景、业务数据,等等。在整个项目开始之前我们需要确保开发工程师能够完全理解业务场景,明确模型的目标。在准备数据阶段,我们可以根据业务经验告诉开发工程师哪些数据是业务同事重点关注的,哪些数据可能会更有价值,哪些数据之间可能存在关联。比如在建立一个预测客户贷款倾向度模型时,我们会根据银行的经验把一些符合贷款申请的条件和规则告诉开发工程师,以便他们做数据过滤及异常数据的处理。在建模阶段,我们同样可以根据对业务场景的理解提出模型与数据源优化的方向,让程序开发和场景应用两个环境能够真正有机地结合起来。1.4 机器学习的类型

产品经理在日常工作中经常要用到一些理论方法来帮助解决问题。例如,在需求调研阶段,使用深度访谈、焦点小组、问卷调查、可用性测试等方法获得用户的真实反馈。在需求分析阶段,使用KANO模型、RFM模型、重要性象限判断等方法划分需求优先级。选择方法的关键是看使用场景以及不同产品的特性。在机器学习方面同样也有很多不同的算法,选择算法的关键是看数据的类型和待解决的问题。

如图1-8所示,机器学习最常见的分类方式是根据数据有无标签分为四类:数据全部有标签的情况称为有监督学习,这种学习通过已有的一部分输入数据与输出数据之间的关系生成一个函数,再将输入数据映射到合适的输出数据;数据没有标签的情况称为无监督学习,这种学习直接对输入数据进行建模,挖掘数据之间的潜在关系;部分数据有标签的情况称为半监督学习和强化学习,前者综合利用有标签的数据和没有标签的数据,生成合适的分类函数,后者通过观察反馈自己去学习。以上几种学习方式并无优劣之分,只是应用场景不同。图1-8 机器学习的四种类型1.4.1 有监督学习

大人们教导幼儿学习事物的类别时,会明确告诉幼儿哪些是书,哪些是桌子。类比到机器学习中,幼儿眼中看到的景物就是输入数据,大人们告诉幼儿的判断结果就是相应的输出。当幼儿见识多了以后,脑子里慢慢就会形成直观的感觉,记住这些事物的特点,这相当于通过训练得到了想要找到的函数,因而下次不需要别人告诉他们,他们就可以自己去判断哪些是书,哪些是桌子。这个过程叫作有监督学习(Supervised Learning)。

有监督学习的训练集要求每一条数据都包括输入和输出,也就是说必须带有特征和分类结果。训练集中的分类结果是人为标注好的,有监督学习是一个通过已有训练样本的输入与输出训练模型,再利用这个模型将所有的新输入数据映射为相应的输出,对输出进行判断从而实现分类的过程。最终模型具备了对未知数据分类的能力。有监督学习的目标是让计算机去学习我们已经创建好的分类系统。例如,在垃圾邮件检测中,模型的训练数据都是提前区分好的垃圾邮件与正常邮件,我们不需要机器去定义什么是垃圾邮件,只需要机器找到垃圾邮件出现的规律即可。

有监督学习是最常见的传统机器学习算法,如人工神经网络、支持向量机、K近邻法、朴素贝叶斯方法、决策树等都是有监督学习。1.4.2 无监督学习

当幼儿长大成年之后,在认识世界的过程中经常用到无监督学习。例如,我们去参观画展,每个人对艺术的认识都不相同,这就需要我们自己去体会作品,寻找美的感觉。类比到机器学习中我们看到的画作就是输入数据,没有人告诉我们哪些画是更美的作品。看多了以后,我们会形成自己的审美标准,也就相当于通过大量的画作找到了一个函数,下次面对新的画作时,我们可以用自己的审美方式去评价这幅作品。这样一个过程就叫作无监督学习(Unsupervised Learning)。

无监督学习的训练集使用无标签的数据,也叫无输出数据。每一条数据没有所谓的“正确答案”,模型必须自己搞明白最后呈现的是什么。无监督学习的目标不是告诉计算机怎么做,而是让计算机自己去学习怎么做,自己去探索数据并找到数据的规律。我们常说的“物以类聚,人以群分”就是最典型的例子。只需要把相似度高的东西放在一起,模型就能发现它们的规律。对于新来的样本,计算新样本与原来样本的相似度后,模型可以按照相似程度对它们进行归类。当我们在做营销方案时,经常会遇到没有任何分群依据的情况,这时候用无监督学习可以识别有相同属性的顾客群,从而在营销活动中以同样的方式对待这些客户,同时也可以通过模型找到适合这个活动的客户的特点,从而为营销建议提供决策支持。

有别于有监督学习网络,无监督学习网络在学习过程中并不知道其分类结果是否正确。无监督学习的特点是仅仅从样本中找出某个类别的潜在规律。常见的聚类问题都属于无监督学习。1.4.3 半监督学习

通常我们能够使用有监督学习得到一个性能更好、泛化能力更强的模型。有监督学习最大的限制条件在于必须使用带有标签的数据。在如今数据爆炸的时代,想要给数万亿的数据都打上标签是不太现实的事情。在图像识别领域,我们可以轻易地收集到几十万或上百万张关于桌子、椅子、书本和玩具的图片,但是要对每一张图片都打上标签,标明哪张图片是桌子,哪张是椅子,代价非常高,是一项耗时耗力的工作。我们在实际项目中拿到的往往是其中只有少量数据有标签的海量数据,这种情况非常不利于使用有监督学习方法。

半监督学习(Semi-supervised Learning)就是为解决上述问题而产生的,其目的在于利用海量未带标签数据,辅之以少量带标签数据进行学习训练,增强计算机的学习能力。半监督学习在训练阶段结合了大量无标签数据和少量标签数据。虽然无标签数据不能够提供类别信息,但是这些数据中蕴含了大量的数据分布信息,这些规律对模型学习起到正向帮助的作用。

半监督学习可被进一步划分为纯半监督学习和直推学习。纯半监督学习假定训练数据中的未标记样本并非待预测数据,而直推学习假定学习过程中所考虑的未标记样本就是待预测数据,学习的目的就是在未标记样本上获得最优泛化性能。也就是说纯半监督学习基于开放世界的假设,希望学得的模型能适用于训练过程中未观察到的数据;而直推学习基于封闭世界假设,仅试图对学习过程中观察到的未标记数据进行预测。对此,产品经理只需了解即可,不需要深入了解两种学习的区别。

半监督学习结合了有监督学习与无监督学习的特点,利用有标签数据的局部特征和分类方式,以及更多无标签数据的整体分布情况,就可以得到比单一数据源更好的分类结果。1.4.4 强化学习

AlphaGo的表现让很多人认识到强化学习的威力,通过这一方式训练出来的模型竟能达到如此智能的地步。强化学习(Reinforcement Learning)会在没有任何标签的情况下,先尝试做出一些动作得到一个结果,通过这个结果的反馈,调整之前的行为。通过不断的调整,算法强化自身的决策能力,最终能够根据不同的情况,获得不同的决策结果。

这种学习方式和有监督学习有点类似,它们都会学习从输入到输出的一个映射。但有监督学习输出的是数据之间的关系,可以告诉算法一个输入对应什么样的输出。所谓强化学习就是智能系统从环境到行为映射的学习,目的是获得最大的奖励信号。也就是说强化学习输出的是给机器的反馈,用来判断这个行为是正确的还是错误的。另外,强化学习的结果反馈有延时,有时候可能在走了很多步以后才知道前面某一步选择的优劣,而有监督学习做了比较坏的选择之后会立刻反馈给算法。

有监督学习就好比有家长陪伴的学习,家长会马上告诉幼儿对错,纠正幼儿的错误。而强化学习就好比有一只还没有训练好的小狗,每当它把屋子弄乱后,主人就减少狗粮的数量。每次表现不错时,狗粮的数量就加倍。在这个过程中,先做一次小狗弄乱房间的试验,最终获得一个减少狗粮的负反馈结果,接下来小狗要是表现很好就获得一个增加狗粮的正反馈结果,这样反复很多次后,小狗会知道把客厅弄乱是不好的行为。

虽然强化学习和无监督学习都使用无标签数据进行学习,但两者之间有很大的区别。例如在向用户推荐新闻的任务中,无监督学习会找到用户先前已经阅读过的类似新闻,并向他们推荐一个同类的新闻;而强化学习则通过向用户推荐少量新闻的方式,获得来自用户的反馈,最后构建用户可能会喜欢的新闻的“知识图”。选择哪种学习方式,主要看业务场景的需要以及具体问题下的实现难度。1.5 产品经理的经验之谈

本章开篇主要讲述机器学习的概念及机器学习适合解决的问题。对机器学习有一个初步认识后,我们再具体学习机器学习的过程,以及如何选择模型,机器学习可以分为哪些类别等。

机器学习让计算机也能像人类一样通过观察大量的数据发现事物规律,获得某种分析问题、解决问题的能力。计算机需要得到数据、学习算法及模型三方面的支持,才能在面对新数据时自动做出判断,主动学习。

机器学习不能解决所有问题。机器学习擅长的是通过已知经验找到规律从而解决问题。对于同时满足有规律可以学习,通过编程很难实现,并且有足够多能够从中学习到规律的数据三个条件的问题,我们可以尝试挑选合适的算法去解决。基于上述条件,我们经常用机器学习来解决预测、分类、聚类、归因、异常检测等方面的问题。预测和分类的主要区别在于使用的数据源类型不同。预测主要使用连续值构建函数,分类主要使用离散值构建函数。分类与聚类类似,主要区别在于在分类场景下,我们已经知道训练数据的分类有哪些,而在聚类场景下我们可能不知道,要根据需要对数据进行聚合。

机器学习生成一个模型的过程通常包括准备数据、建立模型及应用模型三个阶段。准备数据阶段包含收集数据、探索数据、预处理数据三个步骤。处理数据后,在建模阶段开始训练模型、评估模型,然后优化模型,最终到应用阶段投产使用模型,在新数据上完成机器学习的任务。数据的质量直接决定了模型的表现如何,因此我们需要在数据预处理上花费更多的心思,让数据的表现力更强。

其实很多机器学习都是在解决类别归属的问题,即给定一些数据,判断每条数据属于哪些类,或者和其他哪些数据属于同一类等。如果我们只对这一堆数据进行某种划分,通过它们内在的一些属性和联系,将数据自动整理为某几类,这就属于无监督学习。如果我们一开始就知道了这些数据包含的类别,并且有一部分数据(训练数据)已经被标上了类别,我们通过对这些已经标好类别的数据进行归纳总结,得出一个映射函数,从而对剩余的数据进行分类,这就属于有监督学习。而半监督学习指的是在训练数据十分稀少的情况下,利用一些没有类标的数据提高学习准确率的方法。根据反馈的好坏来推导规则,以进行下一步学习的方式就是强化学习。

最后,产品经理是需求与开发之间的桥梁,千万不能把需求交给开发人员后,就摆出一副事不关己的姿态。产品经理不但要考虑如何提升模型的精度,更要思考模型应用后,如何提升应用效果。2 数据的准备工作2.1 数据预处理2.1.1 为什么要做数据预处理

数据准备有收集数据、探索数据、数据预处理三个步骤。这一章我们重点讲解如何挖掘数据的有效信息以及如何对数据进行预处理,以便从加工后的数据中提取特征,为模型学习打下坚实的基础。

在信息化时代,数据逐渐成为现代社会基础设施的一部分,就像日常生活中不可或缺的水、电、公路、通信网络一样。同时因互联网的快速普及,全球数据量正呈现出指数级的爆炸式增长。弗雷斯特研究公司的公开研究结果表明,目前金融交易、社交媒体、GPS 坐标等数据源每天产生超过 2.5EB 的海量数据。美国国际数据集团预测,按照目前全球数据总量50%左右的增长率预估,至2020年全球产生的数据总量将达到40ZB。

面对如此庞大的数据矿山,想要挖出有价值的金子可不是一件容易的事情,其主要原因在于数据来源渠道太广泛,因此收集到的数据质量参差不齐,缺失大量的数据或存在很多异常数据。导致数据不完整或者不准确的原因有很多,例如不同渠道用户填写的信息不同、用户修改信息后历史数据没有被覆盖、数据传输过程中丢失、命名约定不一致或输入字段格式不一致等。在银行办理过业务的同学都有过这样的经历,填表时,对于不重要的信息选择不填写,不便透露的信息随便填写,“生日”直接选择默认值“1月1日”,“家庭住址”填写了城市,这些行为都会给数据处理人员造成不少的困扰。

想象你是一家互联网金融公司的产品经理,你设计了一个功能,通过用户注册时填写的“兴趣爱好”来推荐不同的理财业务。上线后却发现转化率非常低,仔细一看数据才发现“兴趣爱好”区域中默认勾选了几个板块,因此很多用户懒得修改,就直接进入下一步了。从数据上看有几个板块较受欢迎,但实际上不是用户的真实想法。这种“不真实”的数据会让产品经理产生错误的判断。同样,这种“不真实”的数据也会给模型以错误的引导。

数据和特征决定了机器学习的上限,而模型和算法的应用只是让我们逼近这个上限。这个说法形象且深刻地道出数据处理和特征分析的重要性。给定不同的训练数据,训练出来的模型的效果可能天差地别。因此上述这种数据格式不统一、存在异常值和缺失值的现象,会让机器的学习过程变得十分艰难。如图2-1所示,一般情况下,我们获得的原始数据可能存在以下几个问题。图2-1 原始数据可能存在的问题(1)存在缺失值:部分字段没有信息,需要补充缺失值。(2)存在异常值:部分字段因为记录错误,导致出现不在正常取值范围内的数值。(3)信息的度量范围不同:很多字段的数值取值范围不同,例如年龄的取值一般在0~120的区间,身高的取值通常在60~230的区间。具有不同单位、度量范围的数据很难放在一起比较,需要通过某些方法让所有数据的取值都处在一个范围里。(4)信息表达的意义不准确:对于某些定量特征,其包含的信息是以区间划分的数值,不同数值代表的含义有很大差别。例如学生的考试成绩,“59分”和“60分”虽然只有1分之差但表示的含义是完全不同的,我们可以将定量的考分,转换成“1”和“0”表示及格和未及格。(5)定性特征不能直接使用:某些机器学习算法和模型只能接受定量特征的输入,需要将定性特征转换为定量特征。最简单的方式是为每一种定性值指定一个定量值,例如客户的“兴趣爱好”这个字段有“文体活动”“投资理财”等,我们可以把这些表述转化成“01”“02”这样的数值以便机器能够加以区分。(6)信息利用率低:不同的机器学习算法和模型对数据中信息的利用是不同的,部分数据的表达能力比较弱,需要通过数据增强的手段才能让机器更容易理解。

为了解决以上问题,提高数据质量,工程师们在训练模型前首先需要想办法提升数据的质量。因此他们创建了许多数据预处理技术,通过这些技术能够增强数据的表现力,让算法发挥最佳的效果。数据预处理主要分为数据清洗、数据集成、数据变换及数据归约四个步骤。在数据清洗阶段,我们试图填充缺失的值,光滑噪声点和识别离群点,并纠正数据中不一致的取值。在数据集成阶段,我们会将多个数据源中的数据整合存放在统一的数据源中,这样做有助于减少结果数据集的冗余和不一致,提高后续建模的准确性和速度。在数据变换阶段,我们通过平滑聚集、数据概化、规范化等方式将数据转换成适用于数据挖掘的形式。在数据归约阶段,在尽可能保持数据原貌的前提下,最大限度地精简数据量。这样,使用归约后的数据集训练模型更加高效,并且能够产生与原数据集相同的分析结果。2.1.2 数据清洗

拿到数据之后,我们首先进行数据清洗。数据清洗是整个数据预处理的第一步,也是对数据重新审查、校验的过程。通过这个环节,能够统一数据格式,清除异常值以及填补缺失值,不让错误、不规整的数据进入模型中。通常情况下,我们可以按照格式标准化、错误纠正、异常数据处理以及清除重复数据这样的顺序检查数据问题并且选择合适的方法处理其中待改善的数据,如图 2-2 所示。数据清洗的方法非常多,产品经理只需要了解数据清洗的一般思路,在面对实际问题时能根据数据源的特点选择合适的方法进行清洗即可,没有必要把全部方法都使用一遍。图2-2 数据清洗的一般步骤

1. 格式标准化

拿到数据之后,我们首先统一数据格式规范。不规范、不统一的数据可能不会影响我们对数据含义的理解,但是影响模型对数据的理解。因此含义相同的字段需要采用统一的表达形式,例如,1 月 30 日、1/30、1-30 表达的都是同一天,需要统一采用标准时间戳格式。深圳福田、深圳市福田区、深圳福田区都表达相同的含义,需要采用相同的表达形式。最后检查数据中不应该出现的字符,最常见的是字段中头部、中部、尾部误输入的空格,或者是姓名中存在数字、身份证号中出现汉字这样的情况。

2. 错误纠正

接下来检查数据中有没有出现与该字段不符的内容,产品经理可以对数值型以及枚举型字段的取值设定一个范围,依靠业务知识与经验帮助工程师修正数据中出现的错误取值。例如银行在分析客户的消费情况时,会发现部分客户的信用卡消费金额中出现负数的消费记录,如果有对应数额的消费记录则可以判断这笔记录是一笔退款,则可以同时清除这两条消费记录。如果没有对应数额的消费记录,则判断这笔记录是一笔还款,则可以消除这条入账记录。

还有一种常见的错误是输入位置错误,例如在姓名栏填写了性别,在身份证号栏填写了手机号等。对于这种情况,不能简单地删除错误数据,因为有可能是人工填写错误,也有可能是前端没有校验,还有可能是导入数据时存在部分或全部列没有对齐的问题,因此我们要仔细识别问题类型,逐个进行处理。

3. 异常数据清理

统一数据格式后,开始分析数据的异常情况。在这个环节需要处理含有缺失值及异常值的数据,缺失值是指字段取值缺失的数据,异常值指的是数据集中偏离大部分数据的取值的数据。

在没办法补充数据的情况下,对于数据的缺失值,一般采用删除法或插补法处理。删除法比较简单,如果存在缺失值的数据量不大,则可以直接删除这些缺失的记录。如果某个变量的缺失值较多且对研究目标没有太大影响,则可以将这个变量整体删除。在条件允许的情况下,可以用插补法找到缺失值的替代值进行插补,尽可能还原真实数据的分布情况。常见的插补法有两种形式。(1)使用属性的中心度量填充缺失值:统计某个缺失特征的数据分布情况,对于均匀分布的特征数据可以使用均值进行插补;对于分布不均匀的特征数据可以使用中位数进行插补,如图2-3所示。还是刚才银行分析客户消费情况的例子,如果部分客户的月收入特征没有数值,则可以统计所有客户的月收入情况,取月收入的中位数或均值,填充到缺失该特征的样本中。图2-3 使用属性的中心度量填充缺失值(2)使用最有可能的值填充缺失值:使用算法推测缺失值,常见的算法有回归算法、贝叶斯算法或决策树算法。如图2-4所示,如果我们想要更加准确地知道一个客户的月收入,则可以通过决策树的方式找出和这个客户具有相同特征的人群,对比该人群的月收入情况再确定缺失值。或者通过回归算法,预测出这个客户最有可能的月收入情况,以此填充缺失值。图2-4 使用算法推测缺失值

异常值也称为数据噪声,若想处理噪声数据,首先要了解如何找到这些噪声点。通常我们会采用两种方法寻找噪声点:一种是计算该数据集的均值,选择与均值差距较大的数据点作为噪声点;另一种是采用聚类方法,将某个特征可能出现的取值集合成“群”,落在“群”集合之外的值被视为离群的噪声点。检查噪声后,采用分箱、聚类、回归、机器和人工检查相结合等方法让数据的分布情况变得更“光滑”,去掉数据中的噪声。产品经理不需要掌握具体的实现方法,只需要了解哪些是我们可以使用的技术。

无论是缺失值还是异常值,都需要产品经理仔细思考,分析成因并推测出正确值。对于缺失或不能推测的数据也要想一些其他转化的方法让这部分数据的不良影响降到最低。

4. 清除重复数据

数据清洗的最后一步是检查数据源中有没有特征值相同的记录。这个步骤比较简单,只需要判断样本数据的每一个特征值是否相同,将相同的记录合并为一条记录即可。2.1.3 数据集成

如果样本数据被存放在多个不同的数据源中,我们需要将这些数据源中的数据结合起来并统一存储。建立数据仓库的过程实际上就是数据集成,如图2-5所示。这个步骤就是将分散在不同数据源的样本有机地整合到一起,例如宽表整合,将所有的特征值合并到一张表上展示。集成有助于减少结果数据集的冗余,并且对数据进行统一处理,能够提高后续数据挖掘的准确性和速度。图2-5 数据集成

数据集成是指将多个数据库整合为一个数据库。在这个过程中需要着重解决命名差异、数据冗余以及数据值冲突三个问题。造成这些问题的原因主要是来自多个数据集合的数据由于在命名上存在差异而导致相同的特征具有不同的名称,或者是相同意义的字段采用了不同的表达方式,等等。实际上,命名差异与数据值冲突的问题在经过数据清洗后已经基本得到解决,数据冗余的问题通过数据变换及数据归约解决。在集成环节,只需要把不同数据集的数据结合并统一存储即可。2.1.4 数据变换

经过以上几步,我们可以得到一份格式统一、没有缺失值和异常值的初始数据。这样的数据集已经满足了机器学习的基本要求,可以开始训练模型了。但是在模型实际应用数据的时候会发现,使用这种数据训练起来速度慢而且效果也不好,其原因是数据量太大,部分有价值的信息没有被完全利用。

为了提升模型的准确率,我们可以尝试变换数据,帮助计算机寻找数据之间的关联,挖掘出更有价值的信息。常见的数据变换方法有很多,例如标准化、归一化、正则化、特征二值化,等等。产品经理只需要了解这些方法的目的,不需要掌握具体的实现过程。图2-6展示了常用的数据变换方法。

试读结束[说明:试读内容隐藏了图片]

下载完整电子书


相关推荐

最新文章


© 2020 txtepub下载