はじめに
2022年8月に登場したStable Diffusion, 2022年11月に登場したChatGPTはそれぞれ画像生成、テキスト生成のパフォーマンスの高さで大きなインパクトを残した。最近では画像生成、テキスト生成のような生成タスクをこなすモデルを総称して「生成AI」と呼んでいる。しかし、生成AIの登場以前からAIはさまざまな場面で使われている。生成AI登場以前のAIのタスクとして、テーブルデータに対する分類や回帰があり、今回はそれらのモデルについて紹介する。
テーブルデータの分類
テーブルデータとは、以下のようなデータを行列形式で表現したものである。たとえば、行列構造の行にそれぞれのマンションの物件を持ち、列にマンションの値段、間取り、面積、階数、築年数、最寄り駅の規模、最寄り駅からの距離、近隣の商業施設などの情報が並ぶような構造のことである。テーブルデータの分類タスクは、そのテーブルに含まれるデータをその値に応じて二値や多値に分類するタスクのことを表す。他にもテーブルデータの回帰タスクなどもある。
上述のようなマンションの属性情報を持つテーブルデータが与えられたときに、それらのマンションが割安なのか、割高なのかを評価するモデルなどが考えられる一方で、マンションの値段を推測するようなモデルも考えられる。前者のようなモデルは二値分類タスクとして扱うことができる。後者のようなマンションの値段のように値そのものを予測する場合は回帰タスクとして取り扱う。
「〇〇か否か」や「数値」を予測したいことは多く、テーブルデータに対する分類・回帰はビジネス上重要である。
出所:三菱総合研究所
テーブルデータの分類、回帰をするパッケージとして、XGBoost(2014)、LightGBM(2016)がある。これら2つのパッケージはGradient Boosting Decision Tree: GBDTを採用しており、高精度かつ高速な点が評価されている。実際に機械学習とデータ分析のコンペティションサイトなどで知られるKaggleではこれらのパッケージを何らかの形で使用するチームが多い。次節では、GBDTをもう少し技術的な視点から捉えてみる。
分類と回帰を扱う手法:XGBoost is All you Need ?
テーブルデータの分類、回帰をするためのパッケージとしてXGBoost、LightGBMを挙げたが、これらのパッケージは登場からすでに10年近く経過している。この分野では数多くの研究成果が発表されているが、これらパッケージは現時点でも有力な選択肢であり続けている。
2017年に登場したTransformerは幅広いタスクで有効なことが知られている。大規模言語モデルのほとんどはTransformerをベースとしており画像や音声の取り扱いでも高い性能を発揮する。このような背景もありテーブルデータの分類や回帰に対してもTransformerを採用しようとする試みが行われている。代表的なものとしてTabPFNが挙げられる。
Transformerを活用した最先端モデルとGBDTのどちらが良いパフォーマンスを発揮できるか様々な比較がなされているが、GDBTとニューラルネットワークでは精度に大きな差はないとの報告が多い。ニューラルネットワークをベースとした近年のモデルTabPFNなどと、XGBoost, LightGBM などを比較しても精度に大きな差はなく、XGBoostやLightGBMのハイパーパラメータを調整すると、TabPFN などよりも良い精度が出せるという研究結果もある。また、データ分析のコンペティションサイトのKaggleによる2023年のレポートによると、Transformerの登場以降もテーブルデータの分析においてはGBDTが使われているそうである。
2024年に”XGBoost is All You Need”と題した講演がされるほど、GBDTを採用したモデルは強力である。GBDTは決定木のアンサンブル、Transformerはニューラルネットワークと両者の構造は全く異なっており、得意なタスクやチューニング方法は大きく異なる点に注意が必要であるが、テーブルデータの分類や回帰ではGBDTがいまだに有効であるといってよい。
次節ではXGBoost、LightGBMのベースとなる考え方について説明する。
Gradient Boosting Decision Tree:勾配ブースティングによる決定木のアンサンブル
決定木モデルは、木構造のモデルであり、入力に対して分岐を繰り返しながら分類をするモデルである。
出所:三菱総合研究所
1つの決定木モデルよりも複数の決定木モデルを組合せて多数決による分類を行うことでより高性能なモデルを作ろうとすることは自然である。複数のモデルを組合せて使うことをアンサンブルと呼ばれる。複数の決定木モデルを組み合わせたモデルは決定木のアンサンブルと呼ばれる。
GBDTとは勾配ブースティングを用いた決定木のアンサンブルモデルである。GBDTは設定された数だけ決定木を追加していくが、その際、教師データと追加前の予測データの誤差を埋めるように動作し精度を改善する。主要なライブラリとしてXGBoostとLightGBMがある。両者は決定木モデルの作り方に違いがあるものの、誤差を減らしていくように決定木モデルも順番に作成するという点では共通である。
一方で欠損値に対する扱いや処理速度など細部には違いがある。
特徴量エンジニアリング
特徴量エンジニアリングとは、モデルのパフォーマンスを向上させる手法の一つであり、入力データの加工をすることでパフォーマンスの向上を目指す。
一般に、データベースや、データウェアハウス、ファイルなどに保管されている生データを入力データとしてもモデルのパフォーマンスが低いことが多い。そのために、生データを加工して適切な形で入力データの形式することでパフォーマンス改善を見込める。
機械学習ではデータを予測対象(1次元のリスト)と特徴量(2次元のマトリクス)に整理して取り扱う。特徴量エンジニアリングの最終目的は良い特徴量を作成することである。
出所:三菱総合研究所
もう少し具体的に考えるために、冒頭に述べたマンションの属性情報を持つテーブルデータの例を挙げる。この例では、予測対象は「マンションが割安なのか否かを表すフラグ」を指し、特徴量はマンションの値段、間取り、面積、階数などからタスクに合わせて作成したデータを指す。
ここで気をつけるべき点は、与えられた分類、回帰のタスクに応じて、良い特徴量が変わる点である。与えられたタスクに有効な特徴量を作成することができればモデルのパフォーマンスを上げることができるが、与えられたタスクに無関係な特徴量を作成したところでモデルのパフォーマンスは変わらないどころか悪化する可能性すらある。そのため、与えられたタスクに応じて適切に特徴量を作成することが重要である。特徴量の作成方法に絶対的な正解はないが、代表的な特徴量の作成方法について紹介する。
特徴量の作成方法はその元データにより
① 単一または複数の対象データの加工
② 列方向のデータ加工
③ 複数テーブルからの特徴量作成
に分けられる。
① 単一または複数の対象データの加工
あるテーブルの中で1つの目的変数に応じた1行のデータを用いて新たな特徴量を作成する方法である。
出所:三菱総合研究所
数値型に対しては、数値のスケーリングを変換する処理や、数値を範囲ごとに区切ってカテゴリ化するなどの処理がある。また、カテゴリ型ではカテゴリを組み合わせる処理などがある。たとえば、性別と年齢層を組み合わせると新しいカテゴリを作ることができる。
文字列型の処理では、部分文字列の検出や抽出、区切り文字を使った分割、形態素解析など前処理を行った後、特徴を表すベクトル(Bag of Wordsなど)に変換する。Deep Learning登場以降は事前学習済みのモデルを用いてベクトル化することもある。
② 列方向のデータ加工
あるテーブルの中で列方向にデータを参照し新たな特徴量を作成する方法である。不用意に行うとLeakageが発生することに注意が必要であるが、外れ値の除去やデータの欠損に対する対応などによく用いられる。
また、一部のデータを集約して各データに情報を付加する処理を行う事もある。たとえば、ホテルの宿泊料金はホテルの所在地に大きく依存するため、同じ市区町村のホテルの宿泊料金の平均値をカラムとして追加することなどが挙げられる。そうすることで、宿泊料金の絶対値ではなく平均値との比較が可能になり、相対的な評価が可能になる。
出所:三菱総合研究所
③ 複数テーブルからの特徴量作成
データが1テーブルに存在することは少なく、複数テーブルから特徴量を作成することも多い。
出所:三菱総合研究所
複数テーブルを用いた特徴量生成には様々なパターンがあるが、Pandas_Cheat_Sheet.pdf (pydata.org)やSQLで行うような演算を行う事が多い。例えばある目的変数に対応したデータを抽出し、集計、基礎統計量を算出し新たな特徴量として採用する。
大規模データから特徴量を作成する際にはカラムナデータベースを用いて集計処理を高速化する、大規模な特徴量を効率的に扱うために疎行列を用いる、など処理高速化や省メモリ化を狙った対応が必要なことも多い。
大規模言語モデルでの分類
最近では、大規模言語モデルを使ったテキスト生成が注目されがちだが、XGBoostやLightGBMなどの分類モデルはビジネス上の重要さは変わっていない。簡単なテーブルデータの分類であればOpenAIが提供するGPT-4なども実施することができ、自然言語によるプロンプトによる指示とテーブルデータのみで分類タスクができてしまうとの報告がある。実用性には疑問符がつくものの予備知識なしでテーブルデータの分類タスクができる大規模言語モデルの性能の高さにはただただ驚かされるばかりである。しかしながら、ビジネス用途においてはこれら手法を採用することはない。ビジネスでは数万次元、数百万行のデータを取り扱うため高速かつ高精度なXGBoostやLightGBMなど分類に特化したモデルの採用が現実的である。生成AIの注目度やパフォーマンスの高さに騙されることなく、目的に応じて採用するモデルを適切に選択する判断が求められる。
まとめ
ここまで、テーブルデータの分類をテーマに、GBDTを採用した XGBoost、LightGBMを中心に説明してきた。これらのモデルは特定の場面ではとても強力なツールである。実際にテキスト生成で広く使われているTransformerのモデルとGBDTを比較しても、テーブルデータの分類、回帰のタスクにおいてはGBDTの方が優れているという見解もある。
近年では生成AIの登場により、画像生成、テキスト生成のタスクが注目を集めている。
しかし、ビジネスシーンの課題で分類・回帰に帰着できるものは少なくない。熟練の人たちの勘に任せた予測、人の手を使って大量のデータを捌いている状況はこれら手法で効率化できる可能性が高い。最近流行りの生成AIだけではなく、分類、回帰といった伝統的な手法を知っておくことは実用的なAI活用のため重要である。
- Attention Is All You Need, https://arxiv.org/pdf/1706.03762, 2024/07/31閲覧
- TABPFN: A TRANSFORMER THAT SOLVES SMALL
TABULAR CLASSIFICATION PROBLEMS IN A SECOND, https://arxiv.org/pdf/2207.01848, 2024/07/30閲覧 - When Do Neural Nets Outperform Boosted Trees on
Tabular Data?, https://arxiv.org/pdf/2305.02997, 2024/07/29閲覧 - Talent: A Tabular Analytics and Learning Toolbox, https://arxiv.org/pdf/2407.04057, 2024/07/29閲覧
- AI Report 2023, https://www.kaggle.com/AI-Report-2023, 2024/07/30閲覧
- XGBoost is All You Need | NVIDIA On-Demand, https://www.nvidia.com/en-us/on-demand/session/gtc24-s62960/, 2024/07/31閲覧
- モデルが複雑になるため実務ではあまり使用しないが、特性が異なるTransformerとGBDTを組み合わせて精度向上を狙うアプローチもある。
- リーケージ。日本語の意味は「漏洩」、「リーク」。ここでは本来ならば知り得ないデータを使って特徴量を作成してしまうことを言う。意図的にそのような特徴量を作成することは適切ではないが、意図せず発生する場合もある。わかりやすい例だと、テストデータを含む全データを元にモデルを作成してしまうことなどがある。
- Data Wrangling with pandas Cheat Sheet, https://pandas.pydata.org/Pandas_Cheat_Sheet.pdf, 2024/07/24閲覧