机器学习是一门人工智能的科学,研究可以通过经验自动改进的计算机算法。
机器学习是一个跨学科的领域,涉及计算机、信息学、数学、统计学、神经科学等。

机器学习是大数据的核心技术,其本质是基于经验的算法处理。机器学习强调三个关键词:算法、经验、性能,其处理过程如下图所示。
在数据的基础上,用算法建立模型并进行评估。如果评估的性能满足要求,则使用该模型测试其他数据;如果达不到要求,就要调整算法重新建立模型,重新评估。如此循环,最后得到满意的处理其他数据的体验。
机器学习的技术和方法已经成功应用到很多领域,比如今日头条的个性推荐系统,蚂蚁金服的金融反欺诈,讯飞的语音识别,自然语言处理和google机器翻译,模式识别,智能控制,垃圾邮件等等。
机器学习的分类
监督学习
监督人员从给定的训练数据集中学习一个模型,然后用这个模型进行预测,再将预测结果与实际结果进行比较,不断调整预测模型,直到达到一个预期的准确率。
常见的算法有回归分析和统计分类。监督学习通常用于训练神经网络和决策树。它们高度依赖于预先确定的分类系统。如垃圾邮件和新闻内容分类。
无监督学习
无监督学习的训练集没有人工标注的结果,学习模型用来推断数据的一些内部结构。常见的应用场景包括学习关联规则和聚类。
这种学习的目标不是最大化效用函数,而是在训练数据中找到近似点。聚类通常可以找到与假设相匹配的相当好的直观分类,例如聚合基于人口统计的个人可能在一个组中形成丰富的聚合和贫乏的聚合。
半监督学习
在有监督学习和无监督学习之间,学生要考虑如何利用少量的已标记样本和大量的未标记样本进行训练和分类。学习算法试图对未标记的数据进行建模,然后对标记的数据进行预测,比如图推理算法或者拉普拉斯支持向量机。
机器学习的常用算法
回归算法
最小二乘法、逻辑回归、逐步回归、多元自适应回归样条和重要分散点的平滑估计。
基于实例的算法
通常被称为“赢家通吃”的学习。经常用来建立模型解决问题。这样的模型往往是先选取一批样本数据,然后按照一定的近似将新数据与样本数据进行比较。用这种方法找到最佳匹配。
决策树学习
根据数据的属性,采用树形结构建立决策模型,常用于解决分类和回归问题。
贝叶斯学习
主要用于解决分类和回归问题。朴素贝叶斯算法。
聚类和分类算法
聚类和分类是机器学习中常用的两种算法。聚类将数据分成不同的集合,分类预测新的数据。下面将介绍两种算法。什么是集群?聚类是指将数据对象分组到多个类或簇中。它的目标是:同一簇中的对象相似度高,但不同簇中的对象差异较大。
其实,群聚是人们日常生活中常见的行为,也就是所谓的“物以类聚”。其核心思想在于分组,人们不断改进聚类模式,学习如何区分物与人。
什么是分类数据仓库、数据库或其他信息库?他们中的许多人可以为商业决策、科学研究和其他活动提供必要的知识。分类和预测是数据分析的两种形式,可用于提取重要数据集或预测未来数据趋势。
分类方法用于预测离散类别的数据对象;预测方法用于预测数据对象的连续值。分类过程:新样本→特征选择→分类→评估训练过程:训练集→特征选择→训练→分类器。起初,机器学习的大部分分类应用都是基于这些建立在记忆基础上的方法和算法。目前所有的数据挖掘方法都要求具有处理基于外部存储的大规模数据集的能力,同时具有可扩展的能力。
机器学习库Spark MLLib
MLlib是Spark的机器学习库,旨在简化机器学习的工程实践,便于向更大规模扩展。机器学习需要多次迭代。如果使用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,t的每条记录包含若干个属性组成一个特征向量,用向量x=表示。Xi可以有不同的取值范围。当一个属性的取值范围连续时,该属性是连续的;否则,它是离散的。C=c1,c2,..ck代表类别属性,即数据集有k个不同的类别。那么,T意味着从向量X到类别属性C: fC的映射函数。分类的目的是对输入的数据进行分析,通过训练集中数据的特征,为每一类找到准确的描述或模型,并用这种方法来表达隐函数。构建分类模型的过程一般分为训练和测试两个阶段。在构建模型之前,数据集被随机分为训练数据集和测试数据集。首先利用训练数据集构建分类模型,然后利用测试数据集评估模型的分类精度。如果模型的准确性是可接受的,它可以用于对其他数据组进行分类。一般来说,测试阶段的成本比培训阶段的成本低得多。
MLlib分类算法分类算法基于不同的思想,算法也不同,如支持向量机SVM、决策树算法、贝叶斯算法、KNN算法等。Spark.mllib包支持多种分类方法,主要包括二分类、多分类和回归分析。下表列出了每类问题支持的算法。
每个算法的具体内容太多,这里就不详细描述了。
分类算法使用场景
1.市民选择公共交通的预测是基于海量的公共交通数据记录,希望发现市民在公共交通中的行为模式。基于市民选择公交线路的预测,期望通过分析广东省部分公交线路的历史公交卡交易数据,挖掘固定人群在公共交通中的行为模式,分析和推测乘客的出行习惯和偏好,从而建立模型预测未来一周人们将乘坐哪些公交线路,为广大乘客提供信息对称的安全舒适的出行环境,用数据引领未来城市的智慧出行。2.基于运营商数据的个人信用评估。运营商作为网络服务提供商,积累了大量的用户基础信息和行为特征数据,如终端数据、套餐消费数据、通信数据等。实名登记制政策保证了运营商的用户数据能够匹配用户的真实身份,真实客观地反映用户的行为。广泛的网络基础设施为积累大量实时数据提供了条件,这些数据实时反馈用户在各个维度的信息和特征。在中国,个人信用评估主要参考央行的个人信用报告。然而,对于许多没有建立个人信用记录的用户来说,金融机构了解其信用记录的成本很高,传统的信用评估方法难以满足各种新兴的需求。金融服务不同于其他大数据服务,对数据的真实性、可信度、时效性要求更高,这就是运营商数据的价值。预计运营商的用户数据将用于提供完善的个人信用评估。
3.商品图片的分类。JD.COM有数百万张商品图片。“拍照购买”、“找同款”等应用必须对用户提供的商品图片进行分类。同时,提取的产品图像特征可以提供给推荐、广告等系统,提高推荐/广告的效果。希望通过研究图像数据,可以对图像进行分类和划分。
4.广告点击行为的预测。用户在上网过程中可能会有广告曝光或点击行为。预测广告的点击量,可以引导广告主有针对性地投放广告,并进行优化,使广告投入产生最大回报。希望基于六个月内100万随机用户的广告曝光和点击日志,包括广告监测点的数据,预测八天内每个用户是否会点击每个监测点。
5.基于文本内容识别垃圾短信日益成为运营商和手机用户的难题,严重影响人们的正常生活,侵害运营商的社会形象,危害社会稳定。但不法分子利用科技手段,不断更新垃圾短信形式,广泛传播。传统的基于策略和关键词的过滤效果有限,很多垃圾短信“逃离”过滤,继续到达移动终端。希望基于短信的文本内容,结合机器学习算法和大数据分析挖掘,智能识别垃圾短信及其变种。
6.搜狗在大数据精准营销中的用户画像挖掘中的古语“物以类聚,人以群分”,既揭示了物与人的自组织趋势,又隐含了“集群”与“人群”的内在联系。在现代数字广告体系中,以物仿人,以物窥人,是比任何大数据都大的前提。在现代广告系统中,多层次、系统化的用户画像构建算法是实现精准广告的基础技术之一。其中,基于人群属性的广告定向技术是普遍适用于品牌展示广告和精准竞价广告的关键技术。在搜索竞价广告系统中,用户可以通过在搜索引擎中输入特定的查询词来获取相关信息。因此,用户的历史查询词与用户的基本属性和潜在需求密切相关。希望可以将基于用户一个月历史的查询词和用户的人口统计属性标签作为训练数据,通过机器学习和数据挖掘技术构建分类算法,判断新用户的人口统计属性。
串
聚类是通过静态分类将相似的对象分成不同的组或更多的子集。同一子集中的成员具有相似的属性。聚类分析可以被视为一种无监督的学习技术。
在Spark2.0版本中,有四种聚类方法:K-means后期脏分配聚类K-means高斯混合模型。在基于RDD API的MLLib中有六种聚类方法:k-means高斯混合幂迭代聚类后期脏分配* *比较k-means streaming k-means有更多的幂迭代聚类和Streaming k-means。
K-means算法是常用的算法。
K-means算法是一种划分聚类方法。该算法的思想是通过迭代寻找聚类中心,使每个样本与其类平均值之间的误差平方和最小。
KMeans是一种迭代聚类算法,属于划分聚类方法,即先创建k个分区,然后迭代地将样本从一个分区转移到另一个分区,以提高最终聚类的质量。K-Means聚类算法可以方便地对聚类问题进行建模。K-Means聚类算法易于理解,可以在分布式环境下并行运行。学习K-Means聚类算法可以更容易理解聚类算法的优缺点,以及其他算法对于特定数据的效率。K-Means聚类算法中的K是聚类的个数,算法中会强制用户输入。如果把新闻分成政治、经济、文化等大类。,可以选择10到20之间的数作为k .因为这样的顶级类目数量很少。如果要对这些新闻进行详细分类,选择50~100的数量是没有问题的。K-Means聚类算法可以分为三个步骤。第一步,随机选取k个样本作为待聚类点的初始聚类中心;第二步,计算每个点的聚类中心之间的距离,将每个点聚类到最近的聚类。第三步,计算聚类中所有点的坐标平均值,以此平均值作为新的聚类中心。重复第二步,直到聚类中心不再大范围移动,或者聚类次数满足要求。
聚类算法使用场景
1.基于用户位置信息的商业定位随着信息技术的快速发展,移动设备和移动互联网已经普及到千家万户。用户在使用移动网络时,自然会留下自己的位置信息。随着近年来GIS地理信息技术的不断完善和普及,用户定位与GIS地理信息的结合将带来创新应用。比如我们和万达合作,通过定位用户的位置,结合万达的商户信息,向用户推送位置营销服务,提高商户的收益。希望大量移动设备用户的位置信息能够为连锁餐厅提供新的店面位置。
2.中文地址的标准化处理是一个包含丰富信息的变量。然而,长期以来,由于中文处理的复杂性和我国中文地址命名的不规范,无法对地址中蕴含的丰富信息进行深入分析和挖掘。通过对地址的标准化处理,使得基于地址的多维量化数据挖掘分析成为可能,为不同场景下的电子商务应用挖掘提供了更丰富的方法和手段,具有重要的现实意义。3.非人类恶意流量识别。2016年第一季度,脸书发文称,其Atlas DSP平台半年的流量质量测试结果显示,机器人模拟和黑IP导致的非人类恶意流量高达75%。仅在2016年上半年,AdMaster的反作弊解决方案就识别出平均作弊流量每天可能高达28%。低质量虚假流量的问题一直存在,这也是数字营销行业过去十年一直在玩的问题。基于AdMaster的海量监测数据,超过50%的项目涉嫌作弊;在不同的项目中,作弊流量占广告的5%到95%;其中,垂直媒体和网络媒体的作弊流量占比最高;PC端流量作弊比例明显高于移动端和智能电视平台。监控广告行为数据越来越多地用于建模和决策,如绘制用户画像和跨设备识别对应用户。作弊,恶意曝光,网络爬虫,误导点击,甚至在用户不知情的情况下被控制访问等等。,不是用户主观发出的,给数据带来巨大的噪声,对模型训练影响很大。希望基于给定的数据,建立模型对作弊流量进行识别和标记,去除数据的噪音,从而更好的利用数据,实现广告主利益的最大化。
协同过滤
协作记录达到筛选的目的,再帮别人筛选信息。响应不一定局限于特殊兴趣信息,特殊兴趣信息的记录也很重要。
协同过滤经常应用于推荐系统。这些技术旨在补充用户-商品相关矩阵的缺失部分。
MLlib目前支持基于模型的协同过滤,用户和商品由一小组隐藏的因素来表示,这些因素也被用来预测缺失的元素。MLLib使用交替最小二乘法来学习这些隐藏因素。
用户对商品或信息的偏好,取决于应用本身,可能包括用户对商品的评分、用户查看商品的记录、用户的购买记录等。实际上,这些用户的偏好信息可以分为两类:
显性用户反馈:这类反馈信息是用户在自然浏览或使用网站时明确提供的,比如用户对物品的评分或评论。隐式用户反馈:这类数据是用户在使用网站时产生的,它隐式地反映了用户对某个物品的偏好,比如用户购买了某个物品,用户查看了某个物品的信息等等。
显性用户反馈可以准确反映用户对商品的真实偏好,但需要用户付出额外的代价;而隐含的用户行为也可以通过一些分析处理反映出用户的喜好,但是数据不是很准确,一些行为的分析是有噪音的。但是,只要选择正确的行为特征,用户的隐性反馈也可以得到很好的效果,只是在不同的应用中,行为特征的选择可能会有很大的不同。比如在电子商务的网站上,购买行为其实是一种隐性的反馈,可以很好的显示用户的喜好。
根据不同的推荐机制,推荐引擎可能会使用部分数据源,然后根据这些数据,分析出一定的规律或者直接预测计算出用户对其他项目的偏好。这样,推荐引擎就可以在用户进入时推荐用户可能感兴趣的商品。
MLlib目前支持基于协作过滤的模型,在该模型中,用户和产品由一组潜在的因素来描述,这些因素可用于预测缺失的项目。特别地,我们实现了交替最小二乘算法来学习这些潜在的因素。MLlib中的实现具有以下参数:
NumBlocks是用于并行计算的块数;秩是模型中隐藏因子的个数;迭代次数是迭代的次数;λ是ALS的正则化参数;ImplicitPrefs确定是使用显式反馈ALS的版本还是隐式反馈数据集的版本;Alpha是ALS版本的隐式反馈的参数,它决定了偏好行为强度的基准。
协同过滤算法应用场景
1.电商平台买了XX,也买了XX,结合套餐,随便看看功能。
2.今日头条的个性化推荐。
3.豆瓣的志趣相投的群。
4.电影推荐系统。

5.地图是基于地理位置上附近的美食。
参考数据
1.Spark官网MLlib解释
2.星火企业级实战
3.天池数据广播


