mahout 读感(初次了解).doc_第1页
mahout 读感(初次了解).doc_第2页
mahout 读感(初次了解).doc_第3页
mahout 读感(初次了解).doc_第4页
mahout 读感(初次了解).doc_第5页
已阅读5页,还剩1页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

mahout 读感(初次了解) Mahout-Remended一开始1.数据文件FileDataModel:只能访问以“,”分割的平文件,可以是压缩的。 类似cvs格式,不适用非常大的文件,程序会忽略空行以及以#开头的。 2.用户相似度两个人相似UserSimilarity:根据他们的洗好来,表示两个用户的相似度的接口,返回值为double类型,在-1到1之间,1表示完全相识。 PearsonCorrelationSimilarity两个人喜好相似度,采用算法:sumX2:sum ofthe squareof allXs preferencevalues sumY2:sum ofthe squareof allYs preferencevalues sumXY:sum ofthe productof Xand Ys preferencevalue forall itemsfor whichboth Xand Yexpress apreference公式sumXY/sqrt(sumX2*sumY2)相似邻居UserNeighborhood:获取一组和给定的用户相似的邻居。 NearestNUserNeighborhood获取N个最近的邻居(应该是最相似的)ThresholdUserNeighborhood获取相似度大于等于某个数值界限的所有邻居,threshold值在-1到1之间3.商品条目的相似度ItemSimilarity接口4.推荐接口Remender给用户的推荐接口,一般给出推荐Item List。 GenericItemBasedRemender:基于商品条目相似度来推荐GenericUserBasedRemender基于用户相似度来推荐ItemAverageRemender没考虑用户要素,取当前商品的所有已知偏好的平均值ItemUserAverageRemender根据用户偏好与平均值的差来校验,对某个Item的偏好。 RandomRemender随机推荐,适用于新型产品或者标准产品5.偏好(Preference)如何获取偏好?在互联网中,最能体现的就是点击率。 例子import org.apache.mahout.cf.taste.impl.model.file.*;import org.apache.mahout.cf.taste.impl.neighborhood.*;import org.apache.mahout.cf.taste.impl.remender.*;import org.apache.mahout.cf.taste.impl.similarity.*;import org.apache.mahout.cf.taste.model.*;import org.apache.mahout.cf.taste.neighborhood.*;import org.apache.mahout.cf.taste.remender.*;import org.apache.mahout.cf.taste.similarity.*;import java.io.*;import java.util.*;class RemenderIntroprivate RemenderIntro()public staticvoid main(Stringargs)throws ExceptionDataModel model=new FileDataModel(new File(G:/mahout/data/intro.csv);UserSimilarity similarity=new PearsonCorrelationSimilarity(model);UserNeighborhood neighborhood=new NearestNUserNeighborhood(2,similarity,model);Remender remender=new GenericUserBasedRemender(model,neighborhood,similarity);Listremendations=remender.remend(1,3);for(RemendedItem remendation:remendations)System.out.println(remendation);执行结果总的说来,上面基本能实现对某个人推荐某本书的功能。 二测试验证如何判断通过推荐计算出来的结果是否好,可以通过Evaluator相应方法进行判断,主要两个参数precision和recall Precison:Recall:RemenderEvaluator估算推荐出的质量接口AverageAbsoluteDifferenceRemenderEvaluator预测与现实直接的差距三.数据Preference对象是喜好偏好,具备user,item,value三个值它的具体实现类为GenericPreference PreferenceArray偏好组为什么不用collection(Preference)?原因很多情况Preference中的三个要素是重复的,这样会很浪费内存。 因此定义了一个PreferenceArray接口GenericItemPreferenceArray一个item相关的所有偏好list GenericUserPreferenceArray一个User相关的所有偏好list同样处于性能考虑,Mahout提供FastByIDMap和FastByIDSet与jdk中的Map和Set相比性能更高,内存使用小,并且具备内存最大限制。 DataModel数据仓库。 AbstractDataModel有最大值和最小值GenericDataModel实现FileDataModel读取文件方式的数据仓库,可以是gzip,zip等压缩,分号为分割。 可以一下子更新同一目录下的多个相同前缀命名的文件(基于内存的)调用Remender的refresh可以重新加载数据源当数据很大的时候,内存无法承受,那么就需要通过关系型数据库来保存和访问数据。 使用JDBC访问则用JDBCDataModel,如果是mysql,则对应的是MySQLJDBCDataModel。 样例需要注意几点1.Userid和itemid不可以为null,必须是index索引的2.Userid和itemid作为联合主键3.选择数字类型进行匹配,可以使用Mysql中的BIGINT和FLOAT和java中的long,float匹配4.查看java doc中的buffer和query cache5.当使用mysql的drive,可以设置drive的参数为cachePrearedStatements前面例子数据里面都有userid,itemid和Preference三个要素其中preference只偏好。 通过1-5之间的值来表示,如果没有偏好值,则就是boolean,表示偏好值的要素存在还是不存在,如图Mahout里面很多Boolean相关的类应该就是表示没有preference值的情况。 比如GenericBooleanPrefDataModel四推荐获取邻居有两种策略1.取最近的几个用户NearestNUserNeighborhood2.找出喜好度在某一个值内的所有用户ThresholdUserNeighborhood (1)基于UserSimilarity推荐用法1.皮尔森相关系数相识度PearsonCorrelationSimilarity取值在1到-1直接。 如果接近1,表示喜好度很一致,如果接近0表示,两人喜好度交集很小,如果接近-1,表示两人喜好度相反度很高(当标本很少的时候,即使算出来的相识度高,但是不符合现实,比如user1和user4相识度高,但是感觉user5和user1才更接近,因为101,102,103他们都看过,喜好顺序也一样)s:/zh.wikipedia/wiki/%E7%9A%AE%E5%B0%94%E9%80%8A%E7%A7%AF%E7%9F%A9%E7%9B%B8%E5%85%B3%E7%B3%BB%E6%95%B02.EuclideanDistanceSimilarity3.SpearmanCorrelationSimilarity4.TanimotoCoefficientSimilarity en.wikipedia/wiki/Jaard_index#Tanimoto_coefficient_.28extended_Jaard_coefficient.295.LogLikelihoodSimilarity tdunning.blogspot./xx/03

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论