プロダクツ

機械学習の導入 ー 当社 Supply Traffic Filterについて

グラフとコードが表示されているモニターの画像

自動走行車、音声制御のパーソナルアシスタント、お気に入りのストリーミングサービスに組み込まれたレコメンドエンジンなど、日常における機械学習(ML) の導入は段階としてはいまだ氷山の一角と言えるでしょう。それでも、私たちの多くにとって、MLは生活における時間の使い方を左右する、重要な役割を担うようになっています。

世界にとって重要な意味を持つテクノロジーに情熱を注ぐ Index Exchange のエンジニアは、ML、 特に教師あり学習の領域に大きく傾倒しています。当社のML強化パイプライン 「Supply Traffic Filter」 は、この分野への投資例です。ここでは、当社の導入ステップの詳細をご紹介します。

  1. 課題を選ぶ

MLプロジェクトの最初のステップは、課題を定義することです。すべての課題が MLに適しているわけではないので、以下の点を考慮する必要があります:

  1. 手作業で問題を処理する:多くの時間を必要とするか?広範なルールを伴うか?
  2. 結果が頻繁に変化するため、維持するのが難しいか?
  3. データ量が多すぎて問題の洞察を得るのが困難か

Index Exchangeでの課題の一つとしては、拡大し続ける規模への対応が挙げられます。その一例として、新型コロナウイルス感染が拡大し始めた際、データセンターの技術者達が渡航制限で身動きがとれなくなった中、トラフィックが急激に増加する事態が発生しました。当社のプラットフォームを利用しているパブリッシャーや広告主への影響を最低限に留めながら、いかにトラフィックを効率良く処理し、スケーリングを継続できるかを判断する必要がありました。データ量が膨大となり、入ってくるオークションの数値を予測することが困難でした。このような要因が組み合わさり、MLが取り組む課題、特に教師あり機械学習のアプローチに適した課題と判断されました。

この状況への当社の対応について、詳しくは、こちらをご覧ください。

2. 特徴を選択

こうして機械学習の課題に取り組む用意ができました。次は最適な特徴を選択することです。MLの特徴とは測定可能なプロパティ(特性)を意味します。MLモデルの性能は特徴に大きく依存するため、特徴選択は非常に重要なステップです。適切な特徴を選択することで、モデルの性能を大幅に向上させ、学習時間を短縮することができます。逆に不適切な特徴を選択すれば、モデルの精度を下げることにもつながります。では、必要に応じた最適な特徴を、どのように選択すれば良いのでしょうか?

特徴を認識する

まずは適切な特徴を可能な限り見つけることから始めます。Index Exchangeが Supply Traffic Filterに取り組み始めた当初、リサーチ部門では、潜在的に存在する特徴量の多さに直面したため、社内のドメイン専門家に協力を求め、リストを作成することになりました。

特徴量セットの前処理

クリーンなデータが最初から得られることが理想ですが、現実には多くのノイズや不規則性が存在します。そのためMLエンジニアは通常、データの理解とノイズ除去に時間を費やす必要があります。

特徴にはテキストで表されるものもありますが、MLモデルでは数値で表されます。これらの特徴をワンホットエンコーディング 整数エンコーディング といった技術を使って、技術者が数値形式に変換します。ワンホットエンコーディング は、整数エンコーディングに比べ全般的に処理能力が高いものの、学習時間のコストが大きくなります。小規模のデータセットには、ワンホットエンコーディングを推奨しますが、大規模のデータセットには整数エンコーディングがより適しています。

特徴量セットの削減

次に、次元削減と呼ばれる処理で特徴量の削減を試みます。特徴量が多い事が、必ずしもモデルの精度向上に結びつくわけではありません。特徴量を制限する必要があるのは、以下の2つの重要な理由からです:

  1. モデルの汎化:特徴と結果に相関性があるように見えても、それが将来のデータを汎化するとは限らないため。トレーニングと予測時間を短
  2. する:特徴量が少ないほど、モデルのトレーニングと結果の予測を高速化できる。

これで特徴量を減らす意義は理解できましたが、実際の次元削減はどのように処理されるのでしょうか?いろいろな手法がありますが、「特徴の重要性」を利用することをお勧めします。この手法では結果に対する特徴の相関度をスコア化します。つまり、スコアの高い特徴を残しながら、低い特徴は削除するという手法です。

Supply Traffic Filterプロジェクトの場合、当初は50の特徴から始まりましたが、、それを11まで絞り込むことができました。

学習モデルを選択

この段階で学習アルゴリズムを選択します。教師あり学習は、主に2つのモデルアルゴリズムに分けられます。

アルゴリズムのタイプ 予測
分類 ターゲットクラス
回帰 値尤度

Supply Traffic Filterでは、「ノービッド(買い手なし)」オークションを事前に 分類することを目標とし、分類の課題と設定しました。しかし、興味深いことに、当社のリサーチチームは最終的に回帰モデルを選択しました。負荷に基づいた動的な量で、トラフィックをフィルタリングするため、もしエクスチェンジノードの負荷が高ければ、、効果的なパフォーマンスを維持するために、より積極的なフィルタリングが必要になります。回帰モデルを使用すれば、モデルは各オークションとの関連性をスコア化します。このスコアに基づいて、サーバーはアクティブボリュームに応じたトラフィックを動的にフィルタリングすることができます。

機械学習アルゴリズムを選択

教師あり学習では、広く使われている学習アルゴリズムが多数あり、選択には各アルゴリズムの特徴や、長所短所を理解しておくことが重要です。

次にデータセットを見て、最適なアルゴリズムを選択します。長所、短所を見るだけでは十分ではありません。

例えば、Index Exchange のオークション件数は日々何百億にのぼるため、サポートベクターマシン(SVM)とK近傍法は、まず対象から除外できます。これらのアルゴリズムでは、大きなデータセットでのトレーニングに時間がかかります。次に、データセットの特徴の多くはカテゴリー化されているため、非線形です。そのため、「ロジスティック回帰」アルゴリズム(線形データセット用に最適化されている)は対象となりません。最後に、説明が簡単なアルゴリズムを求める理由から、「ニューラルネットワーク」も選択肢から排除されます。これで、最終的に学習アルゴリズムの選択肢は1つに絞られます。決定木です。

トレーニング

このステップまで進めば、モデルをトレーニングするために必要な特徴と学習アルゴリズムが準備されたことになります。MLエンジニアは、特徴のクリーニングと適切なトレーニングアルゴリズムを探すのに時間をかけます。しかし、ここでは既にそれが済んでいますから、早速トレーニングとテストに取り掛かりましょう。

A graphic displaying the breakdown of datasets into 3 different groups: training, validating, and testing.

モデルをトレーニングする前にデータセットを3つのグループに分けます。: トレーニング、検証、テストです。これはモデルを一般化して偏りのない性能評価スコアを収集するためです。通常はデータセットの70%をトレーニング、15%を検証、残りの15%をテストに使います。

モデルのトレーニング及びチューニング

次のステップは、モデルの性能を最大化させるためのトレーニングと最適化です。モデルの性能は ハイパーパラメータと呼ばれるものに左右されます。学習アルゴリズムは高レベルの学習スタイルを定義し、ハイパーパラメーターはモデルがどのように学習すべきかの詳細を定義します。Index Exchangeでは決定木モデルを使いますが、これには「オーバフィッティング(過学習)」のリスクが伴います。これらのハイパーパラメータをチューニングすることで、統計ノイズを軽減することができるとともに、データ中の統計的傾向を把握するモデルの能力を維持することができます。決定木の主要ハイパーパラメータは以下の通りです:

  1. 最少限のリーフサンプル:リーフノード中の最少サンプル数。低すぎるとモデルはオーバーフィッティング(過学習)となる(モデルがトレーニングデータと一緒にノイズも記憶してしまう)。高すぎるとモデルはアンダーフィッティング(学習不足)となる(モデルがトレーニングデータの基本傾向を見逃してしまう)。
  2. 最大深度:決定木の深さの最大値を設定する。深さが最大値に達すると、木がこれ以上枝分かれするのを防ぐ。高すぎるとモデルはオーバーフィッティング(過学習)になる。低すぎるとアンダーフィッティング(学習不足)になる。

どうしたらハイパーパラメータを確実に最適化し、一般化できるでしょうか。ハイパーパラメータをインテリジェントにチューニングするには交差検証 グリッドサーチ アルゴリズムという検証技法を使用します。

モデルをテストする

これでトレーニングと検証データセットを最適にまとめた、トレーニングモデルができたので、早速精度をテストしてみましょう。Supply Traffic Filterの場合、予測力を落とさずにできるだけ多くのノービッド(買い手なし)オークションをフィルタリングしたいので、モデルの性能を測定するために2つのKPIを使用しました。

  1. リコールレート: 重要な取引をどれだけ正確にモデルが予測しているか。無関係なオークションを通過させても良いが、実際に入札を受ける可能性のあるオークションをフィルタリングしないようにするため。。
  2. オークション削減レート (条件予測否定率):モデルが却下するオークションの割合。例:予測されるサーバーリソースの節約。

そこで、最低99%のリコール率で、 オークションを2桁の割合で落とすことができるるモデルを作成しました。これにより、パートナー各社への影響を最低限に保ちながら、大量の非生産的なオークションを事前に特定できることになるため、重要なことと認識しました。

さて、市場によっては、データの特性が時間の経過とともに急激に変化することがあります。現在価値のあることが明日には価値も無いものになることがあれば、。その逆もしかりです。MLのエンジニアは、特にオフラインサーバーで一括してトレーニングを行う場合、再トレーニングの頻度を常に定義しなければなりません。もしモデルの予測力が急速に低下する場合は、市場の変化に敏感な特徴を削除することをお勧めします。

運用開始

予測力が高く、汎化性能のあるモデルが完成しました。立ち上げるまで、あと一歩です。

まず、偏りの無いトレーニングデータを収集するためにパイプラインを構築します。実際の起動後に、トレーニングデータにモデルがバイアスをかけないように(例:誤った仮定)、このデータはモデルから独立している必要があります。。Supply Traffic Filterプロジェクトの場合、モデルがオークションのフィルタリングを開始すると、オークションの結果は予測に依存するようになります。そこで、トレーニングバイアスを除去するために、フィルタリングプロセスをバイパスする別のパイプラインを構築しました。こうしてバイパスされたオークションは、新しい将来のモデルトレーニングに使われます。

最後に、モデルの性能をリアルタイムで監視しなければなりません。たとえば、突発的に市場の状況が変わることもあります。このような場合、新しいモデルを短期間でデプロイし直す必要が生じるかもしれません。Index Exchangeはバイパスされたオークショントラフィックを使って、モデルの性能をリアルタイムで監視します。これにより、モデルの機能低下を追跡し、予期せぬ行動や問題が生じた場合には、即座に対処する体制が整っています。

A graphic displaying the Ad Request Auction Process through the use of Machine Learning.

最後に

これで起動開始です!

多くの作業が必要になりますが、適切な機械学習の開発プロセスがあれば、データを新しい方法で効果的に使うことができるようになります。また、 機械学習はIndex Exchange のエンジニアにとって今後も引き続き最優先とされ続けることは確実です。このブログをここまで読んでくださった皆さんも、ぜひ新しいMLプロジェクトを先端で取り組み続けてください!