今天看了一眼,发现前面两篇界面实在太粗糙,内容太肤浅,自己都看不下去。实在对不起,刚开始写博客,有点当随手的笔记用。以后写东西多用用心,对人对己都有好处,毕竟是资源。

推荐算法可以用于电子商务等诸多领域。那么首先来解释一下什么是推荐算法。

比如对当今风靡的网购来说,顾客CutomerA购买了物品ItemA两件,同时购买了物品ItemB和ItemC各一件,顾客CustomerB也购买了物品ItemB和ItemC各两件,那么阿里巴巴通过数据挖掘就可以发现顾客CustomerA和CustomerB在物品ItemB和ItemA上的共性需求,那么CustomerB极有可能也会对CustomerA购买了两件的ItemA感兴趣,甚至这就是他即将想要购买的,于是淘宝就会将ItemA的系列产品推荐给顾客CustomerA,希望满足CustomerA的期待,让其方便快捷的购买商品,达到顾客商家双赢的商业目的。

同样的道理,在警务系统中,警员也可以通过政府独有的巨大数据库对罪犯A最近半年活动的省市地区、乘坐交通工具的路线及班次、住宿的宾馆旅店、银行账户的金融流动信息、电话电脑网络的通信等等系列数据进行有效的总结和分析,将无序无结构的数据处理成有效有结构的数据,从而就可以得到一些特征information,那么我们就可以用这些information为从参考对相关嫌疑人进行匹配搜索。就像上一个例子中一样,具有相同爱好倾向习惯的人更有可能在某些未知的方面也是相同的,那么就将这些人有系统推荐给警务人员,用来缩小嫌疑犯的范围,或者用来寻找可能存在的尚且未知的嫌疑犯。

通过上面的例子,显然,通过对大数据的搜索从而找到数据之间的共性和联系,从而对一些未知的事情给予帮助以及判断,就是推荐算法的目的。并且我们发现,在寻找推荐的时候,数据越多,得到的匹配应该越准确,即精度越高。这就是Mahout的推荐算法在这个大数据时代走红的必然原因了,考虑到运用到云平台上的广阔前景,推荐算法已经成为了十分重要又基础的技术。目前,协同过滤推荐算法是应用最为成功的一种。目前主要有两类协同过滤算法:基于用户的协同过滤算法 & 基于项目的协同过滤算法。

1、基于用户的协同过滤算法

基于用户的协同过滤基于这样一个假设,即如果用户对一些项目的评分比较相似,则他们对其他项目的评分也比较相似。算法根据目标用户最近的邻居(最相似的若干用户)对某个项目的评分来逼近目标用户对该相同项目的评分。

即:在CustomerAll集合(CustomerAll = { CustomerA,CustomerB,... ,CustomerN })中用所有的数据库中数据匹配的方法搜索出一个CustomerA的数据集DataSetA(DataSetA = {Data1,Data2,... ,DataN})最相似,即匹配度最高的集合CustomerGet,其中的Customer项可能不唯一,然后就可以根据这个CustomerGet中的各个Customeri对某一项Datai的评分来推测出,其实是预测出CustomerA对该项CustomerA.Datai的评分。

2、基于项目的协同过滤算法

基于项目的协同过滤算法认为用户对不同项目的评分存在相似性,当需求估计用户对某个项目的评分时,可以使用用户对该项目的若干相似项目的评分进行评分的估值。

即:在Customer的数据集DataSet(DataSetA = {Data1,Data2,... ,DataN})中,每一个Datai都存在相应的Scorei,则当用户需要寻找对某个DataSet中项目的Datai.Scorei的时候,就寻找出与Datai各方面数据最相似的集合DataGet,DataGet中的项目不唯一,可能有Datax,Datay等等,从而通过对Datax.Scorex,Datay.Scorey等评分来估测出Datai.Scorei的评分。