Amazon SageMakerで「Object2Vec」ビルトインアルゴリズムが使えるようになりました

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

概要

こんにちは、yoshimです。
SageMakerで「Object2Vec」というビルトインアルゴリズムが使えるようになったので、チュートリアルをやってみました。

目次

1.Object2Vecとは

「Object2Vec」とは「高次元のベクトルを、できるだけ情報量を減らさずに次元削減し、類似した物体を近距離に配置する」手法であり、汎用的なアルゴリズムです。
これだけだとよくわからないのでざっくり言うと、「物事の関係性を計算」することができる、というものです。

Object2Vecの紹介ページでは、実用例として下記のものが挙げられていました。
例えば、「動画のリコメンデーション」では「人と動画の関係性」や「動画と動画の関係性」を学習することでリコメンデーションに利用することができるようになります。

  • 動画のリコメンデーション
  • マルチラベルドキュメント分類
  • 文章類似性

「Object2Vec」では、「2つのネットワークを利用している」点が特徴的です。

「Comparator」が2つのネットワークをまとめる役割を果たします。
最終的には、「教師データとして投入された物事の関係性との誤差を最小化しつつ、次元削減をする」というフローになります。

例えば、今回実施する「動画のリコメンデーションのチュートリアル」では、「ユーザー情報」、「動画情報」をそれぞれ異なるネットワークに投入している、といったイメージです。

2.チュートリアルの説明

チュートリアルをやっていく前に、チュートリアルの内容についてご説明します。
今回実施するのは「動画のリコメンデーションのチュートリアル」のチュートリアルですが、このチュートリアルでは、「どのユーザーがどの動画にどのくらいの評価をするか」をINPUTとして「ユーザーが対象の動画に何点の評価値をつけるかの予測」、「対象の動画をユーザーにリコメンドするべきか否か」、「指定した動画にもっとも類似した動画の提案」をOUTPUTとして出力しています。

上記のように色々なことができるのですが、その反面、学習する前の「データの前処理」には注意が必要です。
(今回実施するチュートリアルでも、学習に利用するデータの前処理に結構時間を割いています)

3.実際にやってみた

コードはチュートリアルをそのまま実行していくだけなので、要点となる「INPUTデータ」、「モデルの評価」について記述します。

INPUTデータ

今回のチュートリアルでは「MovieLens 100k」というデータセットを使います。
このデータセットは「1,000人のユーザーが1,700本の映画に対して評価点をつけた」データセットで、合計10万の評価点データになります。
また、各ユーザーは最低でも20本以上の映画に対して評価点をつけています。

詳細はこちらをご参照ください。

モデルの評価:ユーザーが対象の動画に何点の評価値をつけるか

ユーザーが「まだ見ていない動画に対して、何点くらいの評価点をつけるか」を予測するタスクでは、回帰予測をしています。
この予測の精度を既存のアルゴリズムと比較しており、「Object2Vec」は結構いい順位にいます。

*「RMSE」とは、「root mean squared error」の略称で、小さい方が好ましいです。

モデルの評価:対象の動画をユーザーにリコメンドするべきか否か

このタスクは対象の動画をユーザーにリコメンドした場合に、「見る」と予測した場合は「1」を、そうでないなら「0」を返すタスクです。
このタスクでの精度検証は、「validation」データで70%程度の精度が出ていました。

モデルの評価:指定した動画にもっとも類似した動画

このタスクは正解がないため、上記のタスクのような精度評価ができていません。
とりあえず「Terminator」に一番類似している動画は何かな、と試してみたところ「Die Hard」がもっとも類似している、という結果を取得できました。

The closest movie to Terminator, The (1984) in the embedding space is Die Hard (1988)

懐かしいですね。
他にも「Robocop 3」に一番近いのは「Two if by Sea」だったり、「Bad Boys」に一番近いのは「Grumpier Old Men」と言う結果が返って来たりしました。 自分の好みの映画を入れたら、知らない映画がリコメンドされたので、機会があれば見てみたいと思います。

4.まとめ

「Object2Vec」は汎用性が高いアルゴリズムなので、色々使ってみると面白いかもしれません。
ただ、汎用性が高い反面使い方が難しそうなので、早く色々触って試してみようと思いました。

既にチュートリアルが3本公開されているので、皆さんも是非自分で試してみてください。

動画のリコメンデーション
マルチラベルドキュメント分類
文章の類似性の計算