机器学习
机器学习是数据通过算法构建出模型并对模型进行评估,评估的性能如果达到要求就拿这个模型来测试其他数据,如果达不到要求就要调整算法来重新建立模型,再次进行评估,如此循环反复,最终获得满意的经验来处理其他数据。
- 监督学习
监督是从给定的训练数据集中学习一个函数(模型),当新的数据到来时,可以
官方文档地址
MLlib 是Spark 机器学习库。它的目标是使实际的机器学习规模化,简单化。简单讲,它提供了如下工具:
- 机器学习算法(ML Algorithms):常用的机器学习算法如 聚类(classification), 回归(regression), 聚簇(clustering), 协同过滤(collaborative filtering)
- 特征化(Featurization): 特征提取,转换,降维,选择
- 流水线(Pipelines): 构造,评估,调优(tuning) 机器学习管道(ML Pipelines).
- 持久化(Persistence): 保存和载入算法,模型,和流水线(Pipelines).
- 工具:线性代数,统计,数据处理
推荐系统(Recommender system)
推荐系统典型的通过以下两种方式产生推荐列表:通过协同过滤或者通过基于内容的过滤(基于个性方法)。协同过滤从用户过去的行为和其他用户的相同决定构建模型。这个模型用于预测物品或者用户感兴趣的。基于内容的过滤方法利用一系列离散的物品特点来推荐另外拥有相同特点的物品。这些方法通常结合为混合推荐系统(Hybrid Recommender Systems).
协同滤波(Collaborative filter)
设计一个推荐系统广泛使用的一个方法是协同滤波。协同滤波方法基于收集和分析大量用户的行为,活动,喜好,基于与其他用户的相似度预测用户会的喜好。协同滤波的关键优点是它不依赖于机器分析内容,因此,它有能力精确推荐复杂的物品例如电影而不需要去了解物品本身。在推荐系统中很多算法用来测量用户相似度或者物品相似度。例如,k-nearest neighbor (k-NN)方法和 Allen首先实现的皮尔森纠正(Pearson Correlation).
协同滤波是基于人们过去赞同的未来也会赞同的假设,并且他们会喜欢与他们过去喜欢的物品相似的物品。
当从用户模型构建行为时,一个区别通常是显式的数据收集和隐式的数据收集。
协同滤波著名的例子之一是 item-item的协同滤波, Amazon.com 推荐系统的流行推荐算法。
协同滤波算法一个典型类型是使用矩阵分解,一个(低秩矩阵近似](https://en.wikipedia.org/wiki/Low_rank_approximation)的方法。
协同滤波方法是基于内存的分类和基于协同滤波的模型。基于内存方法的一个著名示例是基于用户的算法,基于模型的算法是 Kernel-Mapping Recommender。
协同滤波常用于推荐系统。这种技术是为了补充user-item关联矩阵的缺失的入口。spark.mllib目前支持基于模型的协同滤波,用于预测缺失的由一小部分潜在因素描述的用户和产品关系的入口。sparkmllib使用ALS(alternating least squares)(交替最小二乘法)算法来学习这些潜在的因素。spark.mllib的实现拥有下列参数:
jiqi
- numBlocks 是用来并行化计算的块得数量(设置-1自动配置)
- rank 是特点数量(通常被引用作为潜在因子数量)
- iterations 是ALS 算法要运行的迭代次数
- lambda 明确了正则化(regularization)参数
- implicitPrefs 明确是否使用ALS变量的精确的反馈或者使用隐式的反馈数据
- alpha 是可应用的参数暗示用于控制在偏好观察中基线自信ALS的反馈变量
显式(Explicit) vs. 隐式反馈(implicit feedback)
基于矩阵分解的协同滤波标准方法user-item矩阵作为具体的偏好,例如,用户给电影的评分。
通常现实世界中使用仅有隐式反馈的样例(视图,点击,购买,喜好,分享等). spark.mllib处理这种数据的方法采纳于隐式数据集的协同滤波(Collaborative Filtering for Implicit Feddback Datasets). 必要的,替代直接试图使用评分矩阵,这种方法将数据看做对用户动作(点击数,用户看电影花费的累计)观察的强度表示.这些数字关系到观察用户偏好的信心水平,而不是对item项显式的评分。这种模型试图找到潜在因子的能够用来预测用户对某个item的预期偏好.
正则参数的规模
自v1.1版本,我们在更新用户因子方面使用规模化(scale)正则参数lambda来用由用户生成的评分解决每个最小平方问题,或者更新产品因子的评分。这种方法叫做"ALS-WR"在 “Netflix Prize 的大规模协同滤波”这一章讨论过.它使lamda更少的依赖数据集的规模,因此我们可以使用从样本集中学得的最好参数到全部数据集,并且期待相似的性能。
示例
下列实例,载入评分数据。每一行由一个用