机器学习

机器学习实战

0 数据挖掘十大算法

  1. C4.5决策树
  2. K-均值(K-mean)
  3. 支持向量机(SVM)
  4. Apriori
  5. 最大期望算法(EM)
  6. PageRank算法
  7. AdaBoost算法
  8. k-近邻算法(kNN)
  9. 朴素贝叶斯算法(NB)
  10. 分类回归树算法(CART)

Logistic回归算法

第一部分 分类

第1章 机器学习基础

0

​ 本书前两部分主要探究监督学习(supervised learning)。在监督学习学习过程中,给定样本集,机器可以从中推演出指定目标变量的可能结果。 监督学习指的是有目标变量或预测目标的机器学习方法。

​ 监督学习一般使用两种类型的目标变量:

​ 1. 标称型:标称型目标变量的结果只有在有限目标集中取值。

​ 2. 数值型:数值型目标变量可以在无限的数值集合中取值。

1 机器学习基础

1.1 什么是机器学习

​ 机器学习是把无序的数据转换为有用的信息,利用计算机来彰显数据背后的真实含义。

​ 机器学习的主要任务是:

​ 1. 分类:将数据划分到合适的类中。

​ 2. 回归: 主要用于预测数值型数据。

1.3 机器学习的主要任务

​ 分类和回归属于监督学习,因为这类算法必须知道预测什么,即目标变量的分类信息。

无监督学习,数据没有类别信息,也不会指定目标值。在无监督学习中,将数据集合分成由类似的对象组成的多个类过程成为聚类,将寻找描述数据统计值的过程称为密度估计

1.4 如何选择合适的算法

一、机器学习算法的目的

[外链图片转存失败(img-jGTVgHTT-1567673721695)(C:\Users\Robin Bee\Desktop\Map2.jpeg)]

二、 需要分析或收集的数据是什么

了解数据的以下特性:

​ 1. 特征值是离散型还是连续型变量。

​ 2. 特征值是否存在缺失值,何种原因造成的

​ 3. 数据中是否存在异常值

​ 4. 某个特征发生的频率如何

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

​ 1. 收集数据。

​ 2. 准备输入数据。将数据规范化和结构化。

​ 3. 分析输入数据。数据清洗,确保数据集中没有垃圾数据。

​ 4. 训练算法。无监督学习算法不需要训练算法,跳过此步。

​ 5. 测试算法。计算错误率。

​ 6. 使用算法。

第2章 K-近邻算法(KNN)

2.1 K-近邻算法概述

K-近邻算法采用测量不同特征值之间的距离方法进行分类。

​ 优点:精度高、对异常值不敏感、无数据输入假定。

​ 缺点:计算复杂度高、空间复杂度高,无法给出任何数据的基础结构信息。

​ 适用数据范围:数值型和标称型。

KNN工作原理:存在一个训练样本集且样本集中每个数据都存在标签,输入没有标签的新数据后,将新数据的每个特征与样本集中数据对应的特征进行比较,然后算法提取样本集中前K个特征值最相似数据(最近邻)的分类标签。

第3章 决策树

3.0 决策树

​ 决策树的工作原理:用户输入一系列数据,决策树通过推断分解,逐步缩小待分类事物的范围。常用于处理分类问题。

​ 优点:计算复杂度不高,输出结果易于理解,对中间值的缺失不敏感,可以处理不相关特征数据。

​ 缺点:可能产生过度匹配问题。

​ 适用数据类型:数值型和标称型。

​ KNN的最大缺点是无法给出数据的内在含义;决策树的主要优势在于数据形式易于理解。

3.1 决策树的构造

第4章 基于概率论的方法:朴素贝叶斯

第5章 Logistic 回归

​ Logistic回归的目的是寻找一个非线性函数Sigmoid的最佳拟合参数,求解过程可以由最优化算法实现。在最优化算法中,最常用的就是梯度上升法,而梯度上升法又可以简化为随机梯度上升算法。

​ 随机梯度上升算法与梯度上升算法的效果相当,但占用更少的计算资源。此外,随机梯度上升算法是一个在线算法,它可以在新数据到来时就完成参数更新,而不需要读取整个数据集来进行批处理运算。

​ 机器学习一个重要问题是如何处理缺失数据。这却决与实际应用中的需求。

第6章 支持向量机(SVM)

​ SVM(Support Vector Machine)是目前最好的现成的分类器,能够对训练集之外的数据点做出很好的分类预测。本身是一个二类分类器,对多类问题需要做一些修改。

​ SVM实现方式很多,本章只关注最流行的一种实现,序列最小优化(Sequential Minimal Optimization, SMO)算法。此后介绍使用核函数(kernel)的方式将SVM扩展到更多数据集。

6.1 基于最大间隔分割数据

​ 支持向量机

​ 优点:泛化错误率低,计算开销不大,结果易解释。

​ 缺点:对参数调节和核函数的选择敏感,原始分类器不加修改仅适用于处理二类问题。

​ 适用数据类型:数值型和标称型数据。

超平面(hyperplane),也称分类的决策边界。分布在超平面一侧的所有数据都属于某个类别,而分布在另外一侧的所有数据则属于另一个类别。

间隔(margin)指数据点到分隔面的距离。

保证间隔尽可能地大,这是因为我们犯错或者在有限数据上训练分类器的话,分类器会更健壮。

支持向量(Support vector)是离分隔超平面最近地那些点。最大化支持向量到分隔面的距离,需要找到此问题的优化求解方法。

6.2 寻找最大间隔

6.2.1 分类器求解的优化问题

​ 分类器的工作原理:输入数据给分类器会输出一个类别标签,使用单位阶跃函数输出类别标签为1或者-1。

6.3 SMO高效优化算法

​ 1996年,John Platt发布SMO算法,用于训练SVM分类器。将大优化问题分解为多个小优化问题来求解,简化算法并且对它们进行顺序求解的结果与将它们作为整体求解的结果完全一致。在结果完全相同的情况下,SMO算法求解时间更短。

**SMO算法工作原理:**每次循环中选择两个alpha进行优化处理。一旦找到一对合适的alpha,那么就增大其中一个同时减小另一个。“合适”是指两个alpha满足两个条件:1.这两个alpha值必须在间隔边界之外,2.同时没有进行过区间优化处理或不在边界上。

6.5 在复杂数据上应用核函数

​ 对于非线性可分数据,使用核函数的工具将数据转化为易于分类器理解的形式。

6.5.1 利用核函数将数据映射到高维空间

​ 经过空间转化后,低维空间的非线性问题等价于高维空间的线性问题。

6.5.2 径向基核函数

​ 径向基核函数是SVM中常用的一个核函数。径向基函数是一个采用向量作为自变量的函数,能够基于向量距离运算输出一个标量。这个距离可以是<0,0>向量或者其他向量开始计算的距离。

6.7 本章小结

​ 支持向量机是一种分类器。之所以称“机”是因为它会产生一个二值决策结果,即它具有一种决策“机”。支持向量机的泛化错误率低,即它具有很好的学习能力,且学到的结果具有很好的推广性。SVM是监督学习中最好的定式算法。

​ 支持向量机试图通过求解一个二次优化问题来最大化分类间隔。SMO算法训练支持向量机,通过每次优化2个alpha值来加快SVM的训练速度。

​ 核方法或者核技巧会将数据从一个低维空间中的非线性问题转化为高维空间下的线性问题来求解。核方法不止在SVM中适用,还可以应用在其他算法中。径向基函数是一个常用的度量两个向量距离的核函数。

​ 支持向量机是一个二类分类器。当用其解决多类问题时,则需要格外的方法对其进行扩展。SVM的效果也对优化参数和所用的核函数中的参数敏感。

第7章 利用AdaBoost元算法提高分类性能

元算法(metal-algorithm)是对其他算法进行组合的一种方式。AdaBoost是一种流行的元算法,被认为是最好的监督学习方法,是机器学习工具箱中最强有力的工具之一。

所有分类器都会遇到一个通用的问题:当我们试图对样例数目不均衡的数据进行分类时,出现非均衡分类问题

7.1 基于数据集多重抽样的分类器

集成方法(ensemble method)或元算法是将不同的分类器组合起来的结果。

AdaBoost

​ 优点:泛化错误率低,易编码,可以应用在大部分分类器上,无参数调整。

​ 缺点:对离群点敏感。

​ 适用数据类型:数值型和标称型数据。

7.1.1 bagging:基于数据随机重抽样的分类器构建方法

​ 自举汇聚法(bootstrap aggregating)也称bagging方法,是在从原始数据集选择S次后得到S个新数据集的一种技术。新数据集和原数据集大小相等,每个数据集都是通过在原始数据集中随机选择一个样本来进行替换而得到的。替换就意味着可以多次选择同一个样本,这一性质允许数据集中可以有重复的值,而原始数据集的某些值在新集合中则不再出现。

​ 在S个数据集建立好后,将某个学习算法分别作用于每个数据集就得到了S个分类器。但需要对新数据分类时,就可以应用这S个分类器进行分类。同时,选择分类器投票结果中最多的类别作为最后的分类结果。

​ 更先进的bagging方法,如随机森林(random forest)

7.1.2 boosting

​ boosting和bagging很相似:使用的多个分类器的类型是一致的。

不同点在于:

​ 1.boosting中,不同的分类器是通过串行训练而获得的,每个新分类器都根据已训练出的分类器的性能进行训练。

​ 2.boosting是通过集中关注被已有分类器错分的那些数据来获得新的分类器。

​ 3.boosting分类的结果是基于所有分类器的加权求和结果的,且每个分类器权重并不相等(每个权重代表的是其对应分类器在上一轮迭代中的成功度);而bagging中分类器权重是相等的。

boosting方法最流行的是AdaBoost。

7.2 训练算法:基于错误提升分类器的性能

​ AdaBoost是adaptive boosting,使用弱分类器和多个实例构建一个强分类器。

运行过程是:

​ 1.训练数据中的每一个样本,并赋予其一个权重,这些权重构成向量D。

​ 2.一开始,权重的初始值为相等的值。

​ 3.首先在训练数据上训练出一个弱分类器并计算该分类器的错误率,然后在同一数据集上再次训练弱分类器。

​ 4.在分类器的第二次训练中,将会重新调整每个样本的权重,其中第一次分对的样本的权重将会下降,而第一次分错样本的权重将会提高。

​ 5.AdaBoost为每个分类器都分配了一个权重值alpha(alpha值是基于每个弱分类器的错误率进行计算的),以便从所有弱分类器中得到最终的分类结果。

​ 6.计算出alpha值后,对权重向量D进行更新,以便使得那些正确分类的样本的权重降低而错分样本的权重升高。

​ 7.计算出D值后,AdaBoosting又开始进行下一轮的迭代。不断地重复训练和调整权重,直到训练错误率为0或者弱分类器地数目达到用户地指定值为止。

7.3 基于单层决策树构建弱分类器

​ 单层决策树(decision stamp)是仅基于单个特征来做决策的简单决策树,是AdaBoosting最流行的弱分类器。

7.4 测试算法:基于AdaBoost的分类

​ 测试错误率达到最小值后又开始变大,这类现象称为过拟合(overfitting)。

​ AdaBoost和SVM是监督机器学习中最强大的两种方法。

7.7 非均衡分类问题

​ 在大多数情况下不同类别的分类代价并不相等。

分类器性能度量方法:

​ 1.测试错误率

7.7.1 其他分类性能度量指标:正确率、召回率及ROC曲线

混淆矩阵(confusion matrix)工具:在机器学习中,帮助人们更好的了解分类中的错误。

​ 在分类中,当某个类别的重要性高于其他类别时,引入正确率(Precision)= TP/(TP+FP)和召回率(Rcall)= TP/(TP+FN)度量分类性能。高正确率和高召回率难以同时保证,高正确率则低召回率

​ 另一个度量分类中的非均衡线性的工具是ROC曲线(ROC Curve),ROC代表接收者操作操作特征(Receiver operating characteristics)。ROC曲线不但可以用于比较分类器,还可以基于成本效益(cost-versus-benefit)分析来做决策。属于调节分类器的阈值处理非均衡分类代价的方法。

在理想情况下,最佳的分类器应该尽可能处于左上角,即分类器在假阳率(FP/(FP+TN))很低的同时获得很高的真阳率(TP/(TP+FN))。

​ 对不同的ROC曲线进行比较的一个指标是曲线下的面积(Area Unser the Curve, AUC),给出分类器的平均性能,但不能完全代替对整条曲线的观察。一个完美分类器的AUC为1.0,而随机猜测的AUC为0.5。

7.7.2 基于代价函数的分类器决策控制

​ 处理非均衡分类代价的另一种称为代价敏感的学习(cost-sensitive learning)。

7.7.3 处理非均衡问题的数据抽样方法

​ 还有一种针对非均衡问题调节分类器的方法,就是对分类器的训练数据进行改造。通过欠抽样(undersampling)或者过抽样(oversampling)实现。

​ 过抽样意味着复制样例,而欠抽样意味着删除样例。不管采用哪种方式,数据都会从原始形式改造为新形式。抽样过程可以通过随机方式或某个特定方式实现。

​ 删除样例时,选择离决策边界较远的样例删除。

​ 过抽样,可以复制已有样例或加入与已有样例相似的点。一种方法是加入已有数据点的插值点,但这种做法可能导致过拟合问题。

7.8 本章小结

​ 集成方法通过组合多个分类器的分类结果,获得比较简单的但分类器更好的分类结果。

​ 多个分类器的组合可能会进一步凸显单个分类器的不足,如过拟合问题。如果分类器之间差别显著,那么多个分类器组合就可能缓解这一问题。分类器之间的差别可以是算法本身或者是应用于算法上的数据的不同。

​ 本章介绍两种集成方法是baggingboostingbagging是通过随机抽样的替换方式,得到了与原始数据集规模一样的数据集。而boostingbagging的思路上更进一步,它在数据集上顺序应用了多个不同的分类器。另一个成功的方法是随机森林

boosting方法种最流行的AdaBoosting算法,以弱学习器作为基分类器,只要该分类器能够处理加权数据即可。AdaBoosting算法十分强大,能够快速处理其他分类器很难处理的数据集。

非均衡分类问题是指在分类器训练时正例数目和反例数目不相等(相差很大),在错分正例和反例的代价不同时也存在。本章考察了一种分类器的评价方法:ROC曲线。还介绍了正确率召回率这两种在类别重要性不同时,度量分类器性能的指标。

​ 还介绍了通过过抽样欠抽样方法调节数据集中的正例和反例数目,另外一个更好的处理非均衡问题的方法是,在训练分类器时将错误的代价考虑在内。

第二部分 利用回归预测数值型数据

​ 回归与分类的不同,在于其目标变量是连续数值型。

第8章 预测数值型数据:回归

8.1 用线性回归找到最佳拟合直线

​ 线性回归

​ 优点:结果易于理解,计算上不复杂。

​ 缺点:对非线性的数据拟合不好。

​ 适用数据类型:数值型和标称型数据。

8.2 局部加权线性回归

​ 线性回归的一个问题是有可能出现欠拟合现象,因为它求的是具有最小均方误差的无偏估计。通过允许在估计中引入一些偏差,从而降低预测的均方误差。其中一个方法就是局部加权线性回归(LWLR)。LWLR存在的问题是增加了计算量,因为它对每个点预测时都必须使用整个数据集。

​ 局部加权线性回归构建模型可以得到比普通线性回归更好的效果,局部加权线性回归的问题在于,每次必须在整个数据集上运行。

8.4 缩减系数来“理解”数据

​ 如果数据的特征比样本点还多,不可以使用上述的线性回归方法。采用缩减方法,减少不重要的参数,提高预测精度:(1)岭回归 (2)lasso (3)向前逐步回归 (4)LAR (5)PCA回归 (6)子集选择

8.7 本章小结

​ 与分类一样,回归也是预测目标值的过程。回归与分类的不同点在于,前者预测连续型变量,而分类预测离散型变量。回归是统计学中最有力的工具之一,在回归方程里,求得特征对应的最佳回归系数的方法是最小化误差的平方和。给定输入矩阵X,如果XTX的逆存在并可以求得的话,回归法可以直接使用。数据集上计算出的回归方程并不一定意味着它是最佳的,可以使用预测值yHat和原始值y的相关性来度量回归方程的好坏。

​ 但数据的样本数比特征数还少的时候,矩阵XTX的逆不能计算。即便当样本数比特征数多时,XTX的逆仍有可能无法直接计算,这是因为特征有可能高度相关,这时可以考虑使用岭回归,因为当XTX逆不能计算时,它仍能求得回归参数。

​ 岭回归是缩减法的一种,相当于对回归系数的大小施加了限制,另一种很好的缩减法是lasso。lasso难以求解,但可以使用计算简便的逐步线性回归方法求得近似结果。

​ 缩减法还可以看作是对一个模型增加偏差的同时减少方差。偏差分析折中是一个重要的概念,可以帮助我们理解现有模型并作出改进,从而得到更好的模型。

第9章 树回归

​ 数据集中经常包含一些复杂的相互关系,使得输入数据和目标变量之间呈非线性关系。对这些复杂关系的建模,一种可行的方法是使用树来对预测值分段,包括分段常数或分段直线。一般采用树结构来对这种数据建模。相应地,若叶节点使用的模型是分段常数则称为回归树,若叶节点使用的模型是线性回归方程则称为模型树

​ CART算法可以用于构建二元树并处理离散或连续型数据的切分。若使用不同的误差准则,就可以通过CART算法构建模型树和回归树。该算法构建出的树倾向于对数据过拟合。一棵过拟合的树常常十分复杂,剪枝技术的出现就是为了解决这个问题。两种剪枝方法分别是预剪枝(在树的构建过程中就进行剪枝)和后剪枝(当树构建完毕再剪枝),预剪枝更有效但需要用户定义一些参数。

第三部分 无监督学习

第10章 利用K-均值聚类算法对未标注数据分组

​ 聚类是一种无监督的学习方法。无监督学习是指事先并不知道要寻找的内容,即没有目标变量。聚类将数据点归到多个簇中,其中相似数据点处于同一簇,而不相似数据点处于不同簇中。聚类中可以使用多种不同的方法来计算相似度。

​ 一种广泛使用的聚类算法是K-均值算法,其中K是用户指定的要创建的簇的数目。K-均值聚类算法以K个随机质心开始。算法会计算每个点到质心的距离。每个点会被分配到距离其最近的簇质心然后紧接着基于新分配到簇的点更新簇质心。以上过程重复数次,直到簇质心不再改变。这个简单的算法非常有效,但也容易收到初始簇质心的影响。为了获得更好的聚类效果,可以使用一种称为二分K-均值的聚类算法。二分K-均值算法首先是将所有点作为一个簇,然后使用K-均值算法(K=2)对其划分。下一次迭代时,选择有最大误差的簇进行划分。该过程重复直到K个簇创建成功为止。二分K-均值的聚类效果要好于K-均值算法。

​ K-均值算法及其变形的K-均值算法并非仅有的聚类算法,另外称为层次聚类的方法也被广泛使用。

第11章 使用Apriori算法进行关联分析

​ 关联分析是用于发现大数据集中元素间有趣关系的一个工具集,可以采用两种方法来量化这些有趣的关系。第一种方式是使用频繁项集,它会给出经常在一起出现的元素项。第二种方式是关联规则,每条关联规则意味着元素项之间的“如果…那么…”关系。

​ 发现元素项间不同组合是个十分耗时的任务,不可避免需要大量昂贵的计算资源,这就需要一些更智能的方法在合理的时间范围内找到频繁项集。能够实现这一目标的一个方法是Apriori算法,它使用Apriori原理来减少再数据库上进行检查的集合的数目。原理是:如果一个元素项是不频繁的,那么包含该元素的超集也是不频繁的。Apriori算法从单元项集开始,通过组合满足最小支持度要求的项集来形成更大的集合。支持度用来度量一个集合在原始数据中出现的频率。

​ 每次增加频繁项集的大小,Apriori算法都会重新扫描整个数据集。当数据集很大时,这会显著降低频繁项集发现的速度。FP-growth算法只需要对数据库进行两次遍历,能够显著加快发现频繁项集的速度。

第12章 使用FP-growth算法来高效发现频繁项集

​ FP-growth算法是一种用于发现数据集中频繁模式的有效方法,利用Apriori原则,执行更快。Apriori产生候选项集,然后扫描数据集检查它们是否频繁。由于只对数据集扫描两次,因此FP-growth算法执行更快。在FP-growth算法中,数据集存储在一个称为FP树的结构中。FP树构建完成后,可以通过查找元素项的条件基及构建条件FP树来发现频繁项集。该过程不断以更多元素作为条件重复进行,直到FP树只包含一个元素为止。

​ 可以使用FP-growth算法在多种文本文档中查找频繁单词。

第四部分 其他工具

第13章 利用PCA简化数据

降维技术:1. 主成分分析(Principal Component Analysis, PAC),按照数据方差最大的方向调整数据。

​ 2. 因子分析(Factor Analysis)

​ 3. 独立成分分析(Independent Component Analysis, ICA)

降维的目标是对输入的数据进行削减,由此剔除数据中的噪声并提高机器学习方法的性能。

​ 降维技术使得数据变得更易使用,并且它们往往能够去除数据中的噪声,使得其他机器学习任务更加精确。降维往往作为预处理步骤,在数据应用到其他算法之前清洗数据。有很多技术可以应用于数据降维,主成分分析、因子分析、独立成分分析比较流行。

​ PCA可以从数据中识别其主要特征,它是通过沿着数据最大方差方向旋转坐标轴实现的。选择方差最大的方向作为第一条坐标轴,后续坐标轴则与前面的坐标轴正交。协方差矩阵上的特征值分析可以用一系列的正交坐标轴获取。

第14章 利用SVD简化数据

​ 奇异值分解(Singular Value Decomposition, SVD),实现用小得多的数据集表示原始数据集,去除噪声和冗余信息。SVD通过隐性语义索引应用于搜索和信息检索领域,推荐系统等。

​ SVD是一种强大的降维工具,利用SVD逼近矩阵并从中提取重要特征。通过保留矩阵80%~90%的能量,就可以得到重要的特征并去掉噪声。SVD成功应用于推荐引擎。

​ 推荐引擎将物品推荐给用户,协调过滤则是一种基于用户喜好或行为数据的推荐的实现方法。协同过滤的核心是相似度计算方法,有很多相似度计算方法都可以用于计算物品或用户之间的相似度。通过在低维空间下计算相似度,SVD提高了推荐引擎的效果。

​ 在大规模数据集上,SVD的计算和推荐可能是一个很困难的工程问题。通过离线方式进行SVD分解和相似度计算,是一种减少冗余计算和推荐所需时间的办法。

第15章 大数据与MapReduce

​ MapReduce: 分布式计算的框架

​ 当运算需求超出了当前资源的运算能力,可以考虑购买更好的机器。另一个情况是,运算需求超出了合理价位下所能购买到的机器的运算能力。其中一个解决办法是将计算转变成并行的作业,MapReduce就提供了这种方案的一个具体实施框架。在MapRdeduce中,作业被分成map阶段和reduce阶段。

​ 一个典型的作业流程是先使用map阶段并行处理数据,之后将这些数据在reduce阶段合并。这种多对一的模型很典型,但不是唯一的流程。mapper和reducer之间传输数据的形式是key/value对。一般地,map阶段后数据还会按照key值进行排序。Hadoop是一个流行的可运行mapreduce作业的Java项目,同时提供非Java作业的运行支持,叫做Hadoop流。

​ Amazon网络服务(AWS)允许用户按时长期租借计算资源。弹性MapReduce(EMR)是Amazon网络服务的一个常用工具,可以帮助用户在AWS上运行Hadoop流作业。简单的单步MapReduce任务可以在EMR管理控制台上实现并运行。更复杂的任务需要额外的工具,其中一个相对新的开源工具是mrjob,使用该工具可以顺序地执行大量地MapReduce作业。经过很少地配置,mrjob就可以自动完成AWS的各种繁杂步骤。

​ 很多机器学习算法都可以很容易地写成MapReduce作业,而另一些机器学习算法需要经过创新性地修改,才能在MapReduce运行。SVM是一个强大地文本分类工具,在大量文档上训练一个分类器需要耗费巨大地计算资源,而Pegasos算法可以分布式的训练SVM分类器。像Pegasos算法一样,需要多次MapReduce作业的机器学习算法可以很方便的使用mrjob实现。

p流。

​ Amazon网络服务(AWS)允许用户按时长期租借计算资源。弹性MapReduce(EMR)是Amazon网络服务的一个常用工具,可以帮助用户在AWS上运行Hadoop流作业。简单的单步MapReduce任务可以在EMR管理控制台上实现并运行。更复杂的任务需要额外的工具,其中一个相对新的开源工具是mrjob,使用该工具可以顺序地执行大量地MapReduce作业。经过很少地配置,mrjob就可以自动完成AWS的各种繁杂步骤。

​ 很多机器学习算法都可以很容易地写成MapReduce作业,而另一些机器学习算法需要经过创新性地修改,才能在MapReduce运行。SVM是一个强大地文本分类工具,在大量文档上训练一个分类器需要耗费巨大地计算资源,而Pegasos算法可以分布式的训练SVM分类器。像Pegasos算法一样,需要多次MapReduce作业的机器学习算法可以很方便的使用mrjob实现。

你可能感兴趣的:(机器学习实战)