日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 人工智能 > ChatGpt >内容正文

ChatGpt

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

發(fā)布時(shí)間:2024/8/23 ChatGpt 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【机器学习PAI实战】—— 玩转人工智能之美食推荐 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

前言

在生活中,我們經(jīng)常給朋友推薦一些自己喜歡的東西,也時(shí)常接受別人的推薦。怎么能保證推薦的電影或者美食就是朋友喜歡的呢?一般來(lái)說(shuō),你們兩個(gè)人經(jīng)常對(duì)同一個(gè)電影或者美食感興趣,那么你喜歡的東西就很大程度上朋友也會(huì)比較感興趣。在大數(shù)據(jù)的背景下,算法會(huì)幫我尋找興趣相似的那些人,并關(guān)注他們喜歡的東西,以此來(lái)給我們推薦可能喜歡的事物。

場(chǎng)景描述

某外賣店鋪收集了一些用戶對(duì)本店鋪美食的評(píng)價(jià)和推薦分,并計(jì)劃為一些新老客戶推薦他們未曾嘗試的美食。

數(shù)據(jù)分析

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]

橫軸為美食品種,分為A--K 11中,豎軸為用戶序號(hào),有0-9 10個(gè)人。表內(nèi)值為某個(gè)用戶對(duì)某種美食的推薦分,0表示其未曾吃過(guò),5分為最高的推薦分。以上數(shù)據(jù)為實(shí)驗(yàn)虛構(gòu)數(shù)據(jù)。

場(chǎng)景抽象化

給定一個(gè)用戶i,我們根據(jù)上面的數(shù)據(jù)為其推薦N個(gè)推薦分最高的美食。

模型選擇

協(xié)同過(guò)濾簡(jiǎn)單來(lái)說(shuō)是利用某興趣相投、擁有共同經(jīng)驗(yàn)之群體的喜好來(lái)推薦用戶感興趣的信息,個(gè)人通過(guò)合作的機(jī)制給予信息相當(dāng)程度的回應(yīng)(如評(píng)分)并記錄下來(lái)以達(dá)到過(guò)濾的目的進(jìn)而幫助別人篩選信息,回應(yīng)不一定局限于特別感興趣的,特別不感興趣信息的紀(jì)錄也相當(dāng)重要。

我們也將采用協(xié)同過(guò)濾來(lái)實(shí)現(xiàn)商品推薦,并在下面的章節(jié)一步步實(shí)現(xiàn)基于協(xié)同過(guò)濾的商品推薦系統(tǒng)。

數(shù)據(jù)處理

以上數(shù)據(jù),不存在缺失和無(wú)意義推薦分,即不超出范圍,格式正確。

搭建環(huán)境

  • 首先進(jìn)入noteBook建模,鏈接

  • 然后創(chuàng)建新實(shí)例

  • 之后打開(kāi)實(shí)例

現(xiàn)在基礎(chǔ)環(huán)境以及搞定了,我們可以用terminal安裝自己需要的包環(huán)境。同時(shí)可以選擇python2或者python3的開(kāi)發(fā)環(huán)境。而且左側(cè)的文件系統(tǒng),支持本地文件的上傳下載等。

相似度計(jì)算

在推薦系統(tǒng)中,我們需要計(jì)算兩個(gè)人或商品的相似度,我們可以采用余弦相似度,皮爾遜相關(guān)系數(shù)等。

余弦相似性通過(guò)測(cè)量?jī)蓚€(gè)向量的夾角的余弦值來(lái)度量它們之間的相似性。0度角的余弦值是1,表示完全一樣,而其他任何角度的余弦值都不大于1;并且其最小值是-1,相似度為0。

皮爾遜相關(guān)系數(shù)( Pearson correlation coefficient),是用于度量?jī)蓚€(gè)變量X和Y之間的相關(guān)(線性相關(guān)),其值介于-1與1之間。

新建文件recom.py,實(shí)現(xiàn)相似度計(jì)算函數(shù)

def cosSim(inA,inB):num = float(inA.T*inB)denom = la.norm(inA)*la.norm(inB)return 0.5+0.5*(num/denom)

推薦分計(jì)算

在文件recom.py,實(shí)現(xiàn)推薦分計(jì)算

#dataMat 用戶與美食的矩陣 #user 用戶序號(hào) #simMeas 相似度算法 #item 美食商品def standEst(dataMat, user, simMeas, item):n = shape(dataMat)[1]#商品數(shù)simTotal = 0.0; ratSimTotal = 0.0for j in range(n):#所有商品,遍歷userRating = dataMat[user,j]#user對(duì)該商品的推薦分if userRating == 0: continue#如果user 未推薦該商品則過(guò)濾#logical_and邏輯與,nonzero非零判斷,overLap為均為商品item,j推薦的用戶overLap = nonzero(logical_and(dataMat[:,item].A>0, \dataMat[:,j].A>0))[0]if len(overLap) == 0: similarity = 0#以此overLap,計(jì)算兩商品的相似度。else: similarity = simMeas(dataMat[overLap,item], \dataMat[overLap,j])print('the %d and %d similarity is: %f' % (item, j, similarity))simTotal += similarityratSimTotal += similarity * userRatingif simTotal == 0: return 0else: return ratSimTotal/simTotal

對(duì)于特征向量非常稀疏,或者特征之間關(guān)聯(lián)關(guān)系明顯,協(xié)方差較大則需要對(duì)原有維度的特征進(jìn)行降維。這樣既可以節(jié)省資源加快運(yùn)算,也可以避免冗余特征帶來(lái)的干擾。

def svdEst(dataMat, user, simMeas, item):n = shape(dataMat)[1]simTotal = 0.0; ratSimTotal = 0.0U,Sigma,VT = la.svd(dataMat) #奇異值分解Sig4 = mat(eye(4)*Sigma[:4]) #構(gòu)建對(duì)角矩陣xformedItems = dataMat.T * U[:,:4] * Sig4.I #數(shù)據(jù)維度轉(zhuǎn)換for j in range(n):userRating = dataMat[user,j]if userRating == 0 or j==item: continuesimilarity = simMeas(xformedItems[item,:].T,\xformedItems[j,:].T)print('the %d and %d similarity is: %f' % (item, j, similarity))simTotal += similarityratSimTotal += similarity * userRatingif simTotal == 0: return 0else: return ratSimTotal/simTotal

通過(guò)計(jì)算待推薦商品與已推薦商品的相似度,并乘以該用戶對(duì)已推薦商品的推薦分,來(lái)計(jì)算待推薦商品的推薦分。

在文件recom.py,加入recommend函數(shù)

#dataMat 用戶與美食的矩陣 #user 用戶序號(hào) #N 推薦前N個(gè)商品 #simMeas 相似度計(jì)算算法 #estMethod 推薦分計(jì)算算法def recommend(dataMat, user, N=3, simMeas=cosSim, estMethod=standEst):#找出user未評(píng)分的商品unratedItems = nonzero(dataMat[user,:].A==0)[1]#find unrated items if len(unratedItems) == 0: return 'you rated everything'itemScores = []#依次計(jì)算這些商品的推薦分for item in unratedItems:estimatedScore = estMethod(dataMat, user, simMeas, item)itemScores.append((item, estimatedScore))#返回前N個(gè)較好分的結(jié)果return sorted(itemScores, key=lambda jj: jj[1], reverse=True)[:N]

算法演示

如果是本地編輯的文件,可以通過(guò)文件上傳方式上傳到服務(wù)器。

  • 新建noteBook演示

  • 加載算法模板

  • 數(shù)據(jù)展示

  • 為序號(hào)為2的用戶推薦商品

總結(jié)

通常在計(jì)算相似度之前,我們需要確定是計(jì)算基于商品的相似度(上面的方式),還是計(jì)算基于用戶的相似度。在現(xiàn)實(shí)情況下,我們要根據(jù)用戶和商品的數(shù)據(jù)決定選擇哪種計(jì)算方式。同時(shí),在數(shù)據(jù)量變大時(shí),我們通常需要先降維,在做商品推薦。部分代碼參考《機(jī)器學(xué)習(xí)實(shí)戰(zhàn)》,本篇文章主要介紹如何使用PAI-DSW實(shí)現(xiàn)算法實(shí)驗(yàn)。


原文鏈接
本文為云棲社區(qū)原創(chuàng)內(nèi)容,未經(jīng)允許不得轉(zhuǎn)載。

總結(jié)

以上是生活随笔為你收集整理的【机器学习PAI实战】—— 玩转人工智能之美食推荐的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。