数据挖掘之推荐算法入门(阿里大数据竞赛参赛经历)蔡珉星厦门大学数据库实验室2013级硕士研究生指导老师:林子雨什么是推荐系统帮助用户从大量信息中找到自己感兴趣的信息。比如你今天想下载一部电影看看,但当你打开某个下载网站,面对100年来发行的数不胜数的电影,你会手足无措,不知道该看哪一部。推荐系统可以根据你以往的观影记录,为你推荐相关的电影。推荐可以两方面入手:•基于内容的推荐-相关导演、演员的其他作品;•基于协同过滤的推荐-找到与自己历史兴趣相同的用户群,推荐该用户群喜欢的电影。什么是推荐系统什么是推荐系统电影应用(豆瓣电影):《盗梦空间》的推荐推荐构成:导演、演员其他作品;同类型电影。什么是推荐系统音乐应用(虾米音乐):推荐构成:喜欢的歌曲所属专辑的其他曲目;风格类似的曲目。什么是推荐系统电商应用(京东商城):推荐构成:协同过滤、属性类似的商品。《推荐系统实践》的推荐什么是推荐系统推荐系统的本质通过一定的方式将用户与物品联系起来。Part2阿里巴巴大数据竞赛阿里巴巴大数据竞赛7000+参赛队伍,凸显了如今大数据方向的热门赛题介绍在天猫,每天都会有数千万的用户通过品牌发现自己喜欢的商品,品牌是联接消费者与商品最重要的纽带。本届赛题的任务就是根据用户4个月在天猫的行为日志,建立用户的品牌偏好,并预测他们在将来一个月内对品牌下商品的购买行为。数据:行为日志:用户id、品牌id、用户对品牌的行为、行为时间。用户行为:点击、购买、加入购物车、收藏。阿里巴巴大数据竞赛比赛形式设计一个推荐算法,基于算法和已有数据得出第五个月用户可能购买的品牌。•训练集:用于建立模型;•验证集:用于评估模型。例如可以用1-2月的数据作为训练集,3月的数据作为验证集,以此来检验算法的效果。然后再用3-4月的数据作为训练集,得出推荐结果。最终提交推荐结果,由系统给出分数。评估指标预测的品牌准确率越高越好,也希望覆盖的用户和品牌越多越好。阿里巴巴大数据竞赛参赛成绩:第60名比赛时间较长,持续4个月,比较耗时间。后劲不足,没有达到预期的成绩。通过竞赛,对推荐算法的入门有了深入的理解与实践。阿里巴巴大数据竞赛Part3推荐算法入门阿里大数据竞赛提供的数据:•行为日志:用户id、品牌id、用户对品牌的行为、行为时间。•用户行为:点击、购买、加入购物车、收藏。对数据的处理:提取特征特征:推荐算法所考虑的因素,如•用户过去一个月对品牌的点击次数•用户过去一个月对品牌的购买次数•品牌过去一个月的总销量......推荐算法原始数据处理后的特征数据算法1:简单的推测规律•点击次数多,购买可能性较大;•加入购物车、收藏,购买可能性较大;•最近有浏览过的品牌,购买可能性较大;......推荐算法点击次数与是否购买的关系算法1:简单的推测规律首先将数据转化为特征值:•点击次数click•加入购物车is_cart•收藏is_fav•几天前有浏览过days实现1:直接利用规律if(this.days=2&&this.click=10)thenrecommend(this);if(this.is_cart&&days=3)thenrecommend(this);....推荐算法简单粗暴且有效,只要规律找的好,效果还是可以的算法1:简单的推测规律•点击次数click•加入购物车is_cart•收藏is_fav•几天前有浏览过days实现2:设定权值,并计算分值(通过验证集找到较优权值)W=w1*click+w2*is_cart+w3*is_fav+w4*1/days例如得到一个较有权值:w1=0.1,w2=0.2,w3=0.2,w4=0.5推荐算法简单有效,实现方便,有一定效果用户品牌交互数据得分1133click=2,is_cart=1,is_fav=0,days=11.42133click=10,is_cart=0,is_fav=0,days=51.1√算法2:逻辑回归(Logisticregression)Logisticregression(逻辑回归)是当前业界比较常用的机器学习方法,用于估计某事件的可能性。如某用户购买某商品的可能性、广告被某用户点击的可能性等。推荐算法公式定义将可能性限定在0和1之间算法2:逻辑回归(Logisticregression)组成1:回归回归是对已知公式的未知参数进行估计。如已知公式是y=a*x+b,未知参数是a和b。我们现在有很多真实的(x,y)数据(训练样本),回归就是利用这些数据对a和b的取值去自动估计。推荐算法算法2:逻辑回归(Logisticregression)组成2:线性回归如鞋子定价与鞋子销量的问题。y=a*x+b,x是价钱,y是销售量。假设它们满足线性关系,线性回归即根据往年数据找出最佳的a,b取值,使y=a*x+b在所有样本集上误差最小。推荐算法线性回归示例算法2:逻辑回归(Logisticregression)组成2:线性回归如鞋子定价与鞋子销量的问题。y=a*x+b,x是价钱,y是销售量。假设它们满足线性关系,线性回归即根据往年数据找出最佳的a,b取值,使y=a*x+b在所有样本集上误差最小。一元变量关系比较直观,但若是多元就难以直观的看出来了。比如说除了鞋子的价格外,鞋子的质量,广告的投入,店铺所在街区的人流量都会影响销量,我们想得到这样的公式:sell=a*x+b*y+c*z+d*γ+e。这个时候画图就画不出来了,规律也十分难找,这时就得交给线性回归程序去完成。推荐算法算法2:逻辑回归(Logisticregression)组成3:Logsitic方程上面提到的sell计算出来是一个数值,但我们需要的是一个[0,1],类似概率的值,于是引入了Logistic方程,来做归一化。所以逻辑回归就是一个被Logistic方程归一化后的线性回归。推荐算法线性回归逻辑回归算法2:逻辑回归(Logisticregression)实现:使用算法库R语言、Python等都有逻辑回归的算法库,使用方便。最重要的还是要提取相关特征,逻辑回归的效果直接取决于特征的选取(当然,追求更好的效果就需要去优化算法的实现)。推荐算法逻辑回归代码示例算法3:协同过滤(CollaborativeFiltering)基于用户的协同过滤算法是推荐系统中最古老的算法。可以不夸张地说,这个算法的诞生标志了推荐系统的诞生。在个性化推荐系统中,当用户A需要个性化推荐时,可以先找到和他有相似兴趣的其他用户,然后把那些相似兴趣用户喜欢的、而用户A没有听说过的物品推荐给A。这种方法称为基于用户的协同过滤算法。基于用户的协同过滤算法主要包括两个步骤。1.找到和目标用户兴趣相似的用户集合。2.将这个集合中用户喜欢的,且目标用户没有听说过的物品推荐给目标用户。相对应的,还有基于物品的协同过滤算法,比如给喜欢《射雕英雄传》的用户推荐《天龙八部》,因为这两部作品都是武侠小说,且作者都是金庸。推荐算法算法3:协同过滤(CollaborativeFiltering)协同过滤算法的核心是计算相似度,以基于物品的协同过滤为例:推荐算法•左边每一行代表一个用户感兴趣的物品集合•中间是某用户感兴趣物品的相似矩阵•右侧是所有用户感兴趣物品相似矩阵相加的结果•最后进行归一化就可得到一个[0,1]的物品相似度矩阵算法3:协同过滤(CollaborativeFiltering)推荐算法基于用户的协同过滤(UserCF)(用户A和用户C都喜欢物品A、C)基于物品的协同过滤(ItemCF)(喜欢物品A的人也喜欢物品C)基于物品的协同过滤推荐示例给用户推荐《算法导论》,是因为这本书和《C++Primer中文版》和《编程之美》都相似,相似度分别为0.4和0.5。而用户对《C++Primer中文版》的兴趣度是1.3,对《编程之美》的兴趣度是0.9,那么用户对《算法导论》的兴趣度就是1.3×0.4+0.9×0.5=0.97。逻辑回归与协同过滤的比较最主要的一个区别是应用场景不同:逻辑回归针对的是已有交互的物品,而协同过滤则主要针对没有交互过的物品。如购物网站的推荐系统,•逻辑回归可以推荐给用户,其浏览过且较有可能购买的商品;•协同过滤则可以推荐给用户,其未浏览过但可能感兴趣的商品。推荐算法亚马逊的图书推荐主要使用了协同过滤。其他推荐算法:•随机森林(Logisticregression)•支持向量机SVM•神经网络•SlopeOne......推荐算法总结:•介绍了阿里巴巴大数据竞赛的基本情况;•介绍了两类比较典型的推荐算法:逻辑回归和协同过滤;•推荐算法的选择和具体应用场景有很大关系,一般也涉及多种推荐算法的组合使用。•推荐算法涉及较多的数学知识,今天只是做了一个简单的介绍,可深入了解的东西还有很多。推荐算法34遇到的问题Thanks.