データの種類 |
テキスト
数値
表
|
データの変数(パラメーター)の変数名 |
ユーザーがビデオに対して出した評価|AIV_RATING|AIR_ITEMS|ユーザーコード|各ビデオのテキスト情報|ビデオコード |
データの概要説明 |
データ自体は二つのテキストファイルからなります。 aiv_rating.txtにはユーザーがビデオへの評価を記録している。その様式は次のようになる: ユーザーコード::ビデオコード::評価点(1?5までの整数値) その一例:A3CAMPJIP31VCB::B0048ZXXIO::5.0 評価項目数:583,933 ? ? ユーザーの数:37,126 air_items.txtには各ビデオのテキスト情報(ジャンル、ユーザーのレビュー)などが記されている。 |
想定しているデータの分析・シミュレーションプロセス |
例えば知っているデータに基づいてユーザーに彼が好きであろうという商品を勧めようとする。
シンプルに考えると、各ユーザーが出している評価をベクトルとして考える(評価していない商品を0とする)
例えば、ビデオが10個のとき、ユーザーAがビデオ2に対して5の評価を出し、ビデオ7に対して3の評価を出したとする、この場合評価ベクトルは次のようになる:
[0,0,5,0,0,0,3,0,0,0]
このようにユーザーそれぞれの評価ベクトルをもってユーザー間のコサイン類似度を算出できる。ユーザーAに薦めるとしたら、彼と評価傾向が最も近いユーザーたちのことを参考にすれば良いので、コサイン類似度にKNN法を適用すれば良い。 |
想定しているデータの分析・シミュレーションプロセスの結果 (データ分析結果/ツールの出力/典型例など) |
データ全体の9割を訓練用データとして、その残りの1割をテストデータというふうに分けて、プログラムを書いて学習させると、
precision:81% recall:74%
となりました。 |
上記の分析・シミュレーションプロセス以外に期待する分析 |
上記の分析には二つの問題点が考えられる。
一番目の問題点はテキストについては利用できていない。
二番目の問題点は実際の評価マトリックスRは大規模疎行列である:
つまりユーザーベクトルは何万次元に対して、ほとんどの要素の値は0である。(ユーザーは全部ビデオの中のほんの一部に対してしか評価していないから)このためコサイン類似度は算出しても無意味である。
解決方法:
一番目の問題点の解決法:テキストのままでは処理できないから、word2vecのライブラリーを使いベクトルに変換するというふうに考える。そしてこれらをconvolutional neural networkに入れて潜在特徴ベクトルを抽出する。だが実際このようにやったりメモリーオバーになったため、先にtf-idf法を用いて処理し上位5000だけ取り出しCNNで訓練することにした(そのほかの単語のウェートがものすごく小さいため無視して良い)
二番目の問題点の解決法:2008年にProbabilistic Matrix Factorizationという論文の中で疎行列の評価行列Rに対処するため、Rを行列UとVの積で近似することを提案しました。詳しく記述できないが、今の問題に適用するとLという損失関数を定義し、これはRとUVの差、CNNで訓練したビデオの潜在ベクトル、正則項この三つで計算でき、Lの最適化問題に帰着できる。損失関数Lの最小化問題を考えるため確率的勾配降下法を適用する。 |
コメントフォーム