Schooの動画レコメンドについて

#この記事は
2016年 Schoo Advent Calendar 4日目の記事です。
今日はSchooの動画のレコメンドを作るときに通ってきた道をご紹介いたします。

Schooは「Web業界で働くためのオンライン動画学習サービス」Schoo(社名と同名)を運営しており、基本的には毎日、自社スタジオで撮影した授業を生放送で配信しています。

Schooでの動画レコメンドは、現在約3千本弱あるこれらの動画を、それを見たい人に適切に提供するための方法のひとつとして検討を行いました。

ちなみに12/5の週の放送予定授業はこちら。 https://schoo.jp/calendar?d=2016-12-05
![schoo_calendar.png](https://qiita-image-store.s3.amazonaws.com/0/17027/09205a94-ccc4-7cb2-d5da-c8c1b3c0c6e9.png)

#有名なレコメンドについて
スクーのお話をする前に、いわゆる「レコメンド機能」について、簡単にみてみます。
レコメンドというと、とくにAmazonなどのECサイトで目にしたことがある方が多いと思います。

![amazonオススメ.png](https://qiita-image-store.s3.amazonaws.com/0/17027/8948f16c-c117-ca08-6835-bbfcd049f6dc.png)

ファイナルファンタジーを購入したからでしょうか、アルティマニア(攻略本)がオススメされています。

Schooと同じ動画で言うと、YouTubeやNetflixなどのサービスもレコメンドに力を入れていて、現在それぞれのトップページにならんでいる動画は、かなりアカウントごとにカスタマイズされているのではないでしょうか。

このように機能としてはよく目にするレコメンドですが、裏側はいろいろなアルゴリズムや、その組み合わせ、そしてそのサービス内で独特のルールによって独自の実装になっており、数字を見ながら様々な調整が行われています。

Schooも増えてきた動画をレコメンドによって整理しようと思いましたが、少しここまでに上げてきたサービスとは性質が違うことが、よくある協調フィルタリングやコンテンツベースフィルタリングでレコメンドしようとしたときに見えてきました。

#学習動画のレコメンドについて
## 協調フィルタリング
簡単に言うと、サービス上のAさんとBさんが似たような動き(動画の視聴、お気に入りなど)をサイト上で行っていた時、AさんとBさんを似たモチベーションを持ったユーザーと考え、Aさんの見たものをBさんにオススメするというような方法があります。

これが学習動画のSchooの場合、少しむずかしいケースがありました。

現在入門系の動画が多いため、ユーザーも未経験で「これから学んでいくぞ！」という方が多くいらっしゃいます。これをそのまま適用した場合、Webデザイナーになるための動画をWebデザインをまだあまり学んでいない人の視聴履歴などから、おすすめしてしまうことになります。

例えば、「インフラエンジニアになりたい人」の視聴履歴を取得し、インフラエンジニアになりたい人向けの動画をレコメンドしようとしたときに、インフラ的な内容の授業よりもキャッチーな「イラストレーターになりたい人」向けの授業が多く出てきてしまうというようなことがありました。
(もちろんイラストレーター向けの授業がわるいわけではなく、実際におもしろいです)
https://schoo.jp/class/3095
![ilustrator.png](https://qiita-image-store.s3.amazonaws.com/0/17027/7cebf8ce-d66f-ccbe-1e36-c42cb67e0534.png)

## コンテンツベースフィルタリング
あるユーザーが、特定のジャンルのコンテンツ(例えばアクション映画)を好んで見ていた場合、そのユーザーには、アクション映画をレコメンドするという方法があります。

Schooの動画にも、ジャンル(カテゴリ)があります。特定のカテゴリの動画を視聴しているユーザーに、同じタグの動画をレコメンドするのは一見よさそうです。

webデザイナー志望の方向けに、webデザイナー系の動画が出るようになりましたが、ひとくちにwebデザインと言っても、初級者向けの技術と、上級者向けの技術がありますよね。

また、webデザイナーになるために確実に押さえておきたい単元もあります。HTML, CSSやphotoshopなどのツールの使い方などです。よりそのユーザーの見るべきものをレコメンドに出すために、これらをチューニングしていく想像をしていくなかで思いました。

「もうプロのwebデザイナーの人がつくった動画のリストを出すのが一番なのではないか…」と。

学習においては、学習の順番や、何を学習するのかということが大切なため、映画のようなそれぞれが並列なコンテンツとは意味合いが違ったのでした。

(webデザインにかかわるいろいろな授業)
![web_designer.png](https://qiita-image-store.s3.amazonaws.com/0/17027/4b6ddad8-0ca8-733e-8926-29e75f26fcf4.png)

# 結局どうしたか
もともとの課題としては、授業数が多く、例えばWebデザイナーになりたい人が何を見れば良いのかわからない状態がありました。これらをユーザーの目線で整理して、「この問題に関しては」別の方法で解決するのがよいという方向で改善を続けています。

まず、以前は3000本弱の動画がそれぞれ独立した形でサービス上にあったのを、コースという複数の授業からなる概念にまとめて表示するようにして、それぞれの動画がバラバラに表示されている状態を解消しました。

また、それぞれの授業に曖昧についていたタグを整理して、タグから授業を探しやすいようにアップデートしました。

初心者のユーザーには、webデザイナーのお仕事の全体感が分かるようなページを提示し、すでにwebデザイナーとして働いていているユーザーには、タグから自分の興味のあるものがSchooに存在するのかが分かるようになり、コンテンツの量が多い問題を解消していっています。

# レコメンドは？
　現状のSchooでは情報を整理したことで、改善の余地はまだ多くありますが、コンテンツが多い問題に対して一定改善することができました。

ただ全くレコメンドを行っていないわけではなく、現在では、今までに挙げてきた協調フィルタリングや、コンテンツフィルタリングの結果を見て、`「プロが選んだ授業」 + 「特定のユーザークラスタの視聴履歴から興味のあるタグを計算し選んだ授業」`のハイブリッド型にしています。ハイブリッドの割合は、やはり人間が選んだものが多くなっています。

# 今後レコメンドでやっていきたい方向
大きくふたつあります。
ひとつは、ユーザーにいかにセレンディピティを提供できるか、もうひとつは、より教材となる動画が増えていったときに、そのユーザーにとって一番学べる授業を提示するということです。

Schooのミッションは「世の中から卒業をなくす」です。

記事中に例で挙げた「インフラエンジニアになりたい人」に、イラストレーターの授業がレコメンドされたことによって、「イラストレーターになる」までいかなくとも、今までイラストに興味がなかった人が、授業を見てイラストが上手にかけるになるきっかけになっただけでも素敵なことだなと思っています。

これらをより確度高くできるように、チャレンジしていきます。

ちなみにレコメンドを勉強したいという方は、Schooのこちらの授業をどうぞ！
https://schoo.jp/class/3421

![エンジニアのためのベイズ統計学.png](https://qiita-image-store.s3.amazonaws.com/0/17027/9df80572-1143-7c55-7a52-864786878e54.png)

# 募集中
最近ではデータサイエンティストも入社し、ますますおもしろくなるSchooで一緒に働いてみたいと思っていただけた方は、ぜひこちらからお話を聞きに来てください。お待ちしております！

+ リードエンジニア
https://www.wantedly.com/projects/47833
+ エンジニア（サーバサイド）
https://www.wantedly.com/projects/49282
+ エンジニア（サービス開発）
https://www.wantedly.com/projects/67488
+ テクニカルディレクター
https://www.wantedly.com/projects/72407
+ デザイナー
https://www.wantedly.com/projects/70697

それでは次の方お願いいたします！