【机器学习PAI实战】—— 玩转人工智能之美食推荐 ...

发布时间:2025-09-25 16:39

人工智能烹饪机器人能制作美食 #生活知识# #生活感悟# #科技生活变迁# #人工智能日常#

3317ce1aadad048b5b7e796a06dfef8e7e3a9b95

模型训练与在线预测服务、推荐算法四部曲、机器学习PAI实战、更多精彩,尽在 开发者分会场

前言

在生活中,我们经常给朋友推荐一些自己喜欢的东西,也时常接受别人的推荐。怎么能保证推荐的电影或者美食就是朋友喜欢的呢?一般来说,你们两个人经常对同一个电影或者美食感兴趣,那么你喜欢的东西就很大程度上朋友也会比较感兴趣。在大数据的背景下,算法会帮我寻找兴趣相似的那些人,并关注他们喜欢的东西,以此来给我们推荐可能喜欢的事物。

场景描述

某外卖店铺收集了一些用户对本店铺美食的评价和推荐分,并计划为一些新老客户推荐他们未曾尝试的美食。

数据分析

A B C D E F G H I J K 0[0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 5], 1[0, 0, 0, 3, 0, 4, 0, 0, 0, 0, 3], 2[0, 0, 0, 0, 4, 0, 0, 1, 0, 4, 0], 3[5, 4, 5, 0, 0, 0, 0, 5, 5, 0, 0], 4[0, 0, 0, 0, 5, 0, 1, 0, 0, 5, 0], 5[4, 3, 4, 0, 0, 0, 0, 5, 5, 0, 1], 6[0, 0, 0, 4, 0, 4, 0, 0, 0, 0, 4], 7[0, 0, 0, 2, 0, 2, 5, 0, 0, 1, 2], 8[0, 0, 0, 0, 5, 0, 0, 0, 0, 4, 0], 9[1, 0, 0, 0, 0, 0, 0, 1, 2, 0, 0]

none

横轴为美食品种,分为A--K 11中,竖轴为用户序号,有0-9 10个人。表内值为某个用户对某种美食的推荐分,0表示其未曾吃过,5分为最高的推荐分。以上数据为实验虚构数据。

场景抽象化

给定一个用户i,我们根据上面的数据为其推荐N个推荐分最高的美食。

模型选择

协同过滤简单来说是利用某兴趣相投、拥有共同经验之群体的喜好来推荐用户感兴趣的信息,个人通过合作的机制给予信息相当程度的回应(如评分)并记录下来以达到过滤的目的进而帮助别人筛选信息,回应不一定局限于特别感兴趣的,特别不感兴趣信息的纪录也相当重要。

我们也将采用协同过滤来实现商品推荐,并在下面的章节一步步实现基于协同过滤的商品推荐系统。

数据处理

以上数据,不存在缺失和无意义推荐分,即不超出范围,格式正确。

搭建环境 首先进入noteBook建模,链接

TB107E0KmrqK1RjSZK9XXXyypXa-2000-608.png

然后创建新实例

TB1CNM.KgHqK1RjSZFPXXcwapXa-2000-516.png

之后打开实例

TB1IQI5KmzqK1RjSZFLXXcn2XXa-2000-1093.pn

现在基础环境以及搞定了,我们可以用terminal安装自己需要的包环境。同时可以选择python2或者python3的开发环境。而且左侧的文件系统,支持本地文件的上传下载等。

相似度计算

在推荐系统中,我们需要计算两个人或商品的相似度,我们可以采用余弦相似度,皮尔逊相关系数等。

余弦相似性通过测量两个向量的夹角的余弦值来度量它们之间的相似性。0度角的余弦值是1,表示完全一样,而其他任何角度的余弦值都不大于1;并且其最小值是-1,相似度为0。

皮尔逊相关系数( Pearson correlation coefficient),是用于度量两个变量X和Y之间的相关(线性相关),其值介于-1与1之间。

新建文件recom.py,实现相似度计算函数

def cosSim(inA,inB):

num = float(inA.T*inB)

denom = la.norm(inA)*la.norm(inB)

return 0.5+0.5*(num/denom)

python

运行

推荐分计算

在文件recom.py,实现推荐分计算

def standEst(dataMat, user, simMeas, item):

n = shape(dataMat)[1]

simTotal = 0.0; ratSimTotal = 0.0

for j in range(n):

userRating = dataMat[user,j]

if userRating == 0: continue

overLap = nonzero(logical_and(dataMat[:,item].A>0, \

dataMat[:,j].A>0))[0]

if len(overLap) == 0: similarity = 0

else: similarity = simMeas(dataMat[overLap,item], \

dataMat[overLap,j])

print('the %d and %d similarity is: %f' % (item, j, similarity))

simTotal += similarity

ratSimTotal += similarity * userRating

if simTotal == 0: return 0

else: return ratSimTotal/simTotal

python

运行

对于特征向量非常稀疏,或者特征之间关联关系明显,协方差较大则需要对原有维度的特征进行降维。这样既可以节省资源加快运算,也可以避免冗余特征带来的干扰。

def svdEst(dataMat, user, simMeas, item):

n = shape(dataMat)[1]

simTotal = 0.0; ratSimTotal = 0.0

U,Sigma,VT = la.svd(dataMat)

Sig4 = mat(eye(4)*Sigma[:4])

xformedItems = dataMat.T * U[:,:4] * Sig4.I

for j in range(n):

userRating = dataMat[user,j]

if userRating == 0 or j==item: continue

similarity = simMeas(xformedItems[item,:].T,\

xformedItems[j,:].T)

print('the %d and %d similarity is: %f' % (item, j, similarity))

simTotal += similarity

ratSimTotal += similarity * userRating

if simTotal == 0: return 0

else: return ratSimTotal/simTotal

python

运行

通过计算待推荐商品与已推荐商品的相似度,并乘以该用户对已推荐商品的推荐分,来计算待推荐商品的推荐分。

在文件recom.py,加入recommend函数

def recommend(dataMat, user, N=3, simMeas=cosSim, estMethod=standEst):

unratedItems = nonzero(dataMat[user,:].A==0)[1]

if len(unratedItems) == 0: return 'you rated everything'

itemScores = []

for item in unratedItems:

estimatedScore = estMethod(dataMat, user, simMeas, item)

itemScores.append((item, estimatedScore))

return sorted(itemScores, key=lambda jj: jj[1], reverse=True)[:N]

python

运行

算法演示

如果是本地编辑的文件,可以通过文件上传方式上传到服务器。

TB13SJsKxnaK1RjSZFBXXcW7VXa-662-400.png

新建noteBook演示

TB1WQE0KmrqK1RjSZK9XXXyypXa-1550-714.png

加载算法模板

TB1VZRbKwHqK1RjSZFEXXcGMXXa-564-260.png

数据展示

TB1xo77KkvoK1RjSZPfXXXPKFXa-750-514.png

为序号为2的用户推荐商品

TB1JsJXKrrpK1RjSZTEXXcWAVXa-754-976.png

总结

通常在计算相似度之前,我们需要确定是计算基于商品的相似度(上面的方式),还是计算基于用户的相似度。在现实情况下,我们要根据用户和商品的数据决定选择哪种计算方式。同时,在数据量变大时,我们通常需要先降维,在做商品推荐。部分代码参考《机器学习实战》,本篇文章主要介绍如何使用PAI-DSW实现算法实验。

人人用得起的机器学习平台↓↓↓↓

27ecdb530e90e3f46d045099563018a783849130

海量资源点击领取

更有kindle、技术图书抽奖活动,百分百中奖

网址:【机器学习PAI实战】—— 玩转人工智能之美食推荐 ... https://www.yuejiaxmz.com/news/view/1334441

相关内容

【机器学习PAI实战】—— 玩转人工智能之美食推荐
机器学习平台 PAI智能
【机器学习PAI实战】—— 玩转人工智能之美食推荐在生活中,我们经常给朋友推荐一些自己喜欢的东西,也时常接受别人的推荐。
决策人工智能平台 PAI
基于PAI搭建企业级个性化推荐系统
带你读《深入理解AutoML和AutoDL:构建自动化机器 学习与深度学习平台》之二:自动化人工智能
人工智能学习(四)之机器学习基本概念
2019年机器学习:追踪人工智能发展之路
一文读懂!人工智能、机器学习、深度学习的区别与联系!
计算机毕业设计hadoop+spark+hive美食推荐系统 知识图谱美团餐厅推荐系统 美团推荐系统 美食价格预测 美团爬虫 美食数据分析 美食可视化大屏 机器学习 深度学习 人工智能 大数据毕业设计

随便看看