2016-07-28 7 views
1

評価を使用せずに(Movie Ratingsサンプルデータベースを使用して)推奨事項を作成するための実験を構築しようとしています。私は、ユーザーが特定の映画を評価した場合、映画を評価したユーザーによって評価された他の映画に興味があると考えています。評価なしの推奨事項(Azure ML)

たとえば、レーティングが1(データベースに存在する)または0(存在しない)と考えることができますが、その場合、これを反映するために初期データをどのように変換しますか?

この種のシナリオに関する例やチュートリアルは見つかりませんでしたが、どのように進行するのか分かりません。私はそれをアルゴリズムに注入する前にデータを変換すべきですか?そして/または私が使用すべき特定のアルゴリズムがありますか?

+0

「初期データを変換する」とはどういう意味ですか?あなたが示唆しているような評価のバイナリ表現は、簡単な実験では十分です(良いもの)。そこから、単にコラボレーティブなフィルタリングの簡単な実装を調べることができます。 – carrdelling

+0

私の混乱は、そこにないデータに値を関連付ける方法ともっと関係しています。なぜなら、「0」のレーティングを持つ唯一の方法はデータベースではないからですデータに存在する... –

+0

スパース行列(ユーザーXムービー)に値を格納することができます。あなたは0を表現する必要はありません – carrdelling

答えて

1

Matchbox RecommenderをAMLで使用する場合は、であるいくつかのユーザームービーペアを識別する必要があります。これらのデータセットには、ゼロ。 (上記のように、実際のユーザームービーのペアがすべて1になるように設定していると仮定します)。

ランダムな候補ペアを作成し、トレーニングの不在を確認することをお勧めしますExecute R(またはPython)スクリプトモジュール内のデータ。私はあなたのデータセットの機能の名前を知っているが、ここではそれを行うにはRでいくつかの擬似コードではありません。

library(dplyr) 
df <- maml.mapInputPort(1) # input dataset of observed user-movie pairs 
all_movies <- unique(df[['movie']]) 
all_users <- unique(df[['user']]) 
n <- 30 # number of random pairs to start with 

negative_observations <- data.frame(movie = sample(all_movies, n, replace=TRUE), 
            user = sample(all_users, n, replace=TRUE), 
            rating = rep(0, n))   
acceptable_negative_observations <- anti_join(unique(negative_observations), df, by=c('movie', 'user')) 
df <- rbind(df, acceptable_negative_observations) 
maml.mapOutputPort("df"); 

また、あなたは偽のゼロを追加する必要はありませんassociation rule learningのような方法を試みることができます評価。 Martin MachacはCortana Intelligence GalleryのR/AMLでこれを行う方法のnice exampleを投稿しました。

+0

しかし、データがすべての組み合わせに対して存在しない場合、デフォルトの動作は何ですか? Azure MLによって固定された評価= 1であり、これは..計算して行データセットに追加するものは何もありません(評価= 0) –