資料探勘乾貨總結(五)--推薦演算法之CB
本文共計927字,預計閱讀時長六分鐘
推薦演算法(一)--CB演算法
一、推薦的本質
推薦分為非個性化和個性化,非個性化推薦比如各類榜單,而本系列主要介紹個性化推薦,即:
在合適的場景,合適的時機,通過合適的渠道,把合適的內容,推薦給合適的使用者
二、推薦演算法的種類
1. 基於內容Content Based
2. 基於協同Collaboration Filtering
– User Based CF
– Item Based CF
三、CB演算法詳解
1. Content的內容
① 只引入Item屬性的Content Based推薦
優點:
a.提升推薦結果的相關性
b結果可解釋
c.推薦結果容易被使用者感知
缺點:
a.無個性化
b.依賴於對item的深入分析
② 引入Item和User屬性的Content Based推薦
在上一步的item提取特徵之後的基礎上,加上了使用者的一些行為資料。需要注意,行為資料也需要特徵化後才能和之前的item特徵放在一起進行分析,其中可能會涉及到一些one-hot編碼的問題,這裡不展開,需要了解的話,見:
優點:
a.使用者模型刻畫了使用者興趣需求
b.推薦形式多樣,具有個性化
c.結果可解釋
缺點:
a.推薦精度低
b.馬太效應
c.使用者行為稀疏,導致覆蓋率低
2. 需求舉例(僅基於item的特徵):
使用者小明聽了一首歌,每首歌(item)的資料屬性包括編號(id)和內容(content),如:
id content
id1 王錚亮時間都去哪了 《私人訂製》插曲
... ...
根據CB,向他推薦10首歌
3. 解決步驟和核心程式碼:
① 對歌曲庫中的每首歌content進行分詞,並用tf_idf賦值
+++jieba_score_udf.py+++
# coding=utf-8
import sys
reload(sys)
sys.setdefaultencoding('utf-8')
import jieba.analyse
import jieba
import json
import re
#正則匹配中文
pattern = re.compile(u'[\u4e00-\u9fa5]')
#切詞,並用tf_idf賦值
for line in sys.stdin:
cols = line.strip().split('\t')
id = cols[0]
words_list = jieba.analyse.extract_tags(cols[1],topK=10,withWeight=True)
for (word,score) in words_list:
if len(re.findall(pattern,word)) != 0:
print '%s\t%s\t%s' % (id,word,score)
大致得到(資料是隨便編的) t1
id word score
id1 時間 0.1
id1 王錚亮 0.5
id1 私人 0.5
id2 時間 0.4
id2 煮 0.4
id2 雨 0.1
id3 私人 0.3
... ... ...
② 在hive中呼叫這個udf,得到倒排表
hive> add 'udfpath/jieba_score_udf.py'
hive> select
hive> word,collect_list(concat_ws(':',id,score)) as id_score_list
hive> from
hive> (select transform(id,desc) using 'python jieba_score_udf.py' as(id,word,score)
hive> from badou.musics sort by score desc
hive> ) t
hive> group by word;
大致得到(資料是隨便編的) t2
word id_score_list
王錚亮 [id1:0.5,...]
時間 [id2:0.4, id1:0.1...]
私人 [id1:0.5, id3:0.3,...]
... ...
③ 得到ids推薦列表
hive> select tt1.id,collect_list(concat_ws('_', tt2.id, nscore)) ids
hive> from
hive> (select tt1.id, tt2.id, sum(tt2.score) nscore
hive> from
hive> (select tt1.id, tt2.id, tt2.score new_score
hive> from
hive> (select id, word from t1) tt1
hive> join
hive> (select word, id, score from t1) tt2
hive> on tt1.word = tt2.word
hive> ) tt3
hive> where tt1.id <> tt2.id
hive> group by tt1.id,tt2.id
hive> order by nscore desc) tt4;
大致得到(資料是隨便編的) t3
id ids
id1 [id2:0.5,...]
id2 [id1:0.5, id3:0.1...]
id3 [id2:0.5, id1:0.3,...]
... ...
④ 推薦
i) 如果小明聽的這首歌id在t3表中存在,那麼直接取出對應的ids即可
ii) 如果小明聽的這首歌id在t3表中不存在。
a. 需要線上對其content做分詞,得到一個word列表:(word1, word2, word3,...)
b. 在t1中找出對應的id分數,求和排序,取top10即可
hive> select id, sum(score) nscore
hive> from
hive> (select id, word, score from t1
hive> where word in (word1, word2, word3,...) tt
hive> group by id
hive> order by nscore desc
hive> limit 10;
或者在t2倒排表中選取對應的ids,解析後求和排序,結果都一樣,但可能會更快一點
相關推薦
資料探勘乾貨總結(五)--推薦演算法之CB
本文共計927字,預計閱讀時長六分鐘推薦演算法(一)--CB演算法一、推薦的本質推薦分為非個性化和個性化,非個性化推薦比如各類榜單,而本系列主要介紹個性化推薦,即:在合適的場景,合適的時機,通過合適的渠道,把合適的內容,推薦給合適的使用者二、推薦演算法的種類1. 基於內容Co
資料探勘乾貨總結(六)--推薦演算法之CF
本文共計1245字,預計閱讀時長八分鐘推薦演算法(二)--CF演算法一、推薦的本質推薦分為非個性化和個性化,非個性化推薦比如各類榜單,而本系列主要介紹個性化推薦,即:在合適的場景,合適的時機,通過合適的渠道,把合適的內容,推薦給合適的使用者二、推薦演算法的種類1. 基於內容C
資料探勘乾貨總結(一)--NLP基礎
本文共計1463字,預計閱讀時長八分鐘 NLP-基礎和中文分詞 一、本質 NLP (Natural Language Processing)自然語言處理是一門研究計算機處理人類語言的技術 二、NLP用來解決什麼問題 語音合成(Speech synth
資料探勘乾貨總結(二)--NLP進階-詳解Jieba分詞工具
NLP進階-詳解Jieba分詞工具 一、Jieba分詞工具 1. 三種模式 • 精確模式:將句子最精確的分開,適合文字分析 • 全模式:句子中所有可以成詞的詞語都掃描出來,速度快,不能解決歧義 • 搜尋引擎模式:在精確模式基礎上,對長詞再次切分,提高召回 2.實現的演算法 • 基於Tri
MADlib——基於SQL的資料探勘解決方案(26)——聚類之k-means方法
“物以類聚,人以群分”,其核心思想就是聚類。所謂聚類,就是將相似的事物聚集在一起,而將不相似的事物劃分到不同的類別的過程,是資料分析中十分重要的一種手段。比如古典生物學中,人們通過物種的形貌特徵將其分門別類,可以說就是一種樸素的人工聚類。如此,我們就可以將世界
Python資料探勘學習筆記(12)淘寶圖片爬蟲實戰
所謂圖片爬蟲,即是從網際網路中自動把對方伺服器上的圖片爬下來的爬蟲程式。 一、圖片爬蟲前的網頁連結分析 1.首先開啟淘寶首頁,在搜尋框中輸入關鍵詞,如“神舟”,在搜尋結果介面中點選下一頁,分別開啟第一頁,第二頁,第三頁的搜尋結果,並記下每一頁結果的URL至記
Python資料探勘學習筆記(1)文字挖掘入門
一、準備階段: (1)開啟cmd,pip安裝jieba(pip install jieba) (2)開啟python安裝目錄的Lib->site-packages->jieba,開啟dict.txt,可以看到這是jieba模組的詞典: 每
MADlib——基於SQL的資料探勘解決方案(17)——迴歸之Cox比例風險迴歸
一、Cox比例風險迴歸簡介 Cox比例風險迴歸模型(Cox’s proportional hazards regression model),簡稱Cox迴歸模型,由英國統計學家D.R.Cox於1972年提出,主要用於腫瘤和其它慢性病的預後分析,也可用於佇列研究的
MADlib——基於SQL的資料探勘解決方案(21)——分類之KNN
一、分類方法概要1. 分類的概念 資料探勘中分類的目的是學會一個分類函式或分類模型,該模型能把資料庫中的資料項對映到給定類別中的某一個。分類可描述如下:輸入資料,或稱訓練集(Training Set),是由一條條資料庫記錄(Record)組成的。每一條記錄包含
MADlib——基於SQL的資料探勘解決方案(8)——資料探索之描述性統計
對資料進行統計是從定量的角度去探索資料,是最基本的資料探索方式,其主要目的是瞭解資料從統計學上反映的量的特徵,以便我們更好地認識這些將要被挖掘的資料。 我們先要清楚兩個關於統計學的基本概念:總體和樣本。統計的總體是人們研究物件的全體,又稱母體,如
資料探勘 文字分類(七)特徵提取
上一篇我們做完了詞頻統計,下面就該提取文字特徵了。其實詞的頻率就是文字最重要的特徵了,但是我們如果只靠詞的頻率去判斷文字的分類的話,顯然正確率是很低的。 當然,文字的特徵提取有很多辦法了,我上這門課程老師著重介紹的是TF-IDF和卡方校驗兩種
資料探勘 文字分類 (八)訓練和測試
今天來個大結局吧,我們有了chi值或者TF-IDF值以後,就可以拿他們用lib-svm工具進行訓練了。 當然我們還要對資料進行一些標準化處理,我們需要將某詞與該詞對應的值作為一個向量處理,這個就是特徵向量了。 舉個例子,
資料探勘 文字分類(二)蒐集中文語料庫與ICTCLAS分詞
在上一篇部落格中簡單介紹了實驗環境和流程,這一篇我們繼續。 第一步,下載搜狗中文語料庫。連結:http://www.sogou.com/labs/dl/c.html 我們下載
關於2015阿里移動推薦演算法大賽的總結(二)——推薦演算法
雖然開始走錯了路,但是也學到了東西,美團技術團隊的文件還是不錯的,喜歡的童鞋可以經常去瞅瞅,後面我會給連結的~~~~ —————————————————————————————————————————————————————————————— 具體流程 基本流程如
社交網站的資料探勘與分析(高清版)PDF
社交網站的資料探勘與分析(高清版)PDF百度網盤連結:https://pan.baidu.com/s/1ia57ZMxvdTtq7eragsITzg 提取碼:5hth 複製這段內容後開啟百度網盤手機App,操作更方便哦內容簡介 · · · · · · Facebook、Twitter和LinkedIn產生了大
機器學習&資料探勘筆記_16(常見面試之機器學習演算法思想簡單梳理)
前言: 找工作時(IT行業),除了常見的軟體開發以外,機器學習崗位也可以當作是一個選擇,不少計算機方向的研究生都會接觸這個,如果你的研究方向是機器學習/資料探勘之類,且又對其非常感興趣的話,可以考慮考慮該崗位,畢竟在機器智慧沒達到人類水平之前,機器學習可以作為一種重要手段,而隨著科技的不斷髮展,
資料探勘一般流程(資料清洗,特徵提取,建模,調參)
最近一直在實習,好長時間沒更新部落格了。哎,懶惰之心不可有啊!! 實習的崗位是資料探勘相關的,所以正好把到目前為止實習期間遇到的一些問題、學到的一些東西總結一下,並參考了一些部落格,自我提升。嘿嘿嘿~
《大話資料結構》讀後總結(五)
開發十年,就只剩下這套架構體系了! >>>
設計模式學習總結(五)創建者模式(Builder)
lose etl bfc .get splay hid 定義 string ogr 創建者模式,主要針對某些產品有類似的生產步驟,且有需要有先後順序的進行各個部件的生成。 一、示例展示: 通過學習及總結,以下是我完成的創建者模式的示例: 1.創建產品類:La
設計模式總結 (五)
param href com 參數化 耦合度 實現 需要 進行 導致 命令模式: 將一個請求封裝為一個對象,從而使你可用不同的請求對客戶進行參數化;對請求排隊或記錄請求日誌,以及支持可取消的操作。例:http://www.cnblogs.com/wangjq/archiv