《《人工智能基础与应用》第6章 课后习题参考答案.docx》由会员分享,可在线阅读,更多相关《《人工智能基础与应用》第6章 课后习题参考答案.docx(5页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第6章 个性化推荐:主动满足你的需求课后习题答案一、考考你1.下列哪类算法不属于个性化推荐 D 。A.协同推荐B.基于内容的推荐C.关联规则推荐D.分类推荐2.基于用户的协同推荐算法的特点是 B 。A.找出用户的特征B.基于用户行为计算用户相似度C.找出物品的特征D.计算物品的相似度3.下列哪个方法 C 不是用于计算相似度的。A.欧式距离B.皮尔逊相关系数C.均方根误差(RMSE)D.余弦向量4.关联规则中置信度的含义是 B 。A.物品频繁出现的概率B.一个物品的销售数量对另一个物品的影响C.规则出现的概率D.两个物品同时出现的频次与前一个物品出现频次的比例5.在关联规则分析过程中,对原始数据
2、集进行事务型数据处理的主要原因是 C 。A.提高数据处理速度B.节省存储空间C.方便算法计算D.形成商品交易矩阵二、亮一亮1.协同过滤推荐与关联规则推荐的区别是什么?他们各自适用在哪些场合?参考答案:协同过滤 (Collaborative filtering),是指通过收集群体用户的偏好信息,自动化预测(过滤)个体用户可能感兴趣的内容。协同过滤基于如下基本假设:如果一个人A在一个问题上和另一个人B持相同观点,那么对于另外一个问题,比起随机选择的一个路人C,A更有可能同B持相同观点。具体包括User-based 的协同过滤和 Item-based 的协同过滤技术。关联规则分析 (Associat
3、ion Rules,又称 Basket Analysis) 用于从大量数据中挖掘出有价值的数据项之间的关联关系。关联规则解决的常见问题如:“如果一个消费者购买了产品A,那么他有多大机会购买产品B?”以及“如果他购买了产品C和D,那么他还将购买什么产品?”两者的区别比较明显:1)关联规则面向的是事务transaction,而协同过滤面向的是用户偏好(评分)。2)协同过滤在计算相似商品的过程中可以使用关联规则分析,但是在有用户评分的情况下(非1/0),协同过滤算法应该比传统的关联规则更能产生精准的推荐。3)协同过滤的约束条件没有关联规则强,或者说更为灵活,可以考虑更多的商业实施措施和特殊的商业规则
4、。2.在案例1推荐你喜爱的电影中,如何计算两个用户之间的相似度?参考答案:任两位用户之间的相似度,是基于他俩都观看过且评论过相同的电影,由于每位用户评论的电影不完全一样,所以先要找到两位用户共同评论过的电影,然后再计算两者之间的相似度,相似度用欧式距离公式计算。三、帮帮我1.基于案例1的样本数据,利用基于物品的协同推荐算法向用户推荐他喜欢的电影。提示:1)给用户推荐那些和他之前喜欢的电影相似的电影。2)计算物品相似度:首先统计每部电影被哪些人评论过,记为电影标题:用户id:评分,其次计算两部电影之间的相关系数,即计算两部电影被相同人评价过的差异,记为sim(a,b),然后根据你拟推荐用户曾经看
5、过的电影评分rating,以及与这些电影相似度最大的m部电影,根据公式ratingsim(a,b)计算用户对电影的兴趣度,记为电影标题:兴趣度,最后取兴趣度最大的TopN部电影推荐给该用户,从而完成电影推荐工作。参考答案:import pandas as pdfrom math import *import operator#构建用户-物品的字典def loadData(moviesFile,ratingsFile): movies = pd.read_csv(moviesFile) ratings = pd.read_csv(ratingsFile) merge_data= pd.merge
6、(movies, ratings, on=movieId) merge_data=merge_datauserId, rating, movieId, title.sort_values(userId) datas=merge_data.values.tolist() data =; for line in datas: userid,score,item=line0,line1,line3; data.setdefault(userid,); datauseriditem=score; return datadata=loadData(data/movies.csv,data/ratings
7、.csv)#构造物品-物品的相似矩阵def similarity(data): N=;#喜欢物品i的总人数 C=;#喜欢物品i也喜欢物品j的人数 for user,item in data.items(): for i,score in item.items(): N.setdefault(i,0); Ni+=1; C.setdefault(i,); for j,scores in item.items(): if j not in i: Ci.setdefault(j,0); Cij+=1; #计算物品与物品的相似矩阵 W= for i,item in C.items(): W.setdef
8、ault(i,); for j,item2 in item.items(): Wi.setdefault(j,0); Wij=Cij/sqrt(Ni*Nj); return W#根据用户的历史记录,给用户推荐物品def recommandList(data,W,userid,k=3,N=10): rank=; for i,score in datauserid.items():#获得用户user历史记录,如A用户的历史记录为a: 1, b: 1, d: 1 for j,w in sorted(Wi.items(),key=operator.itemgetter(1),reverse=True)
9、0:k:#获得与物品i相似的k个物品 if j not in datauserid.keys():#该相似的物品不在用户user的记录里 rank.setdefault(j,0); rankj+=float(score) * w; #返回推荐结果 return sorted(rank.items(),key=operator.itemgetter(1),reverse=True)0:NW=similarity(data);#计算物品相似矩阵print(recommandList(data,W,5,3,10);#打印出用户id=5的最喜欢的3个物品的前10个推荐结果运行结果:2.假如某零售超市准
10、备举办一场关于berries(浆果)旺季的促销活动,请你根据案例2的购物篮数据,找出包含berries的所有可行动规则,据此为超市提供营销建议或策略。参考答案: 解决本题的主要思路是基于groceries.csv的数据设置合理的置信度,计算出包含所有berries的关联规则,根据关联规则为超市提供营销策略。1) 将groceries.csv文件转换为事务型数据import pandas as pdimport numpy as npimport csvfrom mlxtend.preprocessing import TransactionEncoderfrom mlxtend.frequen
11、t_patterns import apriorifrom mlxtend.frequent_patterns import association_rulesls_data=with open(rdatagroceries.csv,r) as f: reader=csv.reader(f) for row in reader: ls_data.append(row)te = TransactionEncoder()#进行 one-hot 编码te_array = te.fit(ls_data).transform(ls_data)df = pd.DataFrame(te_array, col
12、umns=te.columns_)2) 利用 Apriori 找出包含berries的频繁项集(其中min_support是基于试验确定的值)freq_item = apriori(df, min_support=0.01,max_len=2,use_colnames=True)freq_item.sort_values(by=support,axis=0,ascending=False)freq_item.locfreq_itemitemsets.str.len()1.sort_values(by=support,axis=0,ascending=False)#查看含有berries频繁项集
13、set_itemsets = map(set,freq_item.itemsets.values.tolist()freq_itemhave-berries = berries in i for i in set_itemsetsfreq_item.locfreq_itemhave-berries=True3)提取有用的销售关联规则pd.set_option(display.max_rows, None)rules=association_rules(freq_item,min_threshold=0.025)rules.sort_values(by=confidence,axis=0,ascending=False)#选择含有berries的前因项的规则set_rules = map(set,rules.antecedents.values.tolist()ruleschoice = berries in j for j in set_rulesrules.locruleschoice=True通过以上关联规则11、13、15的数据,我们可以发现购买berries都会促进other vegetables、whole milk、yogurt的销售,提升度大于1。因此,建议将berries与other vegetables、whole milk、 yogurt搭配销售。