レコメンドエンジンの具体的な実装方法を現役エンジニアが解説|東京のWEB制作会社・ホームページ制作会社|株式会社GIG

レコメンドエンジンの具体的な実装方法を現役エンジニアが解説

2019-03-02 勉強会

こんにちは!2019年2月からGIGにインターンとして入社したナガリナです。3月に入り、だんだんと暖かくなってきた気がします。春の訪れが待ち遠しい、今日この頃です。 

さて、25回目の勉強会のテーマは「Workshipにおけるレコメンドエンジン実装」についてバックエンドエンジニアの2人が実装方法と改良案をそれぞれ語ってくれました!    

▲出典:Workship

なおWorkshipとは、GIGが運営するフリーランス・副業人材の専門の求人・案件検索プラットフォームのことです。

レコメンドエンジンとは?

レコメンドエンジンとはWorkship内において、オススメの求人を自動で紹介してくれる機能になります。

バックエンドエンジニアの石倉彰悟さんが、レコメンドエンジンを詳しく解説してくれました。

石倉 彰悟(いしくら しょうご):バックエンドエンジニア。ITビジネスの専門学校を卒業後、深い知識を持ったエンジニアを目指して2012年に上京。バックエンドエンジニアとして常駐先でのシステム開発やサイト制作をおこなう。2018年7月にGIGにジョイン。

当日使用したスライドはこちらです。

レコメンドエンジンの実装方式

石倉:
レコメンド方式を検討する中で複数の実装方式が検討されました。

 

協調フィルタリング方式とは?

石倉:
今回Workshipが導入したのは、「協調フィルタリング」という方式です。こちらについて詳しく説明します。

1. ターゲットのユーザと似ているユーザを見つける(類似度計算、相関分析)


石倉:
確率に置き換えていきます。

 


2. 似ているユーザを基に、よく見られている求人などを計算し、そのユーザにレコメンドする求人を決める



石倉:
しかし、この方法ではユーザが増えれば増えるほど、計算量が乗数で増えていくという問題がありました。 そこで、全ユーザ分見なくていいようにINDEXを用意するという方法で解決しました。



普段何気なく使っている求人サイトも、苦労して作っているんだろうなぁ…と感慨深かったです。

レコメンドエンジンの改善案

続いて登壇したのはバックエンドエンジニアの坂本昂輝さん。Workshipのレコメンド精度をあげる手段を紹介してくれました。

坂本 昂輝(さかもとこうき):バックエンドエンジニア。学生時代は脳科学に関連するネットワーク研究を行いつつ、深層学習を用いた音声認識システムの研究開発を行う。2018年10月にGIGに入社し、バックエンドエンジニアとしてSaaS事業部に所属。 受託開発の根幹となるシステムを改善し、生産性向上に貢献している。

当日使用したスライドはこちらです。

改善案1. 「0 or 1」ではなく、「0, x」に置き換える

坂本:
1つ目の改良案は値を 0 or 1 の2値ではなく、複数の離散値か範囲のある連続値にすることです。このように空間を広げてあげることで、相関係数が有無を線引きをしやすくします。

改善案2. ReLU による新たな特徴ベクトルの獲得

坂本:
2つ目の改良案はReLUを通し、新たな特徴ベクトルを獲得することです。元々の入力値を機械が整形し、謎だけど良い感じの特徴ベクトルが獲得できます。下の図のように抽象化し、機械にとってわかりやすい表現でマッチングの精度を上げるべきでしょう。

 

改善案3. 大量のデータを候補生成とランキングに分割

坂本:
大量のデータ全てに対し、全特徴量を用いて計算を行うことは時間的に困難です。そこで2つの解決方法を考案しました。

1. 候補生成
全データに対して、少ない特徴量を用いてそこそこの精度で選出する。

2. ランキング
選ばれしデータに対して、多くの重要な特徴量を用いて高い精度で順位づける。

手持ちの特徴量のどれを用いるか選択したり、新たな特徴量を生成することによって、可能なかぎり最適な特徴ベクトルを構築します。 

改善案4. A/B テストで試行錯誤

坂本:
そして最後はA/Bテストで試行錯誤することです。戦略の良さは実行し統計をとらないとわからないことが多いです。コストが莫大でない限りは、とりあえずやってみましょう。また実行フェーズでは判断基準として、適切な指標を用いることが重要です。

勉強会の後は恒例の食事会!

勉強会のあとは参加者で食事を囲むのがGIG流。私は今回初参加なので楽しみにしていました。

今回のメニューは「オフィスの移転に伴い「めでたい!」ということで「鯛」料理。

移転パーティも兼ねていたため豪華でした。

今まで複数の会社でインターンに参加してきましたが、勉強会からの食事会という流れを作ることにより、社員同士の距離感が近くなったり、勉強会で疑問に思ったことをすぐに聞ける環境を作ることができたり・・・と素晴らしい環境だと感じました。そしてお料理もとっても美味しかったです!

GIGでは一緒に学べる仲間を募集しています!

 

現在GIGでは「一緒に成長していきたい!」と意欲のある仲間を募集しています。

話を聞いてみたい方は、下記サイトをご覧ください。

話を聞いてみたい方も歓迎です。お気軽にご連絡ください!

GIG BLOG編集部

株式会社GIGのメンバーによって構成される編集部。GIG社員のインタビューや、GIGで行われたイベントのレポート、その他GIGにかかわるさまざまな情報をお届けします。