推荐算法-协同过滤
1.什么是推薦算法?
? ? 分析大量數(shù)據(jù),最后計算出各種關(guān)聯(lián)性從而進(jìn)行預(yù)測,比如Amazon的商品推薦,今日頭條的信息流媒體推薦,甚至是你看個視頻右側(cè)的相似推薦等等。這些都需要涉及到推薦算法,隨著近幾年數(shù)據(jù)的存儲、計算、獲取成本不斷降低,企業(yè)或者是平臺所擁有的的數(shù)據(jù)量也在飛速增加,這么大的數(shù)據(jù)量需要更好的使用才能發(fā)揮出他的價值,這種價值也會成為產(chǎn)品能力甚至是競爭壁壘。而大數(shù)據(jù)的使用過程中,一個重要的方向就是預(yù)測,預(yù)測里面一個重要的應(yīng)用就是推薦。推薦算法會伴隨著大數(shù)據(jù)和AI的發(fā)展越來越重要。
2.推薦算法的條件
? ? 1.根據(jù)和你共同喜好的人來給你推薦。
? ? 2.根據(jù)你喜歡的物品找出和它相似的來給你推薦。
? ? 3.根據(jù)給出的關(guān)鍵字來給你推薦,這實(shí)際上就退化成了搜索算法。
? ? 4.上面的組合來給你推薦。
3.推薦算法分類(大致可以分三類)
? ? 1.基于內(nèi)容的推薦算法
? ? ? ? 就是根據(jù)用戶平時自己的行為,比如關(guān)注的內(nèi)容、搜索的內(nèi)容、收藏的內(nèi)容等等,根據(jù)這些內(nèi)容去數(shù)據(jù)集合里面查找相似東西,比如你看了變形金剛Ⅰ,基于內(nèi)容的推薦算法可以發(fā)現(xiàn)變形金剛Ⅱ并且推薦給你。根據(jù)的是內(nèi)容的關(guān)聯(lián)性。優(yōu)勢是可以解決冷啟動問題(假如變形金剛Ⅱ沒被人關(guān)注過,系統(tǒng)自動把Ⅰ和Ⅱ關(guān)聯(lián)上,用戶依然可以看到Ⅱ的推薦)。缺點(diǎn)是推薦的內(nèi)容可能會重復(fù),你看了地震的新聞,后期推薦的全是災(zāi)難相關(guān)的東西,甚至是有很多地震的;另一個弊端就是一些多媒體(比如音樂、電影、圖片等)由于很難提取內(nèi)容特征,則很難進(jìn)行推薦,一種解決方式則是人工給這些內(nèi)容打標(biāo)簽(人工標(biāo)注的成本比較高)。
? ? 2.協(xié)同過濾算法
? ? ? ? 原理是先把個體大體分為兩個集合,一個是用戶,一個是物品。對于關(guān)系的話,每
個用戶都會和一些物品產(chǎn)生關(guān)聯(lián),這樣就把兩個點(diǎn)連上了一條邊(當(dāng)然根據(jù)實(shí)際情況我? 們可以設(shè)計權(quán)重,通常也應(yīng)該設(shè)計權(quán)重)。最后建立一個包含兩個集合的圖。這個圖里 面同一個集合中的兩個點(diǎn)雖然沒有兩邊,但是可以通過另一個集合的一些點(diǎn)來聯(lián)通過 來。再根據(jù)邊的權(quán)值來算關(guān)聯(lián)度,當(dāng)然這個地方常見的協(xié)同過濾都是使用相關(guān)算法,比 如說是把個點(diǎn)映射到多維空間上,然后計算歐幾里得距離,或者是計算皮爾遜相關(guān)系數(shù) 等,這個下面再細(xì)說。簡單來說就是通過中間聯(lián)通集合來計算兩個沒有直接連接的兩個 點(diǎn)的相關(guān)性,同時以不同的集合為參照點(diǎn)的到的結(jié)果也是不一樣的,這就涉及到了協(xié)同 過濾的兩個不同方式user-based 和item-based。也是下面細(xì)說。
? ? 3.基于知識的推薦算法
? ? ? ? ?有點(diǎn)類似與基于內(nèi)容,當(dāng)然也可以分到里面去?;谥R的推薦算法就是制定一些 規(guī)則規(guī)定,然后根據(jù)這些我們把一些新的東西自動就關(guān)聯(lián)上了,也就是利用先驗知識建? 建立一個先驗?zāi)P?#xff0c;在冷啟動或者是數(shù)據(jù)比較疏松的時候都是比較好的方式。OK下面 整理協(xié)同過濾。
?
|-----------------------------------------------------------------------
1.什么是協(xié)同過濾(百度百科)Collaborative?Filtering
? ? 協(xié)同過濾簡單來說是利用某興趣相投、擁有共同經(jīng)驗之群體的喜好來推薦用戶感興趣的信息,個人通過合作的機(jī)制給予信息相當(dāng)程度的回應(yīng)(如評分)并記錄下來以達(dá)到過濾的目的進(jìn)而幫助別人篩選信息,回應(yīng)不一定局限于特別感興趣的,特別不感興趣信息的紀(jì)錄也相當(dāng)重要。
算法分類和細(xì)節(jié)、可以分為兩類,一類是基于用戶的User-based另一類是基于項目的Item-based。
? ? 1.基于用戶的User-based協(xié)同過濾算法:
? ? ? ? 基于用戶的協(xié)同過濾算法是通過用戶的歷史行為數(shù)據(jù)發(fā)現(xiàn)用戶對商品或內(nèi)容的喜好進(jìn)行度量打分。根據(jù)不同用戶對相同商品或內(nèi)容的態(tài)度和偏好程度計算用戶之間的關(guān)系。在有相同喜好的用戶間進(jìn)行商品推薦。例如如果A、B兩個用戶都購買了X、Y、Z三本書,并且給了好評,那么A和B就屬于同一類用戶??梢詫看過的圖書W也推薦給用戶B。
? ? 1.1?尋找偏好的相似用戶
? ? ? ? 模擬5個用戶對兩件商品的評分,來說明如何通過用戶對不同商品的態(tài)度和偏好尋找相似的用戶,5個用戶分別對兩件商品進(jìn)行評分。這里的分值可能表示真實(shí)購買,也可能表示用戶對商品不同行為的量化指標(biāo)。例如瀏覽次數(shù)、推薦、搜索、收藏、分享、評論等等。這些行為都可以表示用戶對商品的態(tài)度和偏好程度。
??
? ? 根據(jù)商品是2,建立一個二維的坐標(biāo)系
? ? 然后看上面的圖,就很容易發(fā)現(xiàn)A?C?D是一類,E?B?是一類。實(shí)際過程中怎么通過數(shù)值來表示兩點(diǎn)之間的相似程度?方法也很多,最基本的能想到的就是直接求歐幾里得距離。這 個方法雖然簡單,但是在機(jī)器學(xué)習(xí)算法中(比如圖像特征提取)或其他很多復(fù)雜問題中 經(jīng)常會用到。?
二維的歐幾里得距離公式:
算完之后得到的數(shù)值越小的兩個點(diǎn)之間關(guān)聯(lián)性約到,通常可以取到數(shù)這樣方便觀察出來關(guān)聯(lián)程度。上面數(shù)據(jù)算完是這樣:
還有就是用皮爾遜相關(guān)系數(shù)來表示關(guān)聯(lián)程度,(百度百科)
再或者是求向量的內(nèi)積外積,方法很多。
? ? 1.2為相似的用戶提供推薦物品
? ? ? ? 當(dāng)我們需要對用戶C推薦商品時,首先我們檢查之前的相似度列表,發(fā)現(xiàn)用戶C和用戶E的相似度較高。換句話說這三個用戶是一個群體,擁有相同的偏好。因此,我們可以對用戶C推薦D和E商品。但這里有一個問題。我們不能直接推薦前面商品1和5的商品。因為這些商品用戶C已經(jīng)瀏覽或者購買過了。不能重復(fù)推薦。因此我們要推薦用戶C還沒有接觸過的商品。
? ? ? ? 提取了用戶D和用戶E評價過的另外5件商品A-F。并對不同商品的評分進(jìn)行相似度加權(quán)。按加權(quán)后的結(jié)果對5件商品進(jìn)行排序,然后推薦給用戶C。這樣,用戶C就獲得了與他偏好相似的用戶D和E評價的商品。而在具體的推薦順序和展示上我們依照D和用戶E與用戶C的相似度進(jìn)行排序。
? ? ? ? 以上是基于用戶的協(xié)同過濾算法,這個算法依靠用戶的歷史行為數(shù)據(jù)來計算相關(guān)度。也就是說必須要有一定的數(shù)據(jù)積累(冷啟動問題)。對于新網(wǎng)站或者數(shù)據(jù)量較小的網(wǎng)站,還有一種方法基于物品的協(xié)同過濾算法。
????
2.基于物品的協(xié)同過濾算法Item-based
????基于物品的協(xié)同歐過濾算法與基于用戶的協(xié)同過濾算法很想,將商品和用戶角色互???? 換。通過計算不同用戶對不同物品的評分獲得物品的關(guān)系。基于物品間的關(guān)系對用戶進(jìn)
? ? 相似物品推薦。這里的評分代表用戶對商品的態(tài)度和偏好。簡單來說如果用戶A同時 購買了商品1和商品2,那么說明商品1和商品2的相關(guān)度較高。當(dāng)用戶B也購買了商
1時,可以推薦他商品2。
? ? 實(shí)現(xiàn)過程和上面的user-based幾乎一樣,只是互換角色,細(xì)節(jié)就不說了。但是一定要注意這兩者的區(qū)別,數(shù)據(jù)松散、數(shù)據(jù)量小、冷啟動等問題上。Item比user好很多。建議在紙上畫圖理解。
?
優(yōu)缺點(diǎn)
與傳統(tǒng)文本過濾相比,協(xié)同過濾的優(yōu)點(diǎn)是:
缺點(diǎn):
所以說現(xiàn)實(shí)中,都是用很多種方法混合這來進(jìn)行推薦。
總結(jié)
- 上一篇: 设计模式复习-模板方法模式
- 下一篇: 设计模式复习-外观模式