新聞個性化推薦
1)任務
針對******新聞用戶,基於用戶喜愛,個性化推薦新聞。
2)數據
數據是JSON格式,按照Bodensee協議設計的。
3)方案
方案一:基於協同過濾的新聞推薦
方案二:基於用戶行爲和新聞內容的新聞推薦
目前採用方案一實現
4)基於協同過濾的新聞推薦的技術路線
JSON數據==>mahout可接受的數據格式==>採用item-based的協同過濾==>在hadoop上使用mahout實現協同過濾==>推薦結果在solr創建索引==>實現推薦服務html
mahout是一個開源項目,提供一些可擴展的機器學習領域經典算法的實現,包括協同過濾CF等項目。
solr是一個獨立的企業級搜索服務,基於Lucene的全文搜索服務器,經過創建推薦結果索引,在推薦服務實現時方便查詢推薦結果。算法
這裏有3個服務:
A、解析數據服務--不斷取新數據,並解析成mahout數據格式,加入到模型訓練語料庫中,並從語料庫中移除一個月之前過時的數據;
B、新聞推薦模型訓練服務--模型定時從新訓練,產生推薦結果文件,並索引到SOLR裏;
C、對外提供推薦服務--經過調用推薦接口服務,實現新聞個性化推薦。windows
5)推薦服務service接口設計
輸入:用戶的clientID
輸出:推薦結果列表
List<NewsRecommendResult> recommender(String clientID)
NewsRecommendResult設計以下:
public class NewsRecommendResult {
private String clientID;//用戶clientID
private List<String> history;//用戶最近看過的新聞
private List<String> recommend_list;//推薦給用戶的新聞
... ...
}
6)SOLR索引推薦結果
查詢clientID是f5cab4cfdf1a6307d80df5ac08112f78的最新版本的推薦結果: {
"response": {
"numFound": 1,
"start": 0,
"docs": [ {
"recommender_version": 2,
"userID": "-6183871622198485712",
"clientID": "f5cab4cfdf1a6307d80df5ac08112f78",
"history": [
"http://soccer.nbcsports.com/2015/11/30/porters-timbers-just-wanted-in-the-playoffs-now-theyre-90-mins-away-from-a-title/ en_US",
"http://observer.com/2015/11/the-good-wife-recap-7x9-too-many-people-of-color/ en_US",
"http://www.wsj.com/articles/the-race-to-create-elon-musks-hyperloop-heats-up-1448899356?mod=rss_technology en_US",
"http://www.makeuseof.com/tag/create-iso-image-windows-system/ en_US",
"https://www.washingtonpost.com/sports/highschools/the-post-top-20-stone-bridge-patuxent-join-the-rankings-after-gritty-playoff-wins/2015/11/30/453210ec-9744-11e5-8917-653b65c809eb_story.html en_US",
"http://www.forbes.com/sites/simonthompson/2015/11/29/the-forced-awakens-or-why-some-star-wars-fans-feel-less-is-more/ en_US",
"http://screenrant.com/revenant-tv-trailer-leonardo-dicaprio/ en_US",
"http://sn.gem.is/content/target-site-crashes-cyber-monday?mob=1 en_US"
],
"recommend_list": [
"http://observer.com/2015/11/the-good-wife-recap-7x9-too-many-people-of-color/ 1.0",
"http://www.motorauthority.com/news/1101183_ferrari-laferrari-meets-its-predecessors-video 1.0",
"http://sports.yahoo.com/news/why-kobe-bryant-decided-it-was-time-to-retire-070605697.html 1.0"
],
"id": "73792599-cb8e-4d84-ab7e-fda2928039e2",
"_version_": 1520514787377676300
}
]
}
}
7)mahout協同過濾(item-based)
包含下面6個過程:
求出用戶矩陣==>求出項目矩陣==>求出項目矩陣的平方和==>根據項目矩陣、項目矩陣平方和求出項目類似度矩陣==>整合用戶矩陣、項目類似度矩陣,獲得用戶-項目類似度矩陣==>根據用戶-項目類似度矩陣求出用戶推薦矩陣。
未考慮時效性,待改進
8)待補充中服務器