エムスリーテックブログ

エムスリー(m3)のエンジニア・開発メンバーによる技術ブログです

新しいアンケートシステムをつくった(Goとシステム概要編)

f:id:juntaki1:20190924172635j:plain エムスリーエンジニアリンググループの滝安(@juntaki)です。 私のチームでは製薬会社のマーケティング支援事業として、会員向けのアンケートを行っています。つい先日、新しいアンケートシステムのIbisをリリースしました。 この記事ではシステムをつくった背景とその概要を説明します。続きの記事でチームメンバーが技術的な詳細についても説明します!

続きを読む

インターンとして新サービスの開発に携わらせていただきました

初めまして。エムスリーエンジニアリングGでインターンに参加した柏です。

この記事では、私が実際に携わらせていただいた「医師版Stack Overflow(仮)」での業務の内容と、あまり知られていない(気がする)エムスリーの良さについてお伝えします!

f:id:shumbo:20190919173435j:plain
受付で写真を撮らせていただきました

続きを読む

人気アイテムのバイアスを考慮した推薦システムのオフライン評価

こんにちは、エムスリー エンジニアリンググループ AIチーム新卒エンジニアの金山 (@tkanayama_)です。普段の業務では、 医師・薬剤師向けプラットフォーム m3.com にて、個々のユーザーにとって最適なニュース記事を配信するための推薦システムの開発・運用を担当しています。そこで今回は推薦システムに関連して、推薦システムのオフライン評価時にアイテム側のバイアスを除去して評価する手法を提案した論文で、RecSys 2018に採択されているUnbiased Offline Recommender Evaluation for Missing-Not-At-Random Implicit Feedback を実装・実験してみました。

問題設定

ユーザー A~Eに、ニュース記事 a~eを推薦するという問題を考えます。さて、user-item間の真の嗜好性は表1のようになっているとします。

f:id:tepppei:20190919172418p:plain:w300
表1. user-item間の嗜好性(○が好き、×が嫌いを表す)

ここで、userがitemに対して取れる行動は「クリックするか否か」のみで、例えば高評価ボタンやレーティングシステムなどは無いものとします*1。したがって、実際には上記の嗜好性の全てを観測することはできません。そこで、表1の嗜好性に基づいて表2のようなクリックログが得られたとします。

f:id:tepppei:20190919172701p:plain:w300
表2. 実際に観測されたクリックログ(○がクリックあり、*がクリックなし)

ただし、○が「クリックした」、*が「クリックしなかった」とします。このクリックログの例は、「ユーザーが好きな記事に対してのみクリックが発生するが、必ずしも好きな記事全てをクリックするわけではない」という仮定に基づいています*2。この仮定は、例えば記事が目につく場所に表示されていなかった状況などを考えると自然な仮定と考えられます。したがって、クリックしていたらそのユーザーがその記事を好きだということがわかるが、クリックしていないからといって嫌いとは限らない、ということになります*3。例えば、Aさんは記事cを好きですが、今回はクリックしていません。

また、この例では記事a, bのクリック数が恣意的に多くなるようにしました。これは例えば、記事a, bがトップページの一番目立つ場所に置かれていたなどの状況を考えてください。

何が問題となるか?

*1:いわゆるimplicit feedbackの問題設定です

*2:「好き」かつ「目に入った」が満たされた時にクリックが発生するという仮定を置いたモデルをposition based modelと呼びます。click行動をモデル化する方法はposition based model以外にも数多く提案されていますが、それに関しては後の記事でまとめたいと思います。

*3:現実問題では、そもそもクリックが発生してているからと言ってその記事が好きだと決めつけることはできません(例えば誤クリックや、本文の内容と大きく異なるタイトルに釣られてしまった場合など)。そうした状況をモデルに組み込む研究もなされていますが、今回の記事では対象外とします。

続きを読む

Webエンジニアが使う身近な Kubernetes を開催しました

こんにちは。エムスリーエンジニアリングGの岩月(@kaito2)です。

9/9(月) にSpeeeさん[^1]のオフィスをお借りして、Kubernetes勉強会 題して「Webエンジニアが使う身近な Kubernetes」を開催しました!!

Webエンジニアが使う身近な Kubernetes - connpass

なんと 当日の早朝には台風第15号 (ファクサイ) が直撃!! 私も午後からの出勤でした。 そんな足元の悪い中多くの方にお越しいただき、ありがとうございました。

本勉強会は、最近着々と身近になってきているコンテナオーケストレーションシステムである Kubernetes への取り組みについて発表・議論を目的としています。

今回は、エムスリーと JapanTaxi さんでの Kubernetes に関する取り組みの発表でした。

続きを読む

SpringBootのdockerイメージを必要最小限に絞りたい(2019年9月版)

こんにちは、エムスリーエンジニアリンググループの福林 (@fukubaya) です。

先日の中村の記事で宣言してしまったので、 今回は「医師版Stack Overflow」(仮名) のSpringBootのdockerイメージを 必要最小限にまで小さくする際に試したことをまとめました。

なお、ちょっと検索すると先人の記事が色々出てきますが、 当時はまだなかったdockerイメージや、JDKの機能の違いにより、今ではちょっと古い部分もあります。 今回の記事も、半年もしないうちに古くなると思うので、2019年9月時点での方法だと思って読んでいただけると幸いです。

f:id:fukubaya:20190912162145j:plain
メットライフドームは埼玉県所沢市にあるドーム球場。本文には特に関係ありません。

続きを読む