机器学习学习笔记(2) -- 推荐算法

2021-04-13 14:33:00 浏览数 (1)

1、推荐系统涉及的知识

  电子商务业务知识、网站架构运营、机器学习算法、数学建模、大数据平台…

2、推荐系统涉及的常见算法

  聚类、关联模式挖掘、大规模矩阵运算、文本挖掘、复杂网络和图论计算等…

3、推荐系统分类

Ⅰ、基于应用领域分类

代码语言:javascript复制
	电子商务推荐系统、社交好友推荐系统、搜索引擎推荐系统、信息内容推荐系统......

Ⅱ、基于设计思想分类

代码语言:javascript复制
	基于协同过滤的推荐系统、基于内容的推荐系统、基于知识的推荐系统、混合推荐系统......

Ⅲ、基于使用何种数据分类

代码语言:javascript复制
	基于用户行为的推荐系统、基于用户标签的推荐系统、基于社交网络数据的推荐系统、基于上下文信息的推荐系统......

4、实现协同过滤的步骤

代码语言:javascript复制
	①收集用户偏好数据,如评分、投票、转发、评论、点击流等数据
	②找到相似用户或物品
	③计算推荐结果

  基于用户行为数据设计的推荐算法一般称为协同过滤算法,实现方法有基于邻域、基于隐语义模型、基于图的随机游走算法等,目前使用最多的是基于邻域的推荐算法,基于邻域的推荐算法又分为基于物品推荐算法和基于用户推荐算法。

  实现基于邻域的算法思路举例:

代码语言:javascript复制
	推荐数据准备:用户id、物品id、偏好值  --- 把数据看成空间中的向量
	(1)建立物品的同现矩阵
	(2)建立用户对物品的评分矩阵
	(3)矩阵计算推荐结果 --- 推荐结果 = 同现矩阵*评分矩阵

  相似度计算:皮尔逊相关系数、欧式距离、同现相似度、余弦夹角…

  邻域的圈定:固定数量的邻居、基于相似度门槛的邻居…

  考虑因素:推荐算法选型、数据量、算法检验、结果解读…

  算法评估:查准率、召回率(查全率)…

5、Mahout – Hadoop的子项目

  Mahout中推荐算法支持单机算法和分布式算法两种,Mohout的推荐系统引擎分为5个模块:

代码语言:javascript复制
	数据模型  --  DataModel
	相似度计算  --  Similanity
	近邻算法  -- Neighborhood
	推荐算法  --  Recommender
	算法评分器 

6、数据挖掘 – 关联规则挖掘

代码语言:javascript复制
	挖掘数据集
	频繁模式
	挖掘目标
	关联规则
	支持度
	置信度...

Apriori算法:

代码语言:javascript复制
	①找出所有频繁项集
	②由频繁项集产生强关联规则

提高Apriori算法的效率:

代码语言:javascript复制
基于散列的算法
基于FP tree的算法

7、基于内容的推荐算法

  基于内容的推荐算法常见的有根据商品属性和分类进行推荐、根据用户标签进行推荐、基于隐语义的推荐算法等。

  基于内容的推荐算法原理是用户喜欢和关注过的item在内容上类似的item,可以通过计算item相似度进行推荐。

代码语言:javascript复制
	物品i与物品j的相似度公式为: 
	
			Wij = N(i)∩N(j) / √ |N(i)|*|N(j)|	
	
	N(i)和N(j)分别为喜欢物品i和j的人数,N(i)∩N(j)则是同时喜欢物品i和j的人数;

8、基于模型的推荐算法

  通过预先设定的计算模型来实现推荐,常用于实时推荐;

9、ALS矩阵分解模型

  可以将打分理解为相似度,打分矩阵A(mn)就可以由用户喜好特征矩阵U(mk)和产品特征矩阵V(n*k)的乘积UV来近似表达,这种方式成为概率矩阵分解算法(PMF)。

  交替最小二乘法是PMF在数值计算方面的应用,为了使低秩矩阵U和V的乘积更加接近A,需要4最小化平方误差损失函数,优化方法有通过交叉最小二乘法或随机梯度下降法(SGD)求出最小误差。

10、关联规则之FPGrowth算法

  使用场景 – 用于发现频繁项集,比如啤酒和尿布;

  基本概念:

代码语言:javascript复制
	T*:代表一次购物
	项集:项的集合
	支持度:项出现的次数或频率

0 人点赞