こんにちは。DataRobotの伊地知晋平です。
世界トップレベルのデータサイエンティスト達はどんな奥義を駆使して、高精度な機械学習モデルを生成しているのでしょうか? Kaggleで世界NO.1データサイエンティストになった実績を持つ弊社のセルゲイ・ユルゲンソン(Sergey Yurgenson)は、その奥義は特徴量エンジニアリング(Feature Engineering)であると証言しています。
「データサイエンスにおける匠の技、それが特徴量エンジニアリングです」
– セルゲイ・ユルゲンソン
例えば、「ある融資者が、どの融資は焦げ付く可能性があるかを予測する」架空事例を考えてみます。もしその融資者が融資案件毎に「借り手の年収」と「毎月の返済額」の2つの情報を持っていれば、それらはもちろん借り手が債務不履行を起こす確率を予測するのに有用でしょう。一方、元データにもう一つ列を追加して「毎月の返済額 ÷ 借り手の年収(単位: %)」を計算し、その列も特徴量に含めて機械学習モデルを生成すると、新しい知見の獲得や予測精度の向上が期待できるでしょう。
特徴量エンジニアリングとは、上記のように、元データの特徴量に変更を加えたり今ある特徴量を組み合わせて新しい特徴量を作り出したりしながら、機械学習モデルの予測パフォーマンスがより良くなるようにデータを準備するプロセスです。
特徴量エンジニアリングのスコープ:
- 新しいデータソースの発見 – 例:外部ソースからクレジットスコアなどのデータを入手
- ビジネスルールの適用 – 例:限度額を超える銀行との取引にはフラグをつける
- データの再グループ化や整形 – 例:病院の患者さんの特徴量としてBMIを計算する
もし特徴量エンジニアリングが自動化されれば、人はデータの再グループ化や整形ではなく、どのように正しくデータを解釈するかなど、ビジネス領域特有の特徴量に関する知識と経験を必要とする創造的な活動により深く関与できるようになり、それこそがDataRobotが考える自動特徴量エンジニアリングの利点です。
なぜ特徴量エンジニアリングは難しいのか?
第1に、人が特徴量エンジニアリングを行うには深い技術スキルを必要とします。例えば、ある機械学習アルゴリズムがどのように動作するかについて詳細な知識が必要で、なぜなら、各々の機械学習アルゴリズムに特有の特徴量エンジニアリング手法が要求されるからです。最近行われたベンチマーク調査によれば、成功するAIは、同じデータから複数の機械学習アルゴリズムで学習させて得られた多様な機械学習モデルによってもたらされます。その際、複数の異なる機械学習アルゴリズム毎に適切かつ異なる特徴量のセットを対応させる必要があります。
複数の機械学習アルゴリズム1つ1つに対して人が元データの再グループ化や整形を行って適切な特徴量セットを生成していくプロセスを想像してみてください。多大な時間と労力が必要となることは疑いありません。
一般的に特徴量エンジニアリングを行うためにはデータベース、コーディング、プログラミング等のスキルが求められ、新たに作った特徴量の有用性を確認するためには何回ものトライ&エラーが必要です。このような繰り返し作業の後に、新しい特徴量を加えたことが原因でモデルの精度が悪くなってしまったとしたら目も当てられません!
第2に、大抵の場合、特徴量エンジニアリングを行う際にはビジネスとデータに関するドメインの専門知識(以下、「ドメイン知識」と呼びます)が要求されます。例えば、2つの違う名前の薬剤が実は同じもの…一方はオリジナル商標名でもう一方はその後発医薬品(ジェネリック医薬品)である、というような知識です。このケースでは、2つの薬剤を1つのグループにまとめ(=再グループ化)、「1つの薬剤」として機械学習アルゴリムを適用する、というような特徴量エンジニアリングを行った方が良いでしょう。
ドメイン知識の利用を考える場合の普遍的かつ間違いない原則は、「機械学習アルゴリズムに『すでに分かっていること』を学習させない」です。この原則を適用すれば、貴重な計算リソースを、専らデータの中に潜む未知のパターンを新たに発見するために使えます。小売店の売り上げを予測するケースに原則を当てはめると、例えば「クリスマス前数週間の売り上げは大きくなる」等の既知のドメイン知識を反映した特徴量を予めデータに加えて「既知のパターン」としておくべきです。(「クリスマスセール」などの名称の列を作って、該当する期間はその列のフラグをTRUEに設定するような処理)
先にも述べたように、特徴量エンジニアリングは多大なリソースと時間を必要とします。個人が最良の特徴量エンジニアリングが行なえるまでの技術スキルレベル/ドメイン知識レベルに達するためには何年もかかるのが普通で、両方のスキルレベルを獲得できているデータサイエンティストは稀な存在です。これらのスキルレベルが十分でないままトライ&エラーを繰り返しているだけでは、データサイエンスプロジェクトは何年もかかってしまうことでしょう。
DataRobotが自動化する特徴量エンジニアリング
幸運なことに、繰り返しが多く時間のかかるプロセスがあると、それを自動化してくれる強力な助っ人が現れるものです。繰り返しが多く時間のかかる特徴量エンジニアリングのプロセスを自動化するため、DataRobotは次のような作業・判断を自動で行うエキスパートシステムを開発しました。
- 自動的に新しい特徴量を作り出す
- どの機械学習アルゴリズムが特徴量エンジニアリングを必要とするかを判断する
- 特徴量エンジニアリングが必要とされたアルゴリズムそれぞれに対して、ベストな特徴量エンジニアリング手法を選別する
- モデルを1対1のペアで次々と比較する体系的な方法により、どの特徴量エンジニアリングと機械学習アルゴリズムの組み合わせが与えられたデータセットに対してベストかを出力する
DataRobotはこれらの作業をモデルブループリントと呼ばれる仕組みを介して行います。モデルブループリントは知的なアプローチで特徴量エンジニアリングとそれぞれ適合する機械学習アルゴリズムとを結びつけていますが、実際にシンプルな例を見てみましょう。
シンプルなモデルブループリント(上図)において、DataRobotは正則化ロジスティック回帰アルゴリズム(Regularized Logistic Regression algorithm)のためのデータ準備を行なっています。2段階で実行される3種類の特徴量エンジニアリング手法がこのアルゴリズムに合わせて選ばれました。
- One-Hotエンコーディング(One-Hot Encoding):正則化ロジスティック回帰アルゴリズムは「性別」のようなカテゴリ変数をそのまま扱えませんが、それをDataRobotは分かっており、特徴量エンジニアリングのステップでこのアルゴリズムではカテゴリ変数にOne-hotエンコーディング(“大”=[1 0 0], “中”=[0 1 0], “小”=[0 0 1] のように、カテゴリ変数のそれぞれの値に対して列を生成してフラグを立てる処理)を行っています。
- 欠測値の補完(Missing Values Imputed):正則化ロジスティック回帰アルゴリズムは数値データの欠測があると動作しません。例えば、「申請者が最後に倒産宣告してからの年数」を含むフィールドを使って信用リスク予測モデルを作っているのであれば、このフィールドは殆どの申請者にとっては当然空白となります。DataRobotはこのような場合に特徴量エンジニアリングのステップで自動的に欠測値の補完を行います。
- 正規化(Standardize):数値データの特徴量を正規化する(=ある範囲内にスケーリングする)処理は、正則化ロジスティック回帰アルゴリムでは特に重要です。DataRobotは、このアルゴリズムでは欠測値が補完された後の数値データ特徴量に対して自動的に正規化を行います。
シンプルなモデルブループリントでうまく予測モデルを生成できる場合もありますが、実際にはより複雑なモデルブループリントが最も良いパフォーマンスのモデルを生成する場合が多いです。例えば下図に示すGradient Boosted Greedy Trees(GBGT)アルゴリズムの複雑なモデルブループリントを見てみましょう。
今回は新しいものを含めて数種類の特徴量エンジニアリング手法が選ばれました。順に見ていきます。
- 単変量の信頼性評価(Univariate credibility estimates):「大部分が”不合格”の中、ごく少数の”合格”がある」のように、カテゴリ変数の中に稀なカテゴリー値があり、また十分な予測信頼性を確保できるほどにはデータサンプル数が得られない場合があります。この場合、DataRobotではまず数の少ないカテゴリー値に重みをつけてGBGTアルゴリズムのパフォーマンスを発揮させます。
- カテゴリーカウント(Category Count):カテゴリ変数に対してDataRobotはOne-Hotエンコーディングを行うことを先にご紹介しましたが、ここではさらに進んだアプローチが取られていて、カテゴリ変数の列で各カテゴリー値の出現回数がカウントされています。この特徴量エンジニアリング手法は、カテゴリー値の人気度を測定しているようなものと解釈できます。
- テキストマイニング(Text Mining):GBGTアルゴリズムは、自由記述形式のテキストをそのままでは扱えません。例えば、ローンの引き受けを判断するプロセスから、ローン目的が書かれた自由記述形式テキストが得られますが、DataRobotはある列がテキストデータかどうかを自動判断し、その列には最初にテキストマイニングを実施、テキストマイニング後のスコアを最後のアルゴリズムに提供します。
- 差の探索(Search for Differences):個別の数値よりも、ある2つの数値変数の差分がより予測のために重要な特徴量になる場合はよくあります。例えば、経済指標系の予測モデル生成では「実質金利(名目金利から物価上昇分を割引いた金利)」が重要な予測変数になり得ます。DataRobotは、GBGTアルゴリズムを使う際には差分の特徴量を計算する特徴量エンジニアリング手法を自動選択して、より良い予測モデルを生成しています。
- 比の探索(Search for Ratios):クレジットスコアリングのような事例では、数値列同士の比がそれぞれの絶対値よりもより重要な特徴量になることがよくあります。例えば、貸し入れ額を年収で割った比の値は重要な特徴量になるでしょう。DataRobotは、GBGTアルゴリズムを使う際には比の特徴量を計算する特徴量エンジニアリング手法を自動選択して、より良い予測モデルを生成しています。
弊社は2012年の創業当初から、 モデルブループリントのライブラリに存在する膨大な数の機械学習アルゴリズム各々が個別に要求する特徴量エンジニアリング手法の自動化に心血を注いできました。今回ご紹介した2つの例は、自動化機械学習プラットフォームDataRobotの中で自動的に走る特徴量エンジニアリング手法のごく一部に過ぎません。
予測モデル生成プロジェクト毎に、DataRobotは与えられたデータに合わせた特徴量エンジニアリングと機械学習アルゴリズムの組み合わせを自動で選択し、それらの組み合わせで生成されたモデルの精度を体系的な方法で自動比較してランク付けします。
「自動特徴量エンジニアリング」の効果を検証する
自動化機械学習プラットフォームDataRobotは様々な特徴量エンジニアリング手法を体系的に試し、自動で精度比較を行います。そのため、ある機械学習アルゴリズムと特徴量エンジニアリングを組み合わせた場合と組み合わせなかった場合の2つのモデルブループリントの比較も簡単に行えます。
実際に弊社のあるデータサイエンティストが様々な分野(ヘルスケア、ファイナンス、不動産、電気通信、エネルギー等)からの27個の異なるデータセットを使い、「モデリング工場」としてDataRobotを使用したことがありますが、その時には合計数百もの予測モデルが生成されました。ちなみに、もし彼がこれらの業務をマニュアルで行わなければならなかったとしたら数週間は必要だったと思われますが、DataRobotの自動化機械学習プラットフォームは僅か数時間で全てのモデル生成を終わらせました。
その後彼はGradient Boosted Trees(GBTs)という1つの機械学習アルゴリズムに注目し、異なる特徴量エンジニアリング手法を適用して作成された複数のGBTsモデルが、「モデル予測精度順位表(リーダーボード)」上のどの位置にランキングされるかを比較しました。(DataRobotは全部で484個のGBTsモデルブループリントを生成)
下記のグラフでは、GBTsモデルブループリントの中でも精度がトップランクのものと他の機械学習アルゴリズムの中でも精度がトップランクのものについて、それぞれ特徴量エンジニアリングを組み合わせた場合と組み合わせていない場合で比較し、加えて複数の精度のよいモデルを組み合わせた「アンサンブル/ブレンダーモデル」のランキングも完全な比較のために載せています。
グラフ横軸の「Project ID」は、27個のデータセットに付けられたID番号を表しています。縦軸は各IDでの予測モデルのランキングを示しています。(ランキングなので値が小さいほど良い精度が出ていることを意味し、ベスト値は1です!)
黄色とオレンジ色の点は、自動特徴量エンジニアリングを組み合わせない場合に最も精度の高いモデルブループリントを表しています。グラフから明らかなように、これらのモデルはほとんどのIDでランキング下位に甘んじています。青色と緑色の点は、自動特徴量エンジニアリングを組み合わせた場合に最も精度の高いモデルブループリントを表しており、組み合わせない場合と比べてはるかに良いランキングとなっています。そして、赤色の点は比較のために載せた最も精度のよい、アンサンブル/ブレンダータイプのモデルブループリントです。アンサンブル/ブレンダーモデルはその内部で自動特徴量エンジニアリングを組み合わせた複数の予測モデルを利用しているのですが、常にランキング1位を獲得しています。
全てのIDに渡ってDataRobotの自動特徴量エンジニアリングが使われた場合のランキングは、使わなかった場合を大きく凌駕しています。ベストな結果は、異なる機械学習アルゴリズムにそれぞれ適合する自動特徴量エンジニアリングを合わせたモデルブループリントをさらに組み合わせた場合に得られています。
結論
- 弊社は、多様な機械学習アルゴリズムに合わせて個別に最適化された自動特徴量エンジニアリングがAI/機械学習のベストな結果をもたらすと確信しています。
- DataRobotの自動特徴量エンジニアリングは、どんな機械学習アルゴリズムでも使われるようなものから、ある1つのアルゴリズムだけで使われるようなユニークなものまで、広範な範囲をカバーしています。
- 精選された特徴量エンジニアリング手法と機械学習アルゴリズムのペアを組み合わせたモデルブループリントによって自動化を行うDataRobot自動化機械学習プラットフォームは、最高精度の予測モデルを圧倒的な生産性(リードタイムが月日単位から時分単位へ!)で生成することができます。
皆さん一人一人がお持ちのデータは違っています。一つのデータセットにとってベストなことが、別のデータセットにとっては全くそうでなくてもおかしくはありません。いまあなたの手元にあるデータセットにとってベストな機械学習アルゴリズムと特徴量エンジニアリングの組み合わせは何なのか、をDataRobotの自動化機械学習プラットフォームを使って検証してみませんか? ぜひお気軽にご相談ください。
コミュニティ
AIプロフェッショナルのためのコミュニティ開設
ソフトウェア開発者、データサイエンティスト、IT専門家、経営者に最適なサイト。DataRobot ユーザーであれば誰でも参加できます。
今すぐ登録