エンジニアのデータとの付き合い方とは?
ビッグデータは、これまで事業の中のほんの一部に活用されてきた。しかし近年では、事業全体にデータドリブンな考え方が浸透し、エンジニアにも「データとの付き合い方」が求められるようになってきたという。
セッションに登壇したヤフー株式会社の田地将也氏は、「Yahoo! JAPAN」アプリ(Y!の赤いマークがついているもの)のPUSH開発チームのリーダーとして、チームをまとめつつ、自らもコードを書くエンジニアである。活動としてはYahoo! JAPANトップページのバックエンドやユーザーの未来行動を提案するアプリ「Yahoo! Sonomy」の開発に携わってきた。
入社直後の2012年頃は、Yahoo! JAPANのPCトップページの開発に関わっており、試験的に「主なサービス」の一覧にレコメンド機能を適用したのが田地氏のデータサイエンスとの出会いだという。当時はすべてにレコメンド機能を提供していたわけではなく、ABテストのようなやり方で提供されるようになっており、サイエンスチームが専用のレコメンドエンジン&APIを提供していた。
トップページからAPIを叩くと、APIからはサービス名とスコアの一覧が返される。そのリストをソートして、上位3つまでにレコメンドを適用するといったものだった。当時の開発について田地氏は「サービス側としては特にレコメンドの中身を意識することなくAPIを叩くだけで利用できた。その分、レコメンドの中身がどんなことをやっているのかまったく理解していなかった」と振り返る。
その後、トップページにもっとデータの利活用を求める機運が社内に生まれ、さまざまな取り組みが実施された。その中でも、「Yahoo! JAPANトップページのスマートデバイス版」「Yahoo! Sonomy」の2つの事例について紹介された。
「Yahoo! JAPANトップページのスマートデバイス版」「Yahoo! Sonomy」のデータ活用事例
まず2013~2014年頃に開発された「Yahoo! JAPANトップページのスマートデバイス版」では、パーソナライズの力を使って、グリッド表示やタイムライン表示の最適化を目指したという。当時は人もおらずすべて自分で「気合で作る」状況で、SNSのバズり具合と時間減衰を考慮したフルスクラッチの関数で実現していた。
「当時は無理に対数関数などを組み合わせてなんとか作っていたが、サイエンスの専門知識が無い中での開発であったためつらかった。パーソナライズについても『パラメータとして時間減衰のようなものが必要』といった、勘所は少しわかったように思う。一方で、気合ドリブンのロジックで作り続けるのは難しく、バグもあり、プロダクトオーナーの要望に十分に応えられなかったのが残念」と田地氏は語り、「改めて専門家の力を借りたいと感じた」という。
そして次に担当したのがアプリ「Yahoo! Sonomy」のバックエンド開発だ。位置情報に興味関心をかけ合わせたパーソナライズに取り組んだという。まずトップページのサイエンスチームが開発するパーソナライズエンジンに手を入れて「Sonomy用のAPI」を開発。パーソナライズの仕組みの根幹となる機械学習モデルの生成は、トップページのサイエンスチームが基本形を作っていたが、トップページのニュースレコメンド用だったため、一部Sonomy用にプラグインを開発した。そして、記事のカテゴリ分類などは一部フルスクラッチで自前のモデルを開発している。なお、これらの開発は2014~2015年頃。田地氏はこの時に初めて機械学習に触れ、その後の基礎になったという。
そして、同時期に「Yahoo! JAPAN」アプリのタイムラインにレコメンドエンジンを採用した。こちらはユーザーの興味関心を使ったパーソナライズが目的であり、当初は検索ワードや閲覧したページのワードベクトルを利用し、回帰で学習させてスコアリングしていく形をとった。
この時に田地氏は機械学習の初歩を理解し、実際に開発する経験を踏めたことがありがたいと語る。さらにデータサイエンティストが何を言っているのか、どんなことを気にするのかなどが、だんだんわかってきたという。
「機械学習で効果を出すのにすごく時間がかかる。大量のログデータを学習器に入れて学習させると『モデル』ができてくる。大きなチューニングをせずとも70~80%の分類性能を出すことはできたが、その後チューニングをして分類性能を上げていくことが本当に難しいと実感した。何が邪魔をしているのかを考えながらデータのクレンジングを行ったり、学習に必要なデータとしてどのようなものが必要なのかを推測したり、そうしたことが必要であるとバックエンドエンジニアなりにわかってきた」
さらに、2012~2015年の間だけでもデータの利活用は急激な速さで進化し、必要性に対する実感もわいてきたという。そして、実際の共同開発を通じて機械学習や自然言語処理の初歩を体験できたことで、データ利活用の勘所が少しずつわかってくると、今度は自分が学んだことを他の機能にも適用したくなってきたという。