基于Spark的机器学习资料43、其它SparkML算法简单介绍

合集下载

《Spark大数据编程基础(Scala版)》第九章 Spark机器学习原理

《Spark大数据编程基础(Scala版)》第九章 Spark机器学习原理

9.2.1 Pipeline概念
3.Estimator Estimator直译为评估器。其包括拟合和训练数据的所有
算法。通过执行以DataFrame为输入的fit()操作,生成一个模 型,该模型就是Transformer。例如:LogisticRegression是评 估器,通过执行fit()操作,训练产生LogisticRegressionModel, 即转换器。
9.1 Spark机器学习简介
spark.ml和spark.mllib都属于Spark的机器学习库,它们之 间的主要区别如下:
(1) spark.ml是升级版的spark.mllib,最新的Spark版本优 先支持spark.ml,2.0版本后,spark.mllib进入维护阶段,只进 行bug修复。
spark.ml.linalg 线性代数
spark.ml.recommendation 推荐
FPGrowth
Matrix Vector
ALS
spark.ml.regression 回归
AFTSurvivalRegression DecisionTreeRegressor RandomForestRegressor
9.1 Spark机器学习简介
目前(Spark2.3.0) spark.ml提供图9-1所示的API,在Spark 后续版本中,新的机器学习算法将加入spark.ml。
9.1 Spark机器学习简介
图 9-1 spark.ml库(Spark2.3.0)
9.1 Spark机器学习简介
spark.ml.fpm 关联规则
9.1 Spark机器学习简介 9.2 ML Pipeline 9.3 Spark机器学习数据准备 9.4 算法调优 9.5 本章小结

基于Spark的机器学习资料38、Spark ML(机器学习)介绍(监督学习、半监督学习、无监督学习)

基于Spark的机器学习资料38、Spark ML(机器学习)介绍(监督学习、半监督学习、无监督学习)

Spark ML(机器学习)介绍(监督学习、半监督学习、无监督学习)一、机器学习定义机器学习(Machine Learning, ML)是一门多领域交叉学科,涉及概率论、统计学、逼近论、凸分析、算法复杂度理论等多门学科。

专门研究计算机怎样模拟或实现人类的学习行为,以获取新的知识或技能,重新组织已有的知识结构使之不断改善自身的性能。

机器学习还有模式识别、计算机视觉、语音识别、统计学习以及自然语言处理等,而在目前机器学习中,深度学习是机器学习研究中的一个新的领域,其动机在于建立、模拟人脑进行分析学习的神经网络,它模仿人脑的机制来解释数据,例如图像,声音和文本。

机器学习代表人物:1、Andrew Ng (吴恩达)不久前刚从百度的首席数字科学家的职位离开,他还是斯坦福大学计算机科学系副教授,在线教育平台Coursera 的联合创始人之一。

2、Yoshua Bengio 是蒙特利尔大学计算机科学教授,他因在人工神经网络和深度学习方面的研究而著名。

Bengio 曾说,他的研究背后最大的野心是理解“获取智慧的学习的原则”。

除了AI 和ML 的其他原则之外,他发表的大部分工作设计用于编码或格式化非结构化数据的自动编码器,通过无监督机器学习令计算机可以理解。

3、Yann LeCun作为自2013年以来Facebook 的AI 研究主管,LeCun 在计算机视觉领域的开创性工作获得广泛认可,计算机视觉是教机器以与人类识别物体相同的方式去“看见”物体,并通过对它们进行分类的方式学习它们。

LeCun 也被认为是卷积神经网络的发明人之一,这类模型的目标是创建与生物有机体(例如眼睛或大脑)相同的方式去获取及解释信息的算法。

LeCun 是纽约大学数据科学中心的创始人。

4、Demis Hassabis 是DeepMind 联合创始人,DeepMind 是谷歌在2014年收购的一家英国AI 创业公司。

Hassabis 的工作重点是结合机器学习和神经科学方法促进人工神经网络的发展。

利用SparkML实现大数据分析与机器学习

利用SparkML实现大数据分析与机器学习

利用SparkML实现大数据分析与机器学习在当今信息时代,数据已经成为了不可或缺的资源。

特别是在企业建设和发展中,大数据已经成为了一个重要的资产。

然而,对于企业来说,如何处理这样大量的数据,以及如何从中获取更多的价值,却成为了一个难题。

这时,机器学习就出现了,它可以帮助企业快速发现有价值的信息。

而SparkML就是大数据分析与机器学习的一个非常有前途的工具。

一、Spark与SparkMLSpark是一种快速的分析大数据的工具。

它的核心特点是分布式数据处理,并且其基于内存而不是基于硬盘的运算方式,可以大幅度提高数据处理的速度。

同时,Spark还支持数据的流计算和批处理,并且可以对数据进行高斯模糊和机器学习。

Spark已经成为大数据领域中非常重要的一项技术。

SparkML是一种利用Spark进行大数据分析与机器学习的工具,是Spark生态系统中的一个子项目。

SparkML的特点是可以在分布式环境下同时处理多个大数据集,而且这些数据集可以运用不同的机器学习算法。

除此之外,SparkML还提供了数据转换、数据分析、数据挖掘和数据可视化等相关工具。

二、SparkML的机器学习工具SparkML提供了很多机器学习工具,主要包括以下几种:1.分类器:SparkML的分类器是基于Naive Bayes、支持向量机和决策树等算法的。

通过分析现有的数据集,分类器可以判断新的数据属于哪个类别,并给出相应的预测结果。

2.聚类器:SparkML的聚类器是基于K-means和Bisecting K-means等算法的。

聚类器可以将数据集中的数据分成不同的群组,每一组数据都有自己的一些共同特征。

3.回归器:SparkML的回归器是基于线性回归和逻辑回归等算法的。

回归器可以从已知的数据中预测新的未知数据的数值或者群组信息。

4.协同过滤器:SparkML的协同过滤器是基于推荐算法的。

它可以对大量的数据进行分析和处理,并且根据用户的偏好和历史行为,给出相应的推荐结果。

基于Spark的机器学习应用与算法实现探究

基于Spark的机器学习应用与算法实现探究

基于Spark的机器学习应用与算法实现探究在当前大数据时代,机器学习已经广泛应用于各个领域。

Spark作为一种快速、通用的大数据处理引擎,具有高效、灵活且易于使用的特点,成为了许多机器学习应用的首选平台。

本文将探究基于Spark的机器学习应用与算法实现的相关内容。

首先,我们来了解一下什么是Spark。

Spark是一种基于内存的分布式计算框架,提供了高效的数据处理能力,可以处理大规模数据,并且可以在多个节点上进行并行计算。

与其他分布式框架相比,Spark具有更好的容错性和性能优势,因此成为了大数据处理的热门选择。

在Spark中,机器学习库MLlib提供了丰富的机器学习算法和工具,方便用户进行各种机器学习任务的实现。

MLlib支持常见的机器学习任务,例如分类、回归、聚类和推荐等。

用户可以利用MLlib提供的算法和工具,快速构建并训练自己的模型。

在机器学习应用中,数据预处理是一个必不可少的步骤。

Spark提供了丰富的数据处理函数和工具,可以帮助用户对数据进行清洗、转换和特征提取等操作。

例如,用户可以使用Spark的数据清洗函数对数据中的缺失值进行处理,使用特征提取算法将原始数据转换为可用于训练的特征向量。

除了数据预处理,特征工程也是机器学习应用中非常重要的一步。

在特征工程中,用户可以利用Spark强大的数据处理能力,进行特征选择、特征降维和特征构造等操作。

Spark提供了多种特征选择算法,例如互信息、卡方检验和递归特征消除等,帮助用户选择最具有代表性和区分度的特征。

此外,Spark还提供了主成分分析(PCA)和线性判别分析(LDA)等降维算法,方便用户将高维数据转换为低维空间。

同时,用户还可以根据自己的业务需求,利用Spark的工具进行特征构造,例如利用文本数据进行词袋模型的构建,或者利用时间序列数据进行滑动窗口的构建。

在模型训练阶段,Spark提供了丰富的机器学习算法,方便用户选择适合自己问题的算法。

基于Spark的MLlib-v2

基于Spark的MLlib-v2

基于Spark的MLlibExample 1: K-means(一)算法简介K-means算法是典型的基于距离的聚类算法,采用距离作为相似性的评价指标,即认为两个对象的距离越近,其相似度就越大。

该算法认为簇是由距离靠近的对象组成的,因此把得到紧凑且独立的簇作为最终目标。

k个初始类聚类中心点的选取对聚类结果具有较大的影响,因为在该算法第一步中是随机的选取任意k个对象作为初始聚类的中心,初始地代表一个簇。

该算法在每次迭代中对数据集中剩余的每个对象,根据其与各个簇中心的距离将每个对象重新赋给最近的簇。

当考察完所有数据对象后,一次迭代运算完成,新的聚类中心被计算出来。

如果在一次迭代前后,评价指标的值没有发生变化,说明算法已经收敛。

(二)算法步骤算法过程如下:Step 1: 从数据集的N个元素中随机选取K个元素作为质心;Step 2: 对剩余的每个元素测量其到每个质心的距离,并把它归到最近的质心的类;Step 3: 重新计算已经得到的各个类的质心;Step 4: 迭代2~3步直至新的质心与原质心相等或小于指定阈值,算法结束。

(三)算法举例举个简单的例子,假如现在有n个数据形成的数据集data[n],要对这n个元素进行k-means聚类,那么可按以下流程去做:输入:k,data[n];Step 1: 选择k个初始中心点,例如c[0]=data[0],…c[k−1]=data[k−1];Step 2: 对于data[0]….data[n],分别与c[0]…c[k−1]进行比较,假定与c[i]差值最少,就标记为i;Step 3: 对于所有标记为i的点,重新计算它们的中心c[i]= {所有标记为i的data[j]之和}/标记为i的个数;Step 4: 重复step 2 和step 3,直到所有c[i]值的变化小于给定阈值。

(四)基于Spark的算法实现并行化说明:可以找到以上代码中标记为Trains the k-means model的那行代码,可以看到这里调用了一个命名为KMeans的包,我们去找到这个包,里面做的就是数据的切割和分发处理,第二个标黄的reduceByKey要做的事情就是把每一块处理完的结果进行合并汇总。

SparkMLib完整基础入门教程

SparkMLib完整基础入门教程

SparkMLib完整基础⼊门教程Spark MLib在Spark下进⾏机器学习,必然⽆法离开其提供的MLlib框架,所以接下来我们将以本框架为基础进⾏实际的讲解。

⾸先我们需要了解其中最基本的结构类型,即转换器、估计器、评估器和流⽔线。

graph LR A[转换器] --> B(估计器) B --> C(评估器) C --> D[模型]⾸先欢迎⼤家Start本⼈关于机器学习的,不仅仅包含了Spark ML还包括python下的sklearn等主流库。

⼀、基础使⽤接下来我们将以⼀个简单的例⼦为基础整体介绍在Spark下进⾏机器学习的使⽤⽅式,便于读者⼤体熟悉完整的流程节点。

当然在这其中对于部分不了解的情况下可以等在后续详细学习的过程中进⾏补充即可。

1. 特征⼯程这部分相关知识可以参考本⼈编写的的开源教程,其中对该部分进⾏详细的说明,下⾯我们将就框架提供的RFormula进⾏具体的实战操作(这⾥熟悉R语⾔的可能对此⽐较熟悉,本⾝就是借鉴了R语⾔,但是仅实现了其中的⼀个⼦集),对于我们需要进⾏特征化的数据⾸先我们需要定义对应的线性模型公式,具体如下。

Dataset<Row> df = session.read().json("sparkdemo/data/simple-ml");RFormula supervised = new RFormula().setFormula("lab ~ . + color: value1 + color: value2");当然仅仅通过上述的⽅式还不能实现对数据的特征化,我们还需要通过数据对其进⾏训练,从⽽得到我们所需的转换器,为此我们需要使⽤其中的fit⽅法进⾏转换。

RFormulaModel model = supervised.fit(df);完成转换器的训练后我们就可以利⽤其进⾏实际的转换操作,从⽽⽣成特征features与标签label列,当然读者也可以通过supervised.setLabelCol设置标签列名,supervised.setFeaturesCol设置特征列名。

Spark基本概念及入门

Spark基本概念及入门

Spark基本概念及⼊门sparkspark背景什么是sparkSpark是⼀种快速、通⽤、可扩展的⼤数据分析引擎,2009年诞⽣于加州⼤学伯克利分校AMPLab,2010年开源,2013年6⽉成为Apache孵化项⽬,2014年2⽉成为Apache顶级项⽬。

⽬前,Spark⽣态系统已经发展成为⼀个包含多个⼦项⽬的集合,其中包含SparkSQL、Spark Streaming、GraphX、MLlib等⼦项⽬,Spark是基于内存计算的⼤数据并⾏计算框架。

Spark基于内存计算,提⾼了在⼤数据环境下数据处理的实时性,同时保证了⾼容错性和⾼可伸缩性,允许⽤户将Spark部署在⼤量廉价硬件之上,形成集群。

Spark与HadoopSpark是⼀个计算框架,⽽Hadoop中包含计算框架MapReduce和分布式⽂件系统HDFS,Hadoop更⼴泛地说还包括在其⽣态系统上的其他系统.为什么使⽤Spark?Hadoop的MapReduce计算模型存在问题:Hadoop的MapReduce的核⼼是Shuffle(洗牌).在整个Shuffle的过程中,⾄少产⽣6次I/O流.基于MapReduce计算引擎通常会将结果输出到次盘上,进⾏存储和容错.另外,当⼀些查询(如:hive)翻译到MapReduce任务是,往往会产⽣多个Stage,⽽这些Stage有依赖底层⽂件系统来存储每⼀个Stage的输出结果,⽽I/O的效率往往较低,从⽽影响MapReduce的运⾏速度.Spark的特点: 快, 易⽤, 通⽤,兼容性快:与Hadoop的MapReduce相⽐,Spark基于内存的运算要快100倍以上,基于硬盘的运算也要快10倍以上。

Spark实现了⾼效的DAG执⾏引擎,可以通过基于内存来⾼效处理数据流。

易⽤:Spark⽀持Java、Python和Scala的API,还⽀持超过80种⾼级算法,使⽤户可以快速构建不同的应⽤。

⽽且Spark⽀持交互式的Python和Scala的shell,可以⾮常⽅便地在这些shell中使⽤Spark集群来验证解决问题的⽅法。

Spark基础知识详解

Spark基础知识详解

Spark基础知识详解Apache Spark是⼀种快速通⽤的集群计算系统。

它提供Java,Scala,和R中的⾼级API,以及⽀持通⽤执⾏图的优化引擎。

它还⽀持⼀组丰富的⾼级⼯具,包括⽤于SQL和结构化数据处理的Spark SQL,⽤于机器学习的MLlib,⽤于图形处理的GraphX和Spark Streaming。

Spark优点:减少磁盘I/O:随着实时⼤数据应⽤越来越多,Hadoop作为离线的⾼吞吐、低响应框架已不能满⾜这类需求。

HadoopMapReduce的map端将中间输出和结果存储在磁盘中,reduce端⼜需要从磁盘读写中间结果,势必造成磁盘IO成为瓶颈。

Spark允许将map端的中间输出和结果存储在内存中,reduce端在拉取中间结果时避免了⼤量的磁盘I/O。

Hadoop Yarn中的ApplicationMaster申请到Container后,具体的任务需要利⽤NodeManager从HDFS的不同节点下载任务所需的资源(如Jar包),这也增加了磁盘I/O。

Spark将应⽤程序上传的资源⽂件缓冲到Driver本地⽂件服务的内存中,当Executor执⾏任务时直接从Driver的内存中读取,也节省了⼤量的磁盘I/O。

增加并⾏度:由于将中间结果写到磁盘与从磁盘读取中间结果属于不同的环节,Hadoop将它们简单的通过串⾏执⾏衔接起来。

Spark把不同的环节抽象为Stage,允许多个Stage 既可以串⾏执⾏,⼜可以并⾏执⾏。

避免重新计算:当Stage中某个分区的Task执⾏失败后,会重新对此Stage调度,但在重新调度的时候会过滤已经执⾏成功的分区任务,所以不会造成重复计算和资源浪费。

可选的Shuffle排序:HadoopMapReduce在Shuffle之前有着固定的排序操作,⽽Spark则可以根据不同场景选择在map端排序或者reduce端排序。

灵活的内存管理策略:Spark将内存分为堆上的存储内存、堆外的存储内存、堆上的执⾏内存、堆外的执⾏内存4个部分。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Spark ML算法简单介绍
一、线性回归算法
线性回归(Linear Regression),数理统计中回归分析,用来确定两种或两种以上变量间相互依赖的定量关系的一种统计分析方法,其表达形式为y = w'x+e,e为误差服从均值为0的正态分布,其中只有一个自变量的情况称为简单回归,多个自变量的情况叫多元回归。

这个例子中近简化使用房屋面积一个因子作为自变量,y轴对应其因变量房屋价格。

所以我们机器学习的线性回归就变为对于给定有限的数据集,进行一元线性回归,即找到一个一次函数y=y(x) + e,使得y满足当x={2104, 1600, 2400, 1416, 3000, ... }, y={400, 330, 369, 232, 540, ... } 如下图所示:
至于公式的求解,大家可以自己去看一下源码或者方程求解,这里就不讲解了。

二、逻辑回归算法
logistic回归本质上是线性回归,只是在特征到结果的映射中加入了一层函数映射,即先把特征线性求和,然后使用函数g(z)将最为假设函数来预测。

g(z)可以将连续值映射到0和1上。

它与线性回归的不同点在于:为了将线性回归输出的很大范围的数,例如从负无穷到正无穷,压缩到0和1之间,这样的输出值表达为“可能性”才能说服广大民众。

当然了,把大值压缩到这个范围还有个很好的好处,就是可以消除特别冒尖的变量的影响。

三、贝叶斯分类算法
贝叶斯定理
贝叶斯定理解决的是这样一个问题:已知在事件B发生的条件下,事件A的发生概率P(A|B),怎样得到事件A发生的条件下,事件B的发生概率P(B|A)?贝叶斯定理为我们打通了从P(A|B) 到P(B|A) 的道路。

P(B|A) = P(A|B) ×P(B) / P(A)
举例说明,假设已经有了100个email,其中:
垃圾邮件占比60%,即P(Spam) = 0.6
80%的垃圾邮件包含关键字“buy”,即P(Buy|Spam) = 0.8
20%的垃圾邮件不包含关键字“buy”
正常邮件占比40%,即P(NotSpam) = 0.4
10%的正常邮件包含关键字“buy”,即P(Buy|NotSpam) = 0.1
90%的正常邮件不包含关键字“buy”
现在,第101个email 进来了,它包含关键字“buy”,那么它是垃圾邮件的概率P(Spam|Buy) 是多少?
P(Spam|Buy) = P(Buy|Spam) ×P(Spam) / P(Buy)
P(Buy) = P(Buy|Spam) ×P(Spam) + P(Buy|NotSpam) ×P(NotSpam)
P(Spam|Buy) = (0.8 ×0.6) / (0.8 ×0.6 + 0.1 ×0.4) = 0.48 / 0.52 = 0.923
由此得出,这个email 有92.3%的可能是一个垃圾邮件。

四、SVM支持向量机算法
支持向量机是一个类分类器,它能够将不同类的样本在样本空间中践行分割,其中生成的分隔面叫作分隔超平面。

给定一些标记好的训练样本,SVM算法输出一个最优化的分隔超平面。

五、决策树算法
决策树就是通过一系列规则对数据进行分类的一种算法,可以分为分类树和回归树两类,分类树处理离散变量的,回归树是处理连续变量。

样本一般都有很多个特征,有的特征对分类起很大的作用,有的特征对分类作用很小,甚至没有作用。

如决定是否对一个人贷款是,这个人的信用记录、收入等就是主要的判断依据,而性别、婚姻状况等等就是次要的判断依据。

决策树构建的过程,就是根据特征的决定性程度,先使用决定性程度高的特征分类,再使用决定性程度低的特征分类,这样构建出一棵倒立的树,就是我们需要的决策树模型,可以用来对数据进行分类。

决策树学习的过程可以分为三个步骤:1)特征选择,即从众多特征中选择出一个作为当前节点的分类标准;
2)决策树生成,从上到下构建节点;3)剪枝,为了预防和消除过拟合,需要对决策树剪枝。

六、Kmeans聚类算法
聚类(clustering)与分类(classification)的不同之处在于:分类是一种示例式的有监督学习算法,它要求必须事先明确知道各个类别的信息,并且断言所有待分类项都有一个类别与之对应,很多时候这个条件是不成立的,尤其是面对海量数据的时候;而聚类是一种观察式的无监督学习算法,在聚类之前可以不知道类别甚至不给定类别数量,由算法通过对样本数据的特征进行观察,然后进行相似度或相异度的分析,从而达到“物以类聚”的目的。

七、LDA主题模型算法
隐含狄利克雷分配(LDA,Latent Dirichlet Allocation)是一种主题模型(Topic Model,即从所收集的文档中推测主题)。

甚至可以说LDA模型现在已经成为了主题建模中的一个标准,是实践中最成功的主题模型之一。

那么何谓“主题”呢?,就是诸如一篇文章、一段话、一个句子所表达的中心思想。

不过从统计模型的角度来说,我们是用一个特定的词频分布来刻画主题的,并认为一篇文章、一段话、一个句子是从一个概率模型中生成的。

也就是说在主题模型中,主题表现为一系列相关的单词,是这些单词的条件概率。

形象来说,主题就是一个桶,里面装了出现概率较高的单词,这些单词与这个主题有很强的相关性。

LDA可以用来识别大规模文档集(document collection)或语料库(corpus)中潜藏的主题信息。

它采用了词
袋(bag of words)的方法,这种方法将每一篇文档视为一个词频向量,从而将文本信息转化为了易于建模的数字信息。

但是词袋方法没有考虑词与词之间的顺序,这简化了问题的复杂性,同时也为模型的改进提供了契机。

每一篇文档代表了一些主题所构成的一个概率分布,而每一个主题又代表了很多单词所构成的一个概率分布。

LDA可以被认为是如下的一个聚类过程:
(1)各个主题(Topics)对应于各类的“质心”,每一篇文档被视为数据集中的一个样本。

(2)主题和文档都被认为存在一个向量空间中,这个向量空间中的每个特征向量都是词频(词袋模型)
(3)与采用传统聚类方法中采用距离公式来衡量不同的是,LDA使用一个基于统计模型的方程
八、FPGrowth关联规则算法
关联规则挖掘的一个典型例子是购物篮分析。

关联规则研究有助于发现交易数据库中不同商品(项)之间的联系,找出顾客购买行为模式,如购买了某一商品对购买其他商品的影响,分析结果可以应用于商品货架布局、货存安排以及根据购买模式对用户进行分类。

九、ALS交替最小二乘算法
ALS(Alternating Least Square),交替最小二乘法。

在机器学习中,特指使用最小二乘法的一种协同推荐算法。

如下图所示,u表示用户,v表示商品,用户给商品打分,但是并不是每一个用户都会给每一种商品打分。

比如用户u6就没有给商品v3打分,需要我们推断出来,这就是机器学习的任务。

由于并不是每个用户给每种商品都打了分,可以假设ALS矩阵是低秩的,即一个m*n的矩阵,是由m*k和k*n两个矩阵相乘得到的,其中k<<m,n。

Am×n=Um×k×Vk×n
这种假设是合理的,因为用户和商品都包含了一些低维度的隐藏特征,比如我们只要知道某个人喜欢碳酸饮料,就可以推断出他喜欢百世可乐、可口可乐、芬达,而不需要明确指出他喜欢这三种饮料。

这里的碳酸饮料就相当于一个隐藏特征。

上面的公式中,Um×k表示用户对隐藏特征的偏好,Vk×n表示产品包含隐藏特征的程度。

机器学习的任务就是求出Um×k和Vk×n。

可知uiTvj是用户i对商品j的偏好,使用Frobenius 范数来量化重构U和V产生的误差。

由于矩阵中很多地方都是空白的,即用户没有对商品打分,对于这种情况我们就不用计算未知元了,只计算观察到的(用户,商品)集合R。

这样就将协同推荐问题转换成了一个优化问题。

目标函数中U和V相互耦合,这就需要使用交替二乘算法。

即先假设U的初始值U(0),这样就将问题转化成了一个最小二乘问题,可以根据U(0)可以计算出V(0),再根据V(0)计算出U(1),这样迭代下去,直到迭代了一定的次数,或者收敛为止。

虽然不能保证收敛的全局最优解,但是影响不大。

十、协同过滤推荐算法
基于协同过滤的推荐,可以理解为基于用户行为的推荐。

依赖于用户过去的行为的协同过滤,行为可以是过往的交易行为和商品评分,这种方式不需要显性的属性信息。

协同过滤通过分析用户和商品的内在关系来识别新的user-item 关系。

协同过滤领域主要的两种方式是最近邻(neighborhood)方法和潜在因子(latent factor)模型。

最近邻方法主要集中在item 的关系或者是user 的关系,是比较基础的过滤引擎。

而潜在因子模型并不是选取所有的关
系,而是通过矩阵分解的技术将共现矩阵的分解,比如提取20-100个因子,来表示原始矩阵信息(可以对比上面提到的音乐基因,只不过潜在因子模型是通过计算机化的实现)。

相关文档
最新文档