推荐算法小结

推荐算法

输入:与用户相关的包含众多特征(feature)的数据:

用户的注册信息(职业、年龄、性别等 显信息),行为信息(使用功能、有效使用时长等 隐信息)。

输出:推荐给用户的功能列表(根据得分高低排序)

函数传统算法机器学习算法(Machine Learning)、深度学习算法(Deep Learning)

传统算法:

1. 基于流行度的推荐算法

基于流行度的算法非常简单粗暴,类似于各大新闻、微博热榜等,根据VV、UV、日均PV或分享率等数据来按某种热度(加权)排序来推荐给用户。

访问次数(VV):记录1天内所有访客访问了该网站多少次,相同的访客有可能多次访问该网站,且访问的次数累加。

独立访客(UV):记录1天内所有访客访问了该网站多少次,虽然相同访客能多次访问网站,但只计算为1个独立访客。

PV访问量(Page View):即页面访问量,每打开一次页面或者刷新一次页面,PV值+1。

优点:该算法简单,适用于刚注册的新用户

缺点:无法针对用户提供个性化的推荐

改进:基于该算法可做一些优化,例如加入用户分群的流行度进行排序,通过把热榜上的体育内容优先推荐给体育迷,把政要热文推给热爱谈论政治的用户。

2、基于协同过滤的推荐算法

基于用户的协同过滤推荐算法(UserCF):针对目标用户(A),先通过兴趣、爱好或行为习惯找到与他相似的“其他用户”(BCD...),然后把BCD...喜欢的并且A没有浏览过的物品或功能推给A。

基于物品的协同过滤推荐算法(ItemCF):例如由于我之前看过张艺谋导演的《英雄》这部电影,会给我推荐《红高粱》、《归来》等同导演电影。

2.1 UserCF 原理如下:

1)分析各个用户对物品的评价,通过浏览记录、购买记录等得到用户的隐性评分;

2)根据用户对物品的隐性评分计算得到所有用户之间的相似度;

3)选出与目标用户最相似的K个用户;

4)将这K个用户隐性评分最高并且目标用户又没有浏览过的物品推荐给目标用户。

优点:

基于用户的协同过滤推荐算法是给目标用户推荐那些和他有共同兴趣的用户喜欢的物品,所以该算法推荐较为社会化,即推荐的物品是与用户兴趣一致的那个群体中的热门物品;

适于物品比用户多、物品时效性较强的情形,否则计算慢;

能实现跨领域、惊喜度高的结果。

缺点:

在很多时候,很多用户两两之间的共同评分仅有几个,也即用户之间的重合度并不高,同时仅有的共同打了分的物品,往往是一些很常见的物品,如票房大片、生活必需品;

用户之间的距离可能变得很快,这种离线算法难以瞬间更新推荐结果;   

推荐结果的个性化较弱、较宽泛。

改进:

两个用户对流行物品的有相似兴趣,丝毫不能说明他们有相似的兴趣,此时要增加惩罚力度;

如果两个用户同时喜欢了相同的物品,那么可以给这两个用户更高的相似度;

在描述邻居用户的偏好时,给其最近喜欢的物品较高权重;

把类似地域用户的行为作为推荐的主要依据。

2.2 ItemCF 原理如下:

1)分析各个用户对物品的浏览记录;

2)依据浏览记录分析得出所有物品之间的相似度;

3)对于目标用户评价高的物品,找出与之相似度最高的K个物品;

4)将这K个物品中目标用户没有浏览过的物品推荐给目标用户

优点:

基于物品的协同过滤推荐算法则是为目标用户推荐那些和他之前喜欢的物品类似的物品,所以基于物品的协同过滤推荐算法的推荐较为个性,因为推荐的物品一般都满足目标用户的独特兴趣。

物品之间的距离可能是根据成百上千万的用户的隐性评分计算得出,往往能在一段时间内保持稳定。因此,这种算法可以预先计算距离,其在线部分能更快地生产推荐列表。

应用最广泛,尤其以电商行业为典型。

适于用户多、物品少的情形,否则计算慢

推荐精度高,更具个性化

倾向于推荐同类商品

缺点:

不同领域的最热门物品之间经常具有较高的相似度。比如,基于本算法,我们可能会给喜欢听许嵩歌曲的同学推荐汪峰的歌曲,也就是推荐不同领域的畅销作品,这样的推荐结果可能并不是我们想要的。

在物品冷启动、数据稀疏时效果不佳

推荐的多样性不足,形成信息闭环

改进:

如果是热门物品,很多人都喜欢,就会接近1,就会造成很多物品都和热门物品相似,此时要增加惩罚力度;

活跃用户对物品相似度的贡献小于不活跃的用户;

同一个用户在间隔很短的时间内喜欢的两件商品之间,可以给予更高的相似度;

在描述目标用户偏好时,给其最近喜欢的商品较高权重;

同一个用户在同一个地域内喜欢的两件商品之间,可以给予更高的相似度。

(相似度计算:余弦相似度、Jaccard系数、皮尔森相关系数等)

机器学习算法(Machine Learning)

常见经典 ML 分类算法:

逻辑回归(Logistics Regression)

支持向量机(SVM)

随机森林(Random Forest)

提升类算法(Boosting):Adaboost、GBDT、XGboost

一般处理流程:数据处理 -> 特征工程 -> 模型选择 -> 交叉验证 -> 模型选择与模型融合

Kaggle 泰坦你可预测分析

特征工程

特征清洗:剔除不可信样本,缺省值极多的字段不予考虑

特征预处理:单个特征(归一化,离散化,缺失值补全,数据变换),多个特征(PCA/LDA降维,特征选择)

使用工具:pandas(python开源库)

模型选择与模型融合:根据交叉验证得分选择前几名模型,然后进行模型融合(Bagging、Boosting、Stacking)


深度学习算法(Deeping Learning)

DL 优势:ML 中特征工程是十分重要并且要根据行业经验确定,DL 可以自己从数据中学习特征。DL 能自动对输入的低阶特征进行组合、变换,得到高阶特征。对于公司产品应用领域来说,用户的注册信息(职业、年龄、性别等 显信息),行为信息(使用功能、有效使用时长等 隐信息)。这些就可以作为低阶特征输入。

RNN系列(处理文本数据)

CNN系列(处理图像数据)

DNN(处理一般性分类)

你可能感兴趣的:(推荐算法小结)