基于內(nèi)存,基于模型的協(xié)同過濾
https://www.zhihu.com/question/23838165
主要講協(xié)同過濾,基于內(nèi)存的(推相似用戶喜歡的,或者退喜歡用戶相似的),基于模型的(直接算這個大矩陣)
讓我想到了技術(shù)棧的構(gòu)建:正排:技術(shù)/知識/理論:場景1=邊界1,場景2=邊界2,對于這個技術(shù)/知識/理論理解的越深,對應(yīng)的場景和邊界對越多,其實心里會自動維持一個倒排,當(dāng)發(fā)現(xiàn)某個場景或者問題的時候,去查這個倒排,找到對應(yīng)的解決方案
而對于技術(shù)/知識/理論的理解層次:tutorial(興趣)-> feature(核心和場景)-> API(全面使用)-> 源碼(擴展)
1 基于用戶的協(xié)同過濾算法
- 解決用戶向量稀疏
稀疏編碼方式 - 解決用戶復(fù)雜度比較
以采樣算法來計算,DIMSUM2 - 調(diào)整
懲罰熱門物品的喜歡程度
增加喜歡程度的時間衰減(喜歡的程度跟時間衰減相關(guān))
對用戶(用戶記錄比較少)相似度做平滑
2 基于物品的協(xié)同過濾算法
- 用戶協(xié)同過濾的問題
用戶多,算起來慢
用戶品味變化快
用戶與用戶的共同消費行為會比較少,一般都是熱門物品 - 怎么解決
物品遠(yuǎn)遠(yuǎn)少于用戶數(shù)量,計算物品直接相似度比較容易,物品直接相似度也比較不易改變
物品對應(yīng)的消費者數(shù)量較大,計算出來的物品相似度比用戶相似度更可靠 - 具體算法
構(gòu)建用戶物品矩陣,矩陣元素為消費行為或者評分
計算物品相似度(只計算兩個物品的公共用戶就行),物品維度中心化物品減去物品向量平均值減少特殊粉絲群體刷分,用戶維度中心化矩陣元素減去用戶向量的平均值
使用TopK和相關(guān)推薦
求余弦相似度 - slope 適用于評分矩陣
相似度置信問題,兩個物品評分太少比如只有1個用戶共同喜歡,算評分的時候,要把共同評分人數(shù)權(quán)重加上去
3 相似度算法
- 本質(zhì)
如果兩個物體很近,會產(chǎn)生相似的動作
有近鄰(協(xié)同過濾)方法和模型(機器學(xué)習(xí))方法 - 相似度算法
歐式距離,是一個絕對值,加1取倒數(shù)是0-1的相似度,一般是客觀值
余弦相似度,角度問題,為了解決長度問題(增加減上均值的操作)
皮爾遜相關(guān)系數(shù),為了計算趨勢向量的余弦相似度
Jaccard相似度,布爾型向量 - 向量化計算
使用向量化工具快速計算向量間的計算方法