根據昨天的url上報資料生成als模型。之後將模型載入到流式計算中,對實時url的訪問使用者進行內容推薦。整個流程只需要你寫寫sql(做解析),弄弄配置就搞定。
首先我們拷貝乙份配置檔案
als-training,我在配置檔案裡模擬了一些資料,假設是一些url,大體如下,表示itemid 為2的文章被userid=1的使用者訪問了。
之後的sql就是抽取出userid 和itemid,然後得到乙個包含label, features 的表。在streamingpro中,所有的的演算法的輸入都會遵循這個規範。對於als演算法而言,label 表示userid, features則是userid,itemid,rating 三個按逗號拼接的字串。對於回歸類演算法,則是逗號拼接的數字。
最後通過元件algorithmoutputcompositor 完成模型訓練。
,
]}
path表示輸出路徑。 algorithm 表示演算法。目前只支援 als,lr(線性回歸),lr2(邏輯回歸)三種演算法。後續會不斷新增。
第二組引數則是對應演算法的一些配置引數。你可以配置多組,演算法自動回選擇最優的一組引數得到模型,並且儲存到對應的path路徑下。
你可以直接執行得到結果:
./bin/spark-submit \
--master local[2] \
/tmp/streamingpro-0.3.2-snapshot-online-mllib-1.6.1.jar \
-streaming.name test \
-streaming.platform spark \
-streaming.job.file.path file://tmp/strategy.v2.json
接著我們要給指定的使用者進行推薦。參看 als-predict。
解析出使用者的邏輯是和上面的是一樣的。裡面的核心模組是:
]}
path 是模型檔案所在的位置。recommendusersforproductsnum 表示對每個使用者推薦多少內容。outputtablename是輸出的表, 方便後續繼續操作,比如儲存到redis或者資料庫中,方便前端程式做呼叫。
+----+----+--------------------+
|user|item| ratings|
+----+----+--------------------+
| 3| 2|[[2,3,0.900332472...|
| 2| 3|[[2,2,0.900333589...|
| 2| 2|[[2,2,0.900333589...|
+----+----+--------------------+
你可以輸入到任何你感興趣的系統中,streamingpro目前支援es,parquet等spark已經支援的格式作為輸出。 參看
als-streaming-predict,將所有的包名字首從
streaming.core.compositor.spark
轉換為streaming.core.compositor.spark.streaming
即可支援流式。執行指令碼如下:
./bin/spark-submit \
--name "join" \
--master local[2] \
/tmp/streamingpro-0.3.2-snapshot-online-mllib-1.6.1.jar \
-streaming.name test \
-streaming.job.file.path file://tmp/strategy.v2.json
在streamingpro中,乙個演算法的模型訓練,僅僅被看做乙個特殊的儲存。我們完全可以將對應的algothrimoutputcompositor換成 其他的輸出源。
而對於資料的**,我們僅僅是把它看做乙個資料transformer,根據進來的資料,新生成乙個prediction欄位。
無論是模型訓練還是**,都是基於sql流來完成的,完美的融入到了資料的流程當中。
感興趣實現的,可以參考
個性化推薦演算法 協同過濾
sij 物品i 物品j 的相似度。分子 瀏覽過物品i 與 瀏覽過物品j的使用者的交集。分母 瀏覽過物品i 與 瀏覽過物品j的使用者的並集。懲罰熱門物品的相似度 puj 推薦物品j給使用者u的分值。sij 物品i 物品j 的相似度。ruj 使用者u對物品j的評分 一般取使用者最近瀏覽過的物品i 5個左...
利用tensorflow實現自編碼
1 原理 監督神經網路的本質就是對特徵的不斷學習挖掘的過程,而中間層就可以理解為對上一層特徵的提取,自編碼就是對神經網路中間層的提取,所以我們可以把高維的資料經過幾層對映到低維,在進行還原的過程 2 測試資料 構建2個三維的球,將其對映到2維,檢視資料分布 def make ball r 2,a 0...
Hadoop實現協同過濾演算法
step1 static class step1 reducer extends reducer step2 按使用者分組,計算所有物品出現的組合列表,得到使用者對物品的喜愛度得分矩陣 static class step2 reducer extends reducer step3 step4 pr...