1. 程式人生 > >資料探勘乾貨總結(五)--推薦演算法之CB

資料探勘乾貨總結(五)--推薦演算法之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的深入分析

② 引入ItemUser屬性的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) 如果小明聽的這首歌idt3表中存在那麼直接取出對應的ids即可

ii) 如果小明聽的這首歌idt3表中不存在

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