關於小改CF協同過濾至MapReducer上的一些心得

至上次重寫ID3 MR版以後,手賤繼續嘗試CF。以前耳聞CF這兩年內很是火,論內某大神也給了單機版(90%代碼來自於其)。因此想試試可否改到MR上。總體來講,CF自己的機制以類似性爲核心,與迭代調用幾乎無關聯。因此在MR上的表現,未必能徹底發揮MR做用。基本上是線性路子,一走到底。原先網上也有很多CF的介紹,不過以文文圖圖居多,對CF的時序性邏輯表達較少,講的比較隱晦,如今經過代碼剖析從新將其展示在你們面前(純粹理論此處略過):ios

先貼圖,貼圖是王道:git

1,整個MR過程其實與單機版90%重疊。僅指望在Mapper過程當中,儘量地先構建後評分矩陣,減小Reducer壓力。github

2,與大多數機器學習特性同樣,既指望用小樣原本預測將來。本想在Mapper 過程當中同時構建neighbour,可是若是不是太過追求最終成功率,能夠值得一試。app

3,對於CF中以用戶平均分做爲一個大結果因素這件事,不是很贊同,多少顯的有些粗糙。應該還有更好地觀測手法,比方說標差、正態、二項式都是很好的選擇。機器學習

3,爲了加快文本讀取速度,取消了標入的同步。std::ios::sync_with_stdio(false);學習

4,最終結果以下:blog

5,原始文本以下:get

6,源代碼以下:同步

https://github.com/zacard-orc/Zacard_CFit

望各位看官手下留情。。。。^)^

相關文章
相關標籤/搜索