符号化なし協同アルゴリズムによるパーソナライズされた推奨
3336 ワード
ターゲット
昨日のURLレポートデータからALSモデルを生成します.その後モデルをフロー計算にロードし,リアルタイムURLのアクセスユーザにコンテンツ推薦を行う.全体の流れはSQLを書くだけで(解析をする)、構成をすればできます.
リソースの準備
READMEにダウンロードアドレスがあります
モデルトレーニング
まず、プロファイルals-trainingをコピーし、プロファイルでいくつかのデータをシミュレートしました.URLを仮定すると、itemIdが2の文章がuserId=1のユーザーにアクセスされたことを示します.
その後のSQLはuseridとitemIdを抽出しlabel,featuresを含むテーブルを得る.StreamingProでは、すべてのアルゴリズムの入力がこの仕様に従います.ALSアルゴリズムの場合、labelはuserIdを表し、featuresはuserId、ItemId、ratingの3つのカンマでつづられた文字列である.回帰クラスアルゴリズムでは、カンマでつなぎ合わせた数値です.
最後に,モデルトレーニングはコンポーネントAlgorithmOutputCompositorによって完了した.
pathは出力経路を表す.Algorithmはアルゴリズムを表す.現在als,lr(線形回帰),lr 2(論理回帰)の3つのアルゴリズムのみがサポートされている.その後はどんどん追加されます.
第2のパラメータのセットは、対応するアルゴリズムのいくつかの構成パラメータです.複数のグループを構成し、アルゴリズムは最適なパラメータのセットを自動的に選択してモデルを取得し、対応するpathパスの下に保存することができます.
結果を直接実行できます.
推奨予測
次に、指定したユーザーを推薦します.als-predictを参照.
ユーザの論理を解析するのは上記と同じである.コアモジュールは次のとおりです.
pathはモデルファイルが存在する場所です.recommendUsersForProductsNumは、ユーザーごとにどのくらいのコンテンツを推奨するかを示します.outputTableは出力されたテーブルで、Redisやデータベースに格納したり、フロントエンドプログラムを呼び出したりするのに便利です.
上記の実行スクリプトのプロファイルパスを調整すると、実行できます.たとえば、私のところの結果は次のようになります.
興味のあるシステムに入力することができます.StreamingProは現在ES、ParquetなどのSparkがサポートしているフォーマットを出力としてサポートしています.
ストリーム計算でのデータ推奨
als-streaming-predictを参照して、すべてのパッケージ名の接頭辞を
を選択します.実行スクリプトは次のとおりです.
まとめ
StreamingProでは,アルゴリズムのモデル訓練は,特殊な記憶と見なされるだけである.対応するAlgothrimOutputCompositorを他の出力源に完全に置き換えることができます.
データの予測に対して、私たちはただそれを1つのデータTransformerと見なして、入ってきたデータに基づいて、新しいpredictionフィールドを生成します.
モデルトレーニングも予測もSQLストリームに基づいて行われ、データの流れに完璧に溶け込んでいます.
ふろく
興味のある実装は、コードを参照することができます
昨日のURLレポートデータからALSモデルを生成します.その後モデルをフロー計算にロードし,リアルタイムURLのアクセスユーザにコンテンツ推薦を行う.全体の流れはSQLを書くだけで(解析をする)、構成をすればできます.
リソースの準備
READMEにダウンロードアドレスがあります
モデルトレーニング
まず、プロファイルals-trainingをコピーし、プロファイルでいくつかのデータをシミュレートしました.URLを仮定すると、itemIdが2の文章がuserId=1のユーザーにアクセスされたことを示します.
http://123.com/path?userId=1&itemId=2
その後のSQLはuseridとitemIdを抽出しlabel,featuresを含むテーブルを得る.StreamingProでは、すべてのアルゴリズムの入力がこの仕様に従います.ALSアルゴリズムの場合、labelはuserIdを表し、featuresはuserId、ItemId、ratingの3つのカンマでつづられた文字列である.回帰クラスアルゴリズムでは、カンマでつなぎ合わせた数値です.
最後に,モデルトレーニングはコンポーネントAlgorithmOutputCompositorによって完了した.
{
"name": "streaming.core.compositor.spark.output.AlgorithmOutputCompositor",
"params": [
{
"path": "/tmp/als_log",
"algorithm": "als"
},
{
"rank": 10,
"alpha": 1.0
}
]
}
pathは出力経路を表す.Algorithmはアルゴリズムを表す.現在als,lr(線形回帰),lr 2(論理回帰)の3つのアルゴリズムのみがサポートされている.その後はどんどん追加されます.
第2のパラメータのセットは、対応するアルゴリズムのいくつかの構成パラメータです.複数のグループを構成し、アルゴリズムは最適なパラメータのセットを自動的に選択してモデルを取得し、対応するpathパスの下に保存することができます.
結果を直接実行できます.
./bin/spark-submit \
--class streaming.core.StreamingApp \
--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を参照.
ユーザの論理を解析するのは上記と同じである.コアモジュールは次のとおりです.
{
"name": "streaming.core.compositor.spark.transformation.AlgorithmCompositor",
"params": [
{
"path": "file:///tmp/als_log",
"algorithm": "als",
"outputTableName": "test4",
"recommendUsersForProductsNum": 1
}
]
}
pathはモデルファイルが存在する場所です.recommendUsersForProductsNumは、ユーザーごとにどのくらいのコンテンツを推奨するかを示します.outputTableは出力されたテーブルで、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 \
--class streaming.core.StreamingApp \
--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を他の出力源に完全に置き換えることができます.
データの予測に対して、私たちはただそれを1つのデータTransformerと見なして、入ってきたデータに基づいて、新しいpredictionフィールドを生成します.
モデルトレーニングも予測もSQLストリームに基づいて行われ、データの流れに完璧に溶け込んでいます.
ふろく
興味のある実装は、コードを参照することができます