你必须要了解的大数据潮流下的机器学习及应用场景
机器学习是一门人工智能的科学,能通过经验自动改进的计算机算法的研究。
机器学习是一个多学科交叉的领域,会涉及到计算机、信息学、数学、统计学、神经科学等。
机器学习是大数据的核心技术,本质都是基于经验的算法处理。机器学习强调三个关键词:算法、经验、性能,其处理过程如下图所示。
在数据的基础上,通过算法构建出模型并对模型进行评估。评估的性能如果达到要求,就用该模型来测试其他的数据;如果达不到要求,就要调整算法来重新建立模型,再次进行评估。如此循环往复,最终获得满意的经验来处理其他的数据。
机器学习技术和方法已经被成功应用到多个领域,比如今日头条的个性推荐系统,蚂蚁金服的金融反欺诈,讯飞的语音识别,自然语言处理和google的机器翻译,模式识别,智能控制、垃圾邮件等。
机器学习的分类
监督学习
监督是从给定的训练数据集中学习一个模型,再用此模型预测,再将预测结果与实际结果进行比较,不断调整预测模型,直到达到一个预期的准确率。
常见算法包括回归分析和统计分类。监督学习常用作训练神经网络和决策树。他们高度依赖事先确定的分类系统。如垃圾邮件、新闻资讯内容分类。
非监督学习
非监督学习的训练集没有人为标注的结果,学习模型是为了推断出数据的一些内在结构。常见的应用场景包括关联规则的学习以及聚类等。
这类学习型的目标不是让效用函数最大化,而是找到训练数据中的近似点。聚类常常能发现那些与假设匹配的相当好的直观分类,如基于人口统计的聚合个体可能会在一个群体中形成一个富有的聚合和穷的聚合。
半监督学习
介于监督学习与无监督学习间,产要考虑如何利用少量的标注样本和大量的未标注样本进行训练和分类的问题。学习算法试图对未标识数据进行建模,再对标识的数据进行预测,如图论推理算法或拉普拉斯支持向量机等。
机器学习常用算法
回归算法
最小二乘法、逻辑回归、逐步式回归、多元自适诮回归样条以及要地散点平滑估计。
基于实例的算法
常被称为“赢家通吃”学习。常用来对策问题建立模型,这样的模型常常先选取一批样本数据,然后根据某些近似把新数据与样本数据进行比较。通过这种方式来寻找最佳的匹配。
决策树学习
根据数据的属性采用树状结构建立决策模型,常用来解决分类和回归问题。
贝叶斯学习
主要用来解决分类和回归问题。朴素贝叶斯算法。
聚类、分类算法
聚类和分类是机器学习中两个常用的算法,聚类将数据分开为不同的集合,分类对新数据进行类别预测,下面将就两类算法进行介绍。
(1)什么是聚类
聚类(Clustering)指将数据对象分组成为多个类或者簇(Cluster),它的目标是:在同一个簇中的对象之间具有较高的相似度,而不同簇中的对象差别较大。
其实,聚类在人们日常生活中是一种常见行为,即所谓的“物以类聚,人以群分”,其核心思想在于分组,人们不断地改进聚类模式来学习如何区分各个事物和人。
(2)什么是分类
数据仓库、数据库或者其他信息库中有许多可以为商业、科研等活动的决策提供所需要的知识。分类与预测即是其中的两种数据分析形式,可以用来抽取能够描述重要数据集合或预测未来数据趋势。
分类方法(Classification)用于预测数据对象的离散类别(Categorical Label);预测方法(Prediction)用于预测数据对象的连续取值。
分类流程:新样本→特征选取→分类→评价
训练流程:训练集→特征选取→训练→分类器
最初,机器学习的分类应用大多都是在这些方法及基于内存基础上所构造的算法。目前,数据挖掘方法都要求具有基于外存以处理大规模数据集合能力,同时具有可扩展能力。
机器学习库Spark MLLib
MLlib是Spark的机器学习(Machine Learning)库,旨在简化机器学习的工程实践工作,并方便扩展到更大规模。机器学习需要多次迭代,如果使用Hadoop计算框架,则每次计算都要进行磁盘读写任务,会导致非常大的I/O和CPU消耗,而Spark是基于内存的计算具有天生的优势。而且其RDD可与Spark SQL、Spark Streaming、GraphX等其他子框架与库无缝地共享数据和操作,如MLlib可以直接使用SparkSQL提供的数据,或可以直接和GraphX图计算进行join操作。
MLlib在 spark 生态系统中的位置
Spark MLlib 架构
从架构图可以看出MLlib主要包含三个部分:
底层基础:包括Spark的运行库、矩阵库和向量库;
算法库:包含广义线性模型、推荐系统、聚类、决策树和评估的算法;
实用程序:包括测试数据的生成、外部数据的读入等功能。
下图是MLlib算法库的核心内容。
MLlib由一些通用的学习算法和工具组成,包括分类、回归、聚类、协同过滤、降维等,同时还包括底层的优化原语和高层的管道API。
具体来说,其主要包括以下几方面的内容:
1. 算法工具:常用的学习算法,如分类、回归、聚类和协同过滤;
2. 特征化工具:特征提取、转化、降维,和选择工具;
3. 管道(Pipeline):用于构建、评估和调整机器学习管道的工具;
4. 持久性:保存和加载算法,模型和管道;
5. 实用工具:线性代数,统计,数据处理等工具。
Spark将机器学习算法分成了两个模块:
训练模块:通过训练样本输出模型参数;
预测模块:利用模型参数初始化,预测测试样本,输出预测值。
MLLib中经典算法解析
分类
分类是一种重要的机器学习和数据挖掘技术。分类的目的是根据数据集的特点构造一个分类函数或分类模型(也常常称作分类器),该模型能把未知类别的样本映射到给定类别中的一种技术。
分类的具体规则可描述如下:
给定一组训练数据的集合T(Training set),T的每一条记录包含若干条属性(Features)组成一个特征向量,用矢量 x=(x1,x2,..,xn) 表示。 xi 可以有不同的值域,当一属性的值域为连续域时,该属性为连续属性(Numerical Attribute),否则为离散属性(Discrete Attribute)。用 C=c1,c2,..ck 表示类别属性,即数据集有k个不同的类别。那么,T就隐含了一个从矢量X到类别属性C的映射函数: f(X)↦C 。分类的目的就是分析输入数据,通过在训练集中的数据表现出来的特性,为每一个类找到一种准确的描述或者模型,采用该种方法(模型)将隐含函数表示出来。
构造分类模型的过程一般分为训练和测试两个阶段。在构造模型之前,将数据集随机地分为训练数据集和测试数据集。先使用训练数据集来构造分类模型,然后使用测试数据集来评估模型的分类准确率。如果认为模型的准确率可以接受,就可以用该模型对其它数据元组进分类。一般来说,测试阶段的代价远低于训练阶段。
MLlib分类算法分类算法基于不同的思想,算法也不尽相同,例如支持向量机SVM、决策树算法、贝叶斯算法、KNN算法等。Spark.mllib包支持各种分类方法,主要包含 二分类, 多分类和 回归分析。下表列出了每种类型的问题支持的算法。
每个算法具体的内容由于内容过多,因此不在此详细介绍。
分类算法使用场景
1、市民出行选乘公交预测
基于海量公交数据记录,希望挖掘市民在公共交通中的行为模式。以市民出行公交线路选乘预测为方向,期望通过分析广东省部分公交线路的历史公交卡交易数据,挖掘固定人群在公共交通中的行为模式,分析推测乘客的出行习惯和偏好,从而建立模型预测人们在未来一周内将会搭乘哪些公交线路,为广大乘客提供信息对称、安全舒适的出行环境,用数据引领未来城市智慧出行。
2、基于运营商数据的个人征信评估
运营商作为网络服务供应商,积累了大量的用户基本信息及行为特征数据,如终端数据、套餐消费数据、通信数据等等。实名制政策保证了运营商用户数据能与用户真实身份匹配,并真实客观的反映用户行为。广泛覆盖的网络基础设施提供了积累大量实时数据的条件,这些用户数据实时反馈着用户的各个维度的信息及特征。
在我国,个人征信评估主要通过引用央行个人征信报告,但对于很多用户没有建立个人信用记录的用户,金融机构想要了解他们的信用记录成本又较高,传统征信评估手段难以满足目前多种多样的新兴需求。金融业务不同于其他大数据业务,对数据的真实性、可信度和时效性要求较高,而这正是运营商数据的价值所在。
期望利用运营商用户数据,提供完善的个人征信评估。
3、商品图片分类
京东含有数以百万计的商品图片,“拍照购”“找同款”等应用必须对用户提供的商品图片进行分类。同时,提取商品图像特征,可以提供给推荐、广告等系统,提高推荐/广告的效果。
希望通过对图像数据进行学习,以达到对图像进行分类划分的目的。
4、 广告点击行为预测
用户在上网浏览过程中,可能产生广告曝光或点击行为。对广告点击进行预测,可以指导广告主进行定向广告投放和优化,使广告投入产生最大回报。
希 望基于100万名随机用户在六个月的时间范围内广告曝光和点击日志,包括广告监测点数据,预测每个用户在8天内是否会在各监测点上发生点击行为。
5、基于文本内容的垃圾短信识别
垃圾短信已日益成为困扰运营商和手机用户的难题,严重影响到人们正常生活、侵害到运营商的社会形象以及危害着社会稳定。而不法分子运用科技手段不断更新垃圾短信形式且传播途径非常广泛,传统的基于策略、关键词等过滤的效果有限,很多垃圾短信“逃脱”过滤,继续到达手机终端。
希望基于短信文本内容,结合机器学习算法、大数据分析挖掘来智能地识别垃圾短信及其变种。
6、 大数据精准营销中搜狗用户画像挖掘
“物以类聚,人以群分”这句古语不仅揭示了物与人的自组织趋向,更隐含了“聚类”和“人群”之间的内在联系。在现代数字广告投放系统中,以物拟人,以物窥人,才是比任何大数据都要更大的前提。在现代广告投放系统中,多层级成体系的用户画像构建算法是实现精准广告投放的基础技术之一。其中,基于人口属性的广告定向技术是普遍适用于品牌展示广告和精准竞价广告的关键性技术。在搜索竞价广告系统中,用户通过在搜索引擎输入具体的查询词来获取相关信息。因此,用户的历史查询词与用户的基本属性及潜在需求有密切的关系。
希望基于用户历史一个月的查询词与用户的人口属性标签(包括性别、年龄、学历)做为训练数据,通过机器学习、数据挖掘技术构建分类算法来对新增用户的人口属性进行判定。
聚类
聚类是把相似的对象通过静态分类的方法分成不同的组别或更多的子集(subset),同一个子集中的成员都有相似的属性,聚类分析可以看作一种非监督学习的技术。
在Spark2.0版本中(不是基于RDD API的MLlib),共有四种聚类方法:
(1)K-means
(2)Latent Dirichlet allocation (LDA)
(3)Bisecting k-means(二分k均值算法)
(4)Gaussian Mixture Model (GMM)。
基于RDD API的MLLib中,共有六种聚类方法:
(1)K-means
(2)Gaussian mixture
(3)Power iteration clustering (PIC)
(4)Latent Dirichlet allocation (LDA)**
(5)Bisecting k-means
(6)Streaming k-means
多了Power iteration clustering (PIC)和Streaming k-means两种
常用的是K-means算法。
K均值算法(K-Means)是一种划分聚类方法。算法思路是通过迭代寻找聚类中心使各个样本与所在类均值的误差平方和达到最小。
KMeans 是一个迭代求解的聚类算法,其属于 划分(Partitioning) 型的聚类方法,即首先创建K个划分,然后迭代地将样本从一个划分转移到另一个划分来改善最终聚类的质量。
K-Means聚类算法能轻松地对聚类问题建模。K-Means聚类算法容易理解,并且能在分布式的环境下并行运行。学习K-Means聚类算法,能更容易地理解聚类算法的优缺点,以及其他算法对于特定数据的高效性
K-Means聚类算法中的K是聚类的数目,在算法中会强制要求用户输入。如果将新闻聚类成诸如政治、经济、文化等大类,可以选择10~20的数字作为K。因为这种顶级类别的数量是很小的。如果要对这些新闻详细分类,选择50~100的数字也是没有问题的。K-Means聚类算法主要可以分为三步。
第一步是为待聚类的点寻找随机选取K个样本为初始聚类中心;
第二步是计算每个点聚类中心的距离,将每个点聚类到离该点最近的聚类中去;
第三步是计算聚类中所有点的坐标平均值,并将这个平均值作为新的聚类中心点。
反复执行第二步,直到聚类中心不再进行大范围的移动,或者聚类次数达到要求为止。
聚类算法使用场景
1、基于用户位置信息的商业选址
随着信息技术的快速发展,移动设备和移动互联网已经普及到千家万户。在用户使用移动网络时,会自然的留下用户的位置信息。随着近年来GIS地理信息技术的不断完善普及,结合用户位置和GIS地理信息将带来创新应用。如百度与万达进行合作,通过定位用户的位置,结合万达的商户信息,向用户推送位置营销服务,提升商户效益。
希望通过大量移动设备用户的位置信息,为某连锁餐饮机构提供新店选址。
2、中文地址标准化处理
地址是一个涵盖丰富信息的变量,但长期以来由于中文处理的复杂性、国内中文地址命名的不规范性,使地址中蕴含的丰富信息不能被深度分析挖掘。通过对地址进行标准化的处理,使基于地址的多维度量化挖掘分析成为可能,为不同场景模式下的电子商务应用挖掘提供了更加丰富的方法和手段,因此具有重要的现实意义。
3、非人恶意流量识别
2016年第一季度Facebook发文称,其Atlas DSP平台半年的流量质量测试结果显示,由机器人模拟和黑IP等手段导致的非人恶意流量高达75% . 仅2016上半年,AdMaster反作弊解决方案认定平均每天能有高达 28% 的作弊流量。低质量虚假流量的问题一直存在,这也是过去十年间数字营销行业一直在博弈的问题。基于AdMaster海量监测数据,50%以上的项目均存在作弊嫌疑;不同项目中,作弊流量占广告投放5%到95%不等;其中垂直类和网盟类媒体的作弊流量占比最高;PC端作弊流量比例显著高于移动端和智能电视平台。广告监测行为数据被越来越多地用于建模和做决策,例如绘制用户画像,跨设备识别对应用户等。作弊行为,恶意曝光,网络爬虫,误导点击,甚至是在用户完全无感知的情况下被控制访问等产生的不由用户主观发出的行为给数据带来了巨大的噪声,给模型训练造成了很大影响。
希望基于给定的数据,建立一个模型来识别和标记作弊流量,去除数据的噪声,从而更好的使用数据,使得广告主的利益最大化。
协同过滤
协同过滤(Collaborative Filtering,简称CF,WIKI上的定义是:简单来说是利用某个兴趣相投、拥有共同经验之群体的喜好来推荐感兴趣的资讯给使用者,个人透过合作的机制给予资讯相当程度的回应(如评分)并记录下来以达到过滤的目的,进而帮助别人筛选资讯,回应不一定局限于特别感兴趣的,特别不感兴趣资讯的纪录也相当重要。
协同过滤常被应用于推荐系统。这些技术旨在补充用户—商品关联矩阵中所缺失的部分。
MLlib 当前支持基于模型的协同过滤,其中用户和商品通过一小组隐性因子进行表达,并且这些因子也用于预测缺失的元素。MLLib 使用交替最小二乘法(ALS) 来学习这些隐性因子。
用户对物品或者信息的偏好,根据应用本身的不同,可能包括用户对物品的评分、用户查看物品的记录、用户的购买记录等。其实这些用户的偏好信息可以分为两类:
- 显式的用户反馈:这类是用户在网站上自然浏览或者使用网站以外,显式地提供反馈信息,例如用户对物品的评分或者对物品的评论。
- 隐式的用户反馈:这类是用户在使用网站是产生的数据,隐式地反映了用户对物品的喜好,例如用户购买了某物品,用户查看了某物品的信息,等等。
显式的用户反馈能准确地反映用户对物品的真实喜好,但需要用户付出额外的代价;而隐式的用户行为,通过一些分析和处理,也能反映用户的喜好,只是数据不是很精确,有些行为的分析存在较大的噪音。但只要选择正确的行为特征,隐式的用户反馈也能得到很好的效果,只是行为特征的选择可能在不同的应用中有很大的不同,例如在电子商务的网站上,购买行为其实就是一个能很好表现用户喜好的隐式反馈。
推荐引擎根据不同的推荐机制可能用到数据源中的一部分,然后根据这些数据,分析出一定的规则或者直接对用户对其他物品的喜好进行预测计算。这样推荐引擎可以在用户进入时给他推荐他可能感兴趣的物品。
MLlib目前支持基于协同过滤的模型,在这个模型里,用户和产品被一组可以用来预测缺失项目的潜在因子来描述。特别是我们实现交替最小二乘(ALS)算法来学习这些潜在的因子,在 MLlib 中的实现有如下参数:
- numBlocks是用于并行化计算的分块个数(设置为-1时 为自动配置);
- rank是模型中隐性因子的个数;
- iterations是迭代的次数;
- lambda是ALS 的正则化参数;
- implicitPrefs决定了是用显性反馈ALS 的版本还是用隐性反馈数据集的版本;
- alpha是一个针对于隐性反馈 ALS 版本的参数,这个参数决定了偏好行为强度的基准。
协同过滤算法 应用场景
1、电商平台的买了XX的还买了XX,组合搭配套餐、随便看一看功能。
2、今日头条的个性化推荐。
3、豆瓣相同兴趣的小组。
4、电影推荐系统。
5、百度地图基于地理位置的附近的美食
……
参考资料
1、Spark官网MLlib说明
2、Spark企业级实战
3、天池DataCastleCCF