《人工智能基础与应用第6章 个性化推荐:主动满足你的需求课后习题参考答案.docx》由会员分享,可在线阅读,更多相关《人工智能基础与应用第6章 个性化推荐:主动满足你的需求课后习题参考答案.docx(5页珍藏版)》请在第一文库网上搜索。
1、第6章个性化推荐:主动满足你的需求课后习题答案一、考考你1 .下列哪类算法不属于个性化推荐D0A.协同推荐B.基于内容的推荐C.关联规则推荐D.分类推荐2 .基于用户的协同推荐算法的特点是上_。A.找出用户的特征B.基于用户行为计算用户相似度C.找出物品的特征D.计算物品的相似度3 .下列哪个方法不是用于计算相似度的。A.欧式距离B.皮尔逊相关系数C均方根误差(RMSE)D.余弦向量4 .关联规则中置信度的含义是上_。A.物品频繁出现的概率B.一个物品的销售数量对另一个物品的影响C.规则出现的概率D.两个物品同时出现的频次与前一个物品出现频次的比例5 .在关联规则分析过程中,对原始数据集进行事
2、务型数据处理的主要原因是上。A.提高数据处理速度B.节省存储空间C.方便算法计算D.形成商品交易矩阵二、亮一亮1.协同过漉推荐与关联规则推荐的区别是什么?他们各自适用在哪些场合?参考答案:协同过滤(Co11aborativefi1tering),是指通过收集群体用户的偏好信息,自动化预测(过滤)个体用户可能感兴趣的内容。协同过滤基于如下基本假设:如果一个人A在一个问题上和另一个人B持相同观点,那么对于另外一个问题,比起随机选择的一个路人C,A更有可能同B持相同观点。具体包括User-based的协同过滤和Item-based的协同过滤技术。关联规则分析(ASSOeiatiOnRUIes,又称B
3、asketAna1ysis)用于从大量数据中挖掘出有价值的数据项之间的关联关系。关联规则解决的常见问题如:“如果一个消费者购买了产品A,那么他有多大机会购买产品B?”以及“如果他购买了产品C和D,那么他还将购买什么产品?”两者的区别比较明显:1)关联规则面向的是事务IranSaeIion,而协同过渡面向的是用户偏好(评分)。2)协同过滤在计算相似商品的过程中可以使用关联规则分析,但是在有用户评分的情况下(非1/0),协同过滤算法应该比传统的关联规则更能产生精准的推荐。3)协同过滤的约束条件没有关联规则强,或者说更为灵活,可以考虑更多的商业实施措施和特殊的商业规则。2在案例1推荐你喜爱的电影中,
4、如何计算两个用户之间的相似度?参考答案:任两位用户之间的相似度,是基于他俩都观看过且评论过相同的电影,由于每位用户评论的电影不完全一样,所以先要找到两位用户共同评论过的电影,然后再计算两者之间的相似度,相似度用欧式距离公式计算。三、帮帮我1 .基于案例1的样本数据,利用基于物品的协同推荐算法向用户推荐他喜欢的电影。提不:1)给用户推荐那些和他之前喜欢的电影相似的电影。2)计算物品相似度:首先统计每部电影被哪些人评论过,记为电影标题:用户id:评分,其次计算两部电影之间的相关系数,即计算两部电影被相同人评价过的差异,记为sim(a,b),然后根据你拟推荐用户曾经看过的电影评分rating,以及与
5、这些电影相似度最大的m部电影,根据公式ra1ingxsim(a,b)计算用户对电影的兴趣度,记为电影标题:兴趣度,最后取兴趣度最大的ToPN部电影推荐给该用户,从而完成电影推荐工作。参考答案:importpandasaspdfrommathimport*importoperator#构建用户-物品的字典def1oadData(moviesFi1e,ratingsFi1e):movies=pd.read_csv(moviesFi1e)ratings=pd.read_csv(ratingsFi1e)merge-data=pd.merge(movies,ratings,on=movie1d)merg
6、e_data=merge_datauser1d,rating,movie1d,tit1e,.sort-va1ues(user1d)datas=merge_data.va1ues.to1ist()data=);for1ineinda1as:userid,score,item=1ineO,1inc1,1ine3;data.setdefau1t(userid,);datauserid1item=score;returndatadata=1oadData(datamovies.csv,dataratings.csv,)#构造物品物品的相似矩阵defsimi1ari1y(data):1=;#喜欢物品i的
7、总人数C=;#喜欢物品i也喜欢物品j的人数foruser,itemindata.items():fori,scoreinitem.items():N.setdefau1t(i,O);Ni1=1;C.setdefau1t(i,);forj,scoresinitem.items():ifjnotini:Ci.setdefau1t(j,O);Ci+=1;#计算物品与物品的相似矩阵W=)fori,iteminC.i1ems():W.setdefau1t(i,);forj,item2initem.items():Wi.setdefauIt(j,O);Wij=Cij/Sqrt(Ni*Nj);returnW
8、#根据用户的历史记录,给用户推荐物品defrecommand1ist(da(a,W,userid,k=3,N=10):rank=;fori,scoreinda1auserid.items():#获得用户user历史记录,如A用户的历史记录为a:r,b,d,forj,winsorted(Wi.i1ems(),key=operator.itemgetter(1),reverse=True)0:k1:#W与物品i相似的k个物品ifjnotinda1auserid.keys():#该相似的物品不在用户user的记录里rank.setdefau1t(j,);rankj+=oat(score)*w;#返回
9、推荐结果returnsorted(rank.items(),key=operator.itemgetter(1),reverse=True)0:NW=SimiIari1y(data);#计算物品相似矩阵Print(recommand1ist(data,W,5,3,10);#打印出用户id=5的最喜欢的3个物品的前10个推荐结果运行结果:CjurassicPark(1993),19.79018674461378),CForrestGunp(1州4)二13.053363686962662),(Si1enceofthe1aubs.The(1991),8.530786098376653),(S1eep
10、1essinSeatt1e(1993)4.751301463486936),CDave.a821973751S039247).(,CrimsonTide(1995),3.7278490863031S35).CGost(1990),.3.1561237661048516).CBamb1(942).3.H1404312187716)2.假如某零售超市准备举办一场关于berries(浆果)旺季的促销活动,请你根据案例2的购物篮数据,找出包含berries的所有可行动规则,据此为超市提供营销建议或策略。参考答案:解决本题的主要思路是基于groceries.csv的数据设置合理的置信度,计算出包含所有b
11、erries的关联规则,根据关联规则为超市提供营销策略。1)将groceries.csv文件转换为事务型数据importpandasaspdimportnumpyasnpimportcsvfromm1xtend.preprocessingimportTransactionEncoderfromm1xtend.frequent-patternsimportapriorifromm1xtend.frequent_patternsimportassociation_ru1cs1s_data=withopen(r,da1agroceries.csv,r,)asf:reader=csv.reader(f
12、)forrowinreader:1s_data.append(row)te=TransactionEncoderO#进行One-hot编码te_array=te.fit(1s_data).transfbrm(Is_data)df=pd.DataFrame(te_array,co1umns=te.co1umns_)2)利用APriOri找出包含berries的频繁项集(其中min_support是基于试验确定的值)freq-item=apriori(df,min_support=0.01,max_1en=2,use_co1names=True)freq_item.sort_va1ues(by=s
13、upport,axis=0,ascending=Fa1se)freq-item.1ocfreqJtem,itemsets,.str.1en()1.sort-va1ues(by=suppor1,axis=0,ascending=FaIse)#查看含有berries频繁项集SetJtemsets=map(set,freq_item.itemsets.va1ues.to1ist()freq_itemhave-berries=berriesiniforiinset_itemsetsfreq_item.1ocfreq_itemhave-berries1=Truesupportitemsetshave-b
14、erries30.033249(berries)True930.010269(othervegetab1es,berries)True940.011795(who1emi1k,berries)True950.010574(yogurt,berries)True3)提取有用的销售关联规则pd.set-option(,disp1ay.max-rowsNone)ru1es=association_ru1es(freq_item,min_thresho1d=0.025)ru1es.sort-va1ues(by=,confidence,axis=0,ascending=Fa1se)#选择含有berries的前因项的规则set_ru1es=map(set,ru1es.antecedents.va1ues.to1is1()ru1eschoice=berriesinjforjinset_ru1esru1es.1ocru1eschoice=True1antecedentsconsequentsantecedentsupportconsequentsupportsupportconfidence1ift1everageconvictionchoice11(berries)(oth