Java 人工智能 - Apache Mahout - 推荐引擎
基于内容的过滤
使用项目属性寻找带有相似属性的项目
基于协同过滤
根据用户的评分或者其他用户的行为
基于拥有类似行为的用户喜好与购买的物品进行推荐
推荐引擎会观察用户的行为
推荐引擎4个输入
项目的信息
用户资料 年龄范围 性别 位置 朋友
用户交互 比如评级 浏览 标记 比较 保存 电邮
项目的上下文 比如项目的分类 地理位置
推荐引擎组合回答
购买 观看 浏览 收藏过这个项目的用户还买了 看了 浏览了 收藏了……
与这个项目类似的项目
你可能认识的其他用户
和你类似的其他用户
计算相似度
协同过滤
不依赖于项目内容
它基于的假设是 人们过去认可的将来也会认可 他们喜欢与过去喜欢的项目以及相似的项目
缺点 冷启动
也就是说 如果想创建一个精确的协同过滤系统 算法往往需要先有大量的用户评分
初创的项目不会使用协同过滤
有了一定量的数据积累之后才会使用
内容过滤
建立在项目的描述与用户偏好资料之上
使用属性描述项目并找出相似项目
需要使用一个距离测度
比如余弦距离或者皮尔逊相关系数
测量项目之间的距离
然后将用户的资料输入到方程式当中
项目中的属性重要程度按照权重排序
用户可以反馈喜欢项目中的某一个属性
比如一个电商项目 基于内容过滤技术 使用了 400 多个属性创建商品
一个用户通过特定的属性选中了一件商品
我们开发人员提供反馈功能
用户通过反馈属性可以突出这件商品的重要属性
只需要很少的用户反馈信息
能有效避免冷启动问题
混合方法
Netflix 使用协同过滤 分析相似用户的搜索与观看模式
使用基于内容的过滤向用户推荐高评分影片
混合技术
加权混合 切换混合 分区混合 特征组合 特征扩充 级联混合
分层混合
Mahout 是一个可扩展的机器学习库
maven 依赖
<dependencies>
<dependency>
<groupId>org.apache.mahout</groupId>
<artifactId>mahout-mr</artifactId>
<version>0.10.0</version>
</dependency>
</dependencies>