機械学習を使いこなす at Airbnb

Getting Better at Machine Learning - リンク

機械学習だけでなく、データ分析一般に言えることですが、やり始める前に、まずは解決したい問題をはっきりと定義することが非常に重要です。ここのステップが曖昧になってしまうとその後の分析のステップで、時間と労力はたくさんかかってしまうわりに、ビジネスの意思決定に影響を及ぼすほどの結果はまったく得られないということが起きてしまいます。

AirbnbのデータサイエンティストであるRobert Changが、実際のビジネスの場面で機械学習を使いこなすには、学校やKaggleなどのコンテストなどで学ぶ技術的なスキルや理論を超えて、もっと実践的なフレームワークが必要だということで、以下のステップをもとにしたフレームワークを紹介しています。

  • 問題の定義
  • データの収集
  • モデルの構築
  • 製品化
  • フィードバック・ループ

実はこれって、昔からあるCRISP-DM(Cross-industry standard process for data mining)というデータマイニングの世界では有名なフレームワークにものすごく近い感じもしますが、それをAirbnbの実際のプロダクト、Airbnb Plusという事例を使って説明しているのが面白いと思います。

今回はその中でも、私が一番重要だと思う、問題の定義に関する部分を簡単に紹介します。


Airbnb Plusとういうハイ・クオリティ(高品質)なレンタルの家を探すためのプロダクトがあります。たくさんの社員はこのPlusに合うような家を探すのに情熱を持っていますが、それをスケールさせるのは難しいです。私達のチームは人間による評価と機械学習を組み合わせることで高い価値がありそうな家を探します。こうした、人間による評価と機械学習による予測の両方が必要になるような問題は最近よく出てきます。

人間が家を評価することで、データにラベル付がされます。すでに家に関する属性データ(価格、ブッキング、レビューなど)はあるので、このラベルデータと属性データを混ぜて、最初の家を評価するためのモデルを作るためのトレーニングデータとします。

まずは、これだけでも私達の作業の効率化という点では大きく役立ちました。

しかし、この製品がどんどん進化していくに従い、このアプローチには限界があるのもわかってきました。特に私達がどういった家をPlusとするのかという定義が変わってくるに従い、モデルが予測の結果として出してくるラベルに対する意味付けも変わってきました。

こうしてビジネスが成長するに伴い、モデルがデータとして使ったり、結果として出してくるラベルがどんどんと陳腐化してくるのです。つまり、私達が実際にやろうとしているのは、どんどんと変わってくるような答えを予測しようということなのです!

そこで、問題の定義の仕方を再考する必要があります。最終的には、1つの学習のタスクをいくつかの独立したタスクに切り分けることにしました。一つ一つの物件が高い潜在的な価値があるかないかを判断する代わりに、意味が変わることのないような高い品質の根拠となる属性を予測することにフォーカスすることにしました。例えば、高い品質の物件かどうかのラベルをつけるのではなく、問題を以下の数式のように定義しました。

home_high_potential = f(style, design, ...)

ここでのfは、人間がそれぞれの予測結果をもとに最終的な判断をするために使うルール(条件)をもとにしたアプローチをコード化したと思ってください。

問題を定義するには深い業務知識、問題を分解する能力、たくさんの辛抱強さが多くの場面で必要になってきます。もっとも簡単に獲得できるトレーニングデータが私達がどういった問題を定義するのかということをドライブ、つまり影響を与えてしまうようなことがあってはいけません。問題を定義してから、それでは、どういったデータがその解決に必要なのかを考えるべきなのです。このことは機械学習の世界で効率的に問題を解決していくために最初につけるべき重要なスキルです。