?

PCA算法在酒店推薦系統中的應用研究

2019-01-06 02:19劉淑英鄒燕飛唐云凱李依橋趙子慧
中國科技縱橫 2019年22期
關鍵詞:機器學習降維

劉淑英 鄒燕飛 唐云凱 李依橋 趙子慧

摘 要:目前我們使用的酒店推薦系統中,會出現用戶評分數據極端稀疏,矩陣的稀疏性導致推薦算法在相似性計算時存在較大誤差,進而導致最近鄰居選擇的不準確,從而影響推薦質量。針對此問題,我們通過對評分矩陣采用PCA降維的方法,降低評分矩陣的稀疏性,保留了最能代表用戶興趣的維數,使得相似性計算更加準確,保證了最近鄰居選擇的準確性,從而提高了推薦質量。

關鍵詞:機器學習;PCA算法;酒店推薦系統;降維

中圖分類號:TP391.9 文獻標識碼:A 文章編號:1671-2064(2019)22-0051-02

0 引言

在信息技術和互聯網蓬勃發展的今天,大量的數據使人們從信息貧乏的時代走到了信息過載的時代,面對大量的信息,人們獲取到對自己有用的信息是非常慢[1]。因此,我們需要將信息進行過濾,找到有用的信息,從而使對數據的研究更加簡單方便,這樣過濾信息的能力就變成了評價一個系統的重要的條件[2]。PCA算法能夠實現數據有效降維,并且可以利用特征值對原始指標進行分類,實現特征的準確提取。

1 PCA算法

PCA算法即主成分分析法(principal component analysis),用于數據降維,是以“信息”損失較小的為前提,將高維的數據轉換到低維,這樣就可以減小計算量[3]。它可以把一個確定事物的特征提取出來,舍掉沒有特點的特征值,提取事物的本質因素,使復雜的問題簡單化。

PCA算法的主旨思想就是通過對大量數據進行一系列的計算后,將高維度的數據降為低維度數據,應用于無監督學習。得到的低維將加快模型訓練的速度,低維特征具有更好的可視化特性。此外,數據降維將導致某些信息丟失。通常我們可以設置一個丟失閾值來控制信息丟失[4-5]。PCA算法的計算過程如下:

設原始樣本集為X,其有m個樣本,每個樣本有n個特征維度,可以用式(1)表示為:

(1)

接下來,我們對每個特征去均值化(即均值零化),計算公式為:

(2)

然后,我們通過計算協方差矩陣,計算公式為:

(3)

將特征向量按特征值的大小排序,組成矩陣u=[u1 u2 … un],則特征向量u1為主特征向量(對應的特征值最大),u2為次特征向量,以此類推。對于特征值越大的特征向量,樣本集在該方向上的變化越大。對于由特征向量組成的矩陣我們稱為特征矩陣,特征矩陣是一個正交矩陣,即滿足uTu=uuT=I。

PCA算法非常巧妙地利用協方差矩陣來計算出樣本集在不同方向上的分散程度,利用方差最大的方向作為樣本集的主方向。PCA算法為我們提供了一種處理大量數據便捷快速的方法,在這個信息過量,發展速度迅速的時代,可以為我們提高工作學習以及生活的效率。

當樣本數據量大,維度高時,PCA算法是非常有效的一種降維方法,它能起到的作用有兩個:一個是節約存儲空間,當數據量過多時,通過減少減少幾個維度就可以節約很多空間;另一個是提供計算的速度,將數據降維后,無論是樣本數據訓練時,還有對新數據做出響應時,速度都會大幅提高。

2 模型實現

PCA算法的主要過程是首先構建一個示例矩陣通過使用樣本集和特性,然后利用樣本集,計算協方差矩陣,然后根據協方差矩陣的特征值和特征向量,并保留最大的前k個特征值的特征向量作為新維方向。將原始樣本集轉換為新的空間維度。

2.1 數據的采集

本文用到的樣本數據集為兩類,第一類樣本數據為行為100000,列為5。100000表示的是用戶的數量,5表示有5種類型的酒店。即100000用戶對酒店在5個維度的側重點的評分,這5個維度分別為用戶酒店的瀏覽量,訪客數,下單數,成交數,成交金額。第二類樣本數據集為行為5,列為100。5表示樣本,100表示的是特征點,5個維度同樣代表的是瀏覽量,訪客數,下單數,成交數,成交金額等。即第二類樣本數據集為100個酒店在5個維度的評分。

使用矩陣運算,將兩類樣本數據集相乘,生成顧客對酒店的評分,其具體實現代碼為:

hotelRating=pd.DataFrame(generators.dot(hotelcomp),index=[‘c%.6d%i for i in range(customerNum)],columns=[‘hotel_%.3d%j for j in range(100)]).astype(int)

print(hotelRating)

2.2 數據的預處理

計算樣本集的平均值,再用樣本集減去平均值并且除以其標準差,最后將數據進行歸一化處理。其實現代碼為:

def normalize(s):

if s.std()>1e-6:

return(s-s.mean())*s.std()**(-1)

else:

return (s-s.mean())

hotelRating_norm=hotelRating.apply(normalize)

2.3 模型訓練

PCA算法的計算過程為:

(1)數據中心化,去均值。

(2)求解協方差矩陣。

(3)利用特征值分解/奇異值分解,求解特征值以及特征向量。

(4)利用特征向量構造投影矩陣。

首先,計算協方差矩陣,然后進行奇異值分解,PCA算法就是對協方差矩陣做特征值分解,我們使用奇異值分解來分解矩陣。其具體實現代碼為:

u,s,v=np.linalg.svd(hotelRating_norm_corr)

print(‘u\n{}.format(u))

在實現的過程中,我們使用奇異值分解矩陣,使用SVD分解特征值,降低問題復雜性,奇異值分解,就是將一個矩陣通過運算分解為三個矩陣。即A=U*S*V,其中U和V均是正交矩陣,S為對角矩陣。相對于PCA特征值分解,奇異值分解可處理的不只是協方差矩陣(方陣),還可以直接處理數據。

然后通過對數據的描繪,最后得到特征值碎石圖,如圖1所示。

根據碎石圖1可知,X軸為成分數,Y軸為特征值,在第五個之后變得平緩,可得知我們可提取五個主成分,實現了PCA數據降維。

最后我們進行獲取分類評分。根據分析協方差矩陣中100個樣本和100個特征點的相似度,找出與每個特征點相似的樣本,得到特征值。選出明顯大的前k個特征值,舍去小的特征值。我們可以通過樣本集特征提取最高的5個主成分。截取SVD維度來確定酒店相似度,具體實現代碼為:

u_short=u[:,:5] ?v_short=v[:5,:] ?s_short=s[:5]

print(‘u,s,v,short{}.format(u_short,v_short,s_short))

該程序最終會得到一個行為100,列為5的矩陣,即100個酒店在前5個主特征值得評分。然后我們計算出指定酒店在各分類評分。首先獲取樣本集中的最高成分,與檢索出的30號酒店的用戶評分相乘。其具體實現代碼為:

top_component=hotelRating_norm.dot(u_short).dot(np.diag(np.power(s_short,-0.5)))

hotel_ind = 30

rating=hotelRating_norm.loc[:,‘hotel_%.3d% hotel_ind]

print ("classification of the dth hotel"hotel_ind,

top_component.T.dot(rating)/customerNum)

該程序的運行結果如圖2所示。

根據圖2可以看出30號酒店與第1個分類評分最高,第3個分類的評分最低。用戶可以根據自身需求選擇是否入住30號酒店。

3 結語

通過用PCA算法實現簡單的酒店推薦系統,在實際研究中,PCA算法是不能完全的到樣本集的分類的,還要結合SVD奇異值分解獲得樣本集的特征值。PCA算法非常巧妙地利用協方差矩陣來計算出樣本集在不同方向上的分散程度,利用方差最大的方向作為樣本集的主方向。通過對該PCA算法在酒店推薦系統中的應用研究,實驗結果表明:該酒店推薦算法具有較高的準確度和覆蓋度。

參考文獻

[1] Justiawan.Riyanto Sigit,Zainal Arief.Tooth Color Detection Using PCA and KNN Classifier Algorithm Based on Color Moment[J].Emitter:International Journal of Engineering Technology,2017,5(1):316-325.

[2] Yan Wang.An Advanced AOI-Cast Algorithm Based on PCA[J].Advanced Materials Research,2014,3227(945):1-2.

[3] 易旺.酒店搜索推薦的設計與分析[D].武漢:華中科技大學,2013.

[4] 劉艷.基于協同過濾的酒店推薦系統研究與實現[D].成都:電子科技大學,2011.

[5] 謝佩,吳小俊.分塊多線性主成分分析及其在人臉識別中的應用研究[J].計算機科學,2015,42(03):274-279.

猜你喜歡
機器學習降維
混動成為降維打擊的實力 東風風神皓極
Helicobacter pylori-induced inflammation masks the underlying presence of low-grade dysplasia on gastric lesions
降維打擊
前綴字母為特征在維吾爾語文本情感分類中的研究
基于支持向量機的金融數據分析研究
一種改進的稀疏保持投影算法在高光譜數據降維中的應用
拋物化Navier-Stokes方程的降維仿真模型
基于特征聯合和偏最小二乘降維的手勢識別
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合