推荐系统的定义及现状推荐系统的定义及现状推荐系统的定义及现状
- 推荐系统将会占据每一家的公司的
命脉
位置 - 推荐系统将会成为未来商家必经之路
- 推荐系统将会改变咱们的生活
Artificial intelligence (Al, also machine intelligence, MI) is intelligence exhibited by machines, rather than humans or other animals (natural intelligence, Nl). In computerscience, the field of Al research defines itself as the study of “intelligent agents”: any device that perceives its environment and takes actions that maximize its chance of success at some goal.[1] Colloquially, the term Martiician niengerith athar himana machine mimics " cognitive" functions that humans associate with other human minds, such as “learning” and "problem solving” .
从机器角度执行具体任务的目标最大化过程就是人工智能的表现。
推荐系统是指通过人工和非人工向用户建议购买/浏览物品的有规律
行动。
IMDB(数据集)
lnternet Movie Database【媒体库】
- 440万个影片信息
- 包含电影、综艺、电视剧等节目详细信息
- 电影数据挖掘从业者必爬的网站
lnternet Movie Database【用户资源】
- 7千6百万个注册用户
- 专业电影看客比去的门户网站
- 通过增值服务盈利
IMDB 打分规则
w = weighted rating
R= average for the movie as a number from 1 to 10 (mean) = (Rating)
v = number of votes for the movie = (votes)
m = minimum votes required to be listed in the Top 250(currently25,000)
C = the mean vote across the whole report (currently 7.0)
IMDB的优势
- 最悠久的历史【27年】
- 最忠实的用户群体
- 最完整的电影信息
Netflix Algorithms
- Personalized Video Ranker
- Top-N Video Ranker
- Trending Now
- Continue Watching
- Video-Video Similarity
- Page Generation: Row Selection and Ranking
- Evidence
- Search
个性化推荐算法
如果能获得上诉所有的属性,用最简单的推荐算法即可。
数据衍生的推荐算法
- 协同过滤推荐算法
- 基于内容的推荐算法
- 混合推荐算法
- 流行度推荐算法
为推荐系统选择正确的推荐算法是非常重要的决定。
目前为止,已经有许多推荐算法可供选择,但为你需要解决的特定问题选择一种特定的算法仍然很困难。
每一种推荐算法都有其优点和缺点,当然也有其限制条件,在作出决定之前,你必须要一一考量。
在实践中,你可能会测试几种算法,以发现哪一种最适合你的用户,测试中你也会直观地发现它们是什么以及它们的工作原理。
基于内存的协同过滤(距离)基于内存的协同过滤(距离)基于内存的协同过滤(距离)
相似统计的方法得到具有相似兴趣爱好的邻居用户
UCF
ICF
距离算法
欧几里得距离(Euclidean Distance)以及欧式距离的标准化:欧几里得度量(euclidean metric)(也称欧氏距离)是一个通常采用的距离定义,指在m维空间中两个点之间的真实距离,或者向量的自然长度(即该点到原点的距离)。在二维和三维空间中的欧氏距离就是两点之间的实际距离。
马哈拉诺比斯距离( Mahalanobis Distance)
曼哈顿距离(Manhattan Distance)
切比雪夫距离(Chebyshev Distance)
明可夫斯基距离( Minkowski Distance)
海明距离((Hamming distance)
用人工的方法进行度量
基于邻域的协同过滤(相似度)基于邻域的协同过滤(相似度)基于邻域的协同过滤(相似度)
余弦相似度(Cosine Similarity)以及调整余弦相似度(Adjusted Cosine Similarity)
皮尔森相关系数(Pearson Correlation Coefficient)
Jaccard相似系数(Jaccard Coefficient)
Tanimoto系数(广义Jaccard相似系数)
对数似然相似度/对数似然相似率
互信息/信息增益,相对嫡/KL散度
信息检索–词频-逆文档频率(TF-IDF)
词对相似度–点间互信息
基于模型的协同过滤基于模型的协同过滤基于模型的协同过滤
先用历史数据得到一个模型,再用此模型进行预测。基于模型的推荐广泛使用的技术包括神经网络等学习技术、潜在语义检索(latent seman2tic indexing)和贝叶斯网络( bayesian networks).
用关联算法做协同过滤
用聚类算法做协同过滤
用分类算法做协同过滤
用回归算法做协同过滤
用矩阵分解做协同过滤
用神经网络做协同过滤
用图模型做协同过滤
用隐语义模型做协同过滤
聚类
K-Means
K-Means算法是无监督的聚类算法,它实现起来比较简单,聚类效果也不错,因此应用很广泛。K-Means算法有大量的变体,本文就从最传统的K-Means算法研起,仕具垫础上讲述K-Means的优化变体方法。包括初始化优化K-Means++,距离计算优化elkan K-Means算法和大数据情况下的优化Mini Batch K-Means算法。
BIRCH
BIRCH的全称是利用层次方法的平衡迭代规约和聚类(Balanced Iterative Reducing andClustering Using Hierarchies),它是用层次方法来聚类和规约数据
用分类算法做协同过滤用分类算法做协同过滤用分类算法做协同过滤
逻辑回归原理(用户排序)
如果我们根据用户评分的高低,将分数分成几段的话,则这个问题变成分类问题。比如最直接的,设置一份评分阈值,评分高于阈值的就是推荐,评分低于阈值就是不推荐,我们将问题变成了一个二分类问题。虽然分类问题的算法多如牛毛,但是目前使用最广泛的是逻辑回归
矩阵分解
神经网络
协同过滤优点
协同过滤缺点
scikit-Learn
Machine Learning in Python
源于Google竞赛算法
- Simple and efficient tools for data mining and data analysis
- Accessible to everybody, and reusable in yarious contexts)
- Built on NumPy,SciPy, and matplotlib
- Open source, commercially usable - BSD license
类目
- Supervised learning
- Unsupervised learning
- Model selection and evaluation
- Dataset transformations
- Dataset loading utilities
- Strategies to scale computationally: bigger data
- Computational Performance
基础规则推荐算法
- k-means
- mini-batch k-means
- Birch
- 相似度计算
数据集:MovieLens
基于划分聚类算法(partition clustering)
基于层次聚类算法:
基于密度聚类算法:
K-means
1.随机选择k个初始质心;
2.如果没有满足聚类算法终止条件,则继续执行步骤3,否则转步骤5;
3.计算每个非质心点p到k个质心的欧几里德距离,将p指派给距离最近的质心;
4.根据上一步的k个质心及其对应的非质心点集,重新计算新的质心点,然后转步骤2;
5.输出聚类结果,算法可以执行多次,使用散点图比较不同的聚类结果。
调优方向
关联规则算法关联规则算法关联规则算法
1.Apriori
Apriori算法是常用的用于挖掘出数据关联规则的算法,它用来找出数据值中频繁出现的数据集合
,找出这些集合的模式有助于我们做一些决策。比如在常见的超市购物数据集,或者电商的网购数据集中,如果我们找到了频繁出现的数据集,那么对于超市,我们可以优化产品的位置摆放,对于电商,我们可以优化商品所在的仓库位置,达到节约成本,增加经济效益的目的。
“啤酒与尿布”的故事
1993年美国学者Agrawal提出通过分析购物篮中的商品集合,从而找出商品之间关联关系的关联算法
,并根据商品之间的关系,找出客户的购买行为,Agrawal从数学及计算机算法角度提出了商品关联关系的计算方法——Apriori算法。
沃尔玛从上个世纪90年代尝试将Aprior算法引入到POS机数据分析中,并获得了成功,于是产生了“啤酒与尿布”的故事。
如何寻找?
在历史购物记录中,一些商品总是在一起购买。但人看上去不是那么的直观的,而是隐蔽的。
让计算机做这事,设计算法让计算机自动去找,我到这样的模式(规律)。
目标:寻找那些总是一起出现商品。
mahout实战一>机器学习实战《mahout实战》与《机器学习实战》一起该买的记录数占所有商品记录总数的比例一一支持度(整体)买了《mahout实战》与《机器学习实战》一起该买的记录数占所有购买《mahout实战》记录数的比例一一置信度(局部)需要达到一定的阈值支持度、置信度越大,商品出现一起购买的次数就越多,可信度就越大。支持度:在所有的商品记录中有2%量是购买《mahout实战》与《机器学习实战》
置信度:买《mahout实战》的顾客中有60%的顾客购买了《机器学习实战》作用:找到商品购买记录中反复一起出现的商品,帮能助营销人员做更好的策略,帮助顾客方便购买。策略:
1、同时购买的商品放一起
2、同时购买的商品放两端支持度、置信度转化为数学语言进行计算:
A表示《mahout实战》
B表示《机器学习实战》support(A->B)= P(AB) (《mahout实战》和《机器学习实战》一起买占总的购买记录的比例)
confidence(A->B)=P(A|B) (购买了《mahout实战》后,买《机器学习实战》占的比例)项集:项的集合称为项集,即商品的组合。
k项集: k件商品的组合,不关心商品件数,仅商品的种类。
项集频率:商品的购买记录数,简称为项集频率,支持度计数。
注意,定义项集的支持度有时称为相对支持度,而出现的频率称为绝对支持度。
频繁项集:如果项集的相对支持度满足给定的最小支持度阈值,则该项集是频繁项集.
强关联规则:满足给定支持度和置信度阈值的关联规则明确问题
1、要找总是在一起出现的商品组合—
2、提出衡量标准支持度、置信度(达到一定的阀值)
3、给出支持度、置信度直观计算方法
4、在计算方法中起决定因素的是频繁项集
5、由频繁项集轻松找到强关联规则找关联规则--------->找频繁项集步骤:
1.找出所有的频繁项集;这个项集出现的次数至少与要求的最小计数一样。如在100次购买记录中,至少一起出2.由频繁项集产生强关联规则;这些关联规则满足最小支持度与最小置信度。
2.FPGROWTH
FpGrowth算法通过构造一个树结构来压缩数据记录
,使得挖掘频繁项集只需要扫描两次数据记录,而且该算法不需要生成候选集合,所以效率会比较高