推薦システムの設計で意識した点おわりにこんにちは。はじめとする機械学習を用いた記事の推薦機能を追加しました。この記事では、推薦システム導入の背景と構成、設計時に意識した点について紹介します。弊社テックブログは2015年6月に最初の記事が投稿されて以降、現在までに多くの記事が投稿されてきました。以下の図は、弊社テックブログの累積記事数の推移です。実施のため記事数が大幅に増えていることがわかります。記事数がある程度の数まで増えたため、閲覧中の記事と関連性の高い記事を表示する推薦機能のニーズが生まれてきました。今回の推薦機能を追加する以前も、各記事ページの下部にオススメ記事を表示していましたが、その選択方法は、同一タグ・カテゴリ・投稿者の記事からランダムに選択するというシンプルなものでした。そこで、閲覧履歴や記事の内容から機械学習を用いた方法により関連性の高い記事を表示することで回遊率を向上できるのでは、と考え推薦システムの導入を8月下旬に提案しました。増えることで、記事を執筆するモチベーションの向上に繋がり、回遊率向上と記事数増加の良い循環が生まれることを密かに期待しています。2019年6月から一般利用可能となりました。機能や使い方について計6回の連載でご紹介してきました。活用することは自然な選択でした。機能や使い方は以下の連載記事をご覧下さい。推薦システム全体の構成は以下となります。取得した推薦のリストを統一された形式に変換した上でテックブログサーバに返します。推薦を取得しています。推薦システムの設計で意識した点は以下の3つです。インターフェイスをできるだけシンプルにするマネージドサービスを活用する試したいモデルをすぐ試せるようにするインターフェイスをできるだけシンプルにするテックブログサーバの運用管理・保守は、私が所属するデータサイエンスチームでなく他部署が行なっています。推薦機能はあくまでテックブログの付加機能のひとつであるため、他部署の作業ができるだけ発生しないように意識しました。一任する仕組みとしています。リクエストを構築せずに済みます。その結果、コード変更も最小限に留めることができます。アップロードする仕組みが既にありました。学習データとして入力しています。分以内に余裕をもって整形とデータ入力処理を終えていますが、アクセスログのサイズに応じて適した構成へと見直していく予定です。マネージドサービスを活用するマネージドサービスが普及した現在では、その利点について改めて言及する必要もないかもしれませんが、一般的にマネージドサービスを利用することで運用管理・保守にかかるコストを軽減することができます。運用管理・保守にかかる負担を軽減できます。使うことで、監視対象のメトリクスが期間内に指定した閾値を超えた場合に通知する仕組みを簡単に作成することができます。自動モデルチューニングやモデル追跡機能を利用することで機械学習モデルの管理を省力化でき、機械学習モデルの開発により専念することができます。試したいモデルをすぐ試せるようにするデータサイエンスチームでは、機械学習の論文を読んで再現実験を行ったり、論文中の実験で使用されたデータとは異なる領域のデータに適用して評価を行ったりすることがあります。そのため、情報推薦や自然言語処理のアルゴリズムをオンライン上で手軽に試したり比較・評価できる環境があると便利です。上に決められた形式で配置するとすぐに配信できる仕組みとしました。宣言的に記述、必要なコードの大部分を自動生成することができます。仕様と実装の乖離を少なくすることができ、開発効率を上げることができました。おわりにこの記事では、テックブログに機械学習を用いた推薦システムを導入した背景と構成、設計時に意識した点について紹介しました。既存のテックブログサーバとなるべく疎結合になるようにシステム構成を考えましたが、今後も定期的に構成を再考し、必要に応じて改善していきたいと思います。次回は、推薦システム導入後のA/Bテストの経過について書く予定です。クロスバイク、映画鑑賞、猫が好き。