机器学习第3天协同过滤推荐算法与应用_第1页
机器学习第3天协同过滤推荐算法与应用_第2页
机器学习第3天协同过滤推荐算法与应用_第3页
机器学习第3天协同过滤推荐算法与应用_第4页
机器学习第3天协同过滤推荐算法与应用_第5页
已阅读5页,还剩12页未读 继续免费阅读

付费下载

下载本文档

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

文档简介

Scikili(CollaborativeFiltering,用户/文档文档文档文档用户√√用户√√√用户√√√用户√√A/BA和物品B,从而A/B”的口味最为相近ABD分析:物品组合(A,D)A/D两件物品的相似度最高AD物品CF整数量化值户/物品相似度。类似于当当网或者京东给出的“了该的人还了...”,“查看了的人还查看了...”各类数据除以此类中的最大值,以保证归一化后的数据取值在[0,1]范围中。[-11]CFCF和基于物品的CF。这两种方法都需要计算相似度,下面我们先看看最基本的几种计算相似度在推荐的场景中,在用户-物品偏好的二维矩阵中,我们可以将一个用户对所有物品的偏CF的常用方法有三种,分别是欧式距离法、相关系数法、余弦相似度法。552354125(1)defOsDistance(vector1,vector2):sqDiffVector=vector1-vector2distance=sqDistances**0.5returndefOsDistance(vector1,vector2):sqDiffVector=vector1-vector2distance=sqDistances**0.5returnY的值。0时,XY当X的值增大,Y0.001.00当X的值减小,Y0.001.00当X的值增大,Y减小,负相关关系,相关系数在-1.000.00之间当X的值减小,Y增大,负相关关系,相关系数在-1.000.00之间0,相关度越弱。(3)01,1;并且其最小值是-11;90°0;两个向量指向完全相01之间。defdefnum=denom=la.norm(inA)*la.norm(inB)return0.5+0.5*(num/denom) 1.5.3UserCFItemCFCFPythonratings.datDataFrame>>>importpandasas>>>frompandasimport>>>rnames=>>>>>>importpandasas>>>frompandasimport>>>rnames=>>>ratings=>>> [3rowsx4data >>>表.corr(method='pearsonmin_periods=1)方法,可以对所有列互相计算相关系数。method默认为相关系数min_periods参数,这个参数的作用是设定计算相关系数时的最小样本量,低于此值的min_periods但同时又要考虑到,我们的样本空间十分稀疏,min_periods定得太高会导致出来的结果集在data中挑选一对 首先,要找出评分最多的一对用户。我们新建一个以user为行列的方阵foo,然后>>>foo=>>>foo=>>>foriinforjinfoo.ix[i,j]=4000*40001600>>>foriin #>>>>>>foriin #>>>ser=>>>foriin >>> #ser>>>ser[4169] #取得另一个 Name:user_id,dtype:>>>>>>test=>>>>>>>>>>>>>>>test=>>>>>>>>>2617444415344425>>>>>>periods_test=>>>foriinforjinperiods_test.ix[i,j]=sample.iloc[0].corr(sample.iloc[1])[5rowsx7对这俩用户的相关系数统计,我们分别随机抽取20、50、100、200、500和998个样本值,各抽20次。并统计结果:>>>0- >>>略 -[8rowsx7从std这一行来看,理想的min_periods参数值应当为[8rowsx72.2.3min_periods=200>>>check_size=>>>check=>>>check_size=>>>check=check_data datacheck_data #200>>>foruserincheck[(user,movie)]=check_data.ix[user,movie]check_size-=1ifnotcheck_size:>>>corr=>>>corr_clean=corr_clean check_ser #1000>>>check_ser[:5](15,593) (23, (33,4(36,5(53,4dtype:corr_cleancheck_ser1000个用户->>>result=>>>for>>>result=>>>foruser,moviein 平均而prediction=ifuserincorr_set #仅限大于0.1forotherinifnotnp.isnan(data.ix[other,movieandotheruser:#bool(np.nan)==Trueifresult[(user,movie)]=sum([value*weightforvalue,weightinprediction])/sum([pair[1]forpair>>> len(result)#1000min_periods=200>>>>>>>>>(dtype:(23,(33,(36,(53,(62,dtype:862的样本量能达到0.436的相关系数,应该说结果还不错。如果一开始没有滤掉评价数200corrresult中的样本量会很小,大约200+个。但因为样本量变小的缘故,相关系数可以提升到0.5~0.6。2.2.4>>>corr=>>>corr_clean=>>>>>>corr=>>>corr_clean=>>>corr_clean=>>>lucky=>>>lucky=>>>gift=gift #gift>>>corr_lucky=corr_clean[lucky].drop(lucky)#luckySeriescorr_lucky #0.1formoviein #遍历所有luckyprediction=forotherincorr_lucky.index:#遍历所有与lucky0.1ifnotifprediction: #gift111111111111Name:3945,Length:1Name:3945,Length:2991,dtype:、计算距离的数学最初用于计算空间中两个点的距离,假设x,y是n的两个点,它们之的的可以看出,当n=2时,距离就是平面上两个点的距离当 ]sxsyxyCosine相似度(CosineCosineTanimotoJaccardCosine相似度的扩展,也多用于计算文档数据的相

温馨提示

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

评论

0/150

提交评论