Re:ゼロから始めるML生活

どちらかといえばエミリア派です

recsys-pythonをやる (第1章 評価履歴・第2章 評価値行列)

この記事は (1人で)基礎から学ぶ推薦システム Advent Calendar 2022の1日目の記事です。

2022年に、こちらの問題集が公開されました。

recsyslab.github.io

こちらは下記の書籍に関連する問題集らしく、下記の文献を読みながらやってみたのでそのメモです。

recsys-pythonとは

まずはじめに、recsys-pythonがどのようなものなのかを見てみます。

recsys-pythonはPythonによる推薦システムの演習問題集です。推薦システムの基本である、評価履歴や評価値行列の扱いから、内容ベース推薦システム、近傍ベース協調フィルタリング、推薦システムの評価などに関する問題を取り揃えています。現時点では、13章構成で全163問用意しています。今後、内容を変更したり、問題を追加、削除したりすることもあります。 recsys-python

163問、、、盛りだくさんですね。

ちなみに、問題の模範解答もついています。

これなら、間違っているかどうかも自分でわかって非常にやりやすそうですね。 (答えがないと、正しいかわからなくてモヤモヤするし)

どうやら13章構成らしいので、1日1章やっていけば2週間かからず終わるはず? ということで、まずは1日2章ずつ地道にやってみようと思います。

第1章 評価履歴

淡々と問題を解いてくのもできるんですが、ちょっとだけこの章で扱う内容について触れておきます。

評価履歴とは

推薦システムには、大きく下記の2種類の概念が登場します。

  • ユーザー
    • 推薦システムを利用する人
  • アイテム
    • 推薦システムに推薦されるもの

それぞれのユーザーとアイテムがどのような関係になっているのを評価値としています。

例としては「user Aがitem 1に対して5段階評価の4をつけた」のような記録だったりします。 また、明示的(explicit)に評価値を付けるのではなく、「item 2のページをクリックした」などの暗黙的(implicit)な情報を評価値とすることもあります。

明示的・暗黙的のどちらせよ、実際にユーザーがアイテムに対して行った評価の履歴は推薦を考える上で非常に重要な情報であり、それを評価履歴と呼んでいたりします。

やってみる

1章はnumpyの使い方が主の話だったので、シンプルにやるだけです。

recsyslab.github.io

第2章 評価値行列

評価値行列とは?

1章で書いたように、ユーザーがアイテムに対して評価した情報を評価値と呼んでいました。 このユーザー、アイテム、評価値の関係性は評価値行列として表現することができます。

推薦システムは

  • ユーザーが評価していないアイテムについてユーザーの評価値を予測する
  • ユーザーが評価していないアイテムの中かユーザーの嗜好に合う順を予測する

の大きく2つのタスクがあり、これらはおおよそ下記の予測タスクを行うことになります。

  • 評価値行列の空欄を埋める
  • 評価値行列の値を降順になるように並べる

こういったタスクを解く上で、評価値行列という概念が登場してきたりします。

やってみる

recsyslab.github.io

2章も、多少評価値に関する式が出てきますが基本的にはnumpyをゴリゴリ書いていけば終わるはず。

参考文献

この記事を書くにあたって下記の文献を参考にさせていただきました。

recsyslab.github.io

感想

最初の章なんでこんなもんでしょう。 numpy、実はあんまり得意じゃないので、そういう意味では勉強になりました。