0
0

テーブルデータの水増し手法について

Last updated at Posted at 2024-09-20

1. はじめに

テーブルデータを扱っていて、「何らかのアルゴリズムを用いた学習に最低限必要なサンプルサイズが足りない。何とかしたい!」と思ったことはないでしょうか。
例えば、下記のようなデータを扱う場合にそう思うことがあるのではないでしょうか。

  • ex.1. プライバシーなどの機微な事情から、限られたデータしか利用できない12345
  • ex.2. データ加工が自動化・効率化できず、限られたデータしか用意できない(実務でありがち)
  • ex.3. 正解ラベルに属すデータが極端に少ない4

本資料では、こうした場合に使えるテーブルデータ向けの水増し手法の外観を示します。


2. テーブルデータ向けの水増し手法

一般に、テーブルデータの水増し手法は画像のものとは異なります。そのため画像とテーブルデータとで、水増しを表す英単語がそれぞれ異なります。検索するときは要注意です。

  • 画像データの水増し: augmentation
    • 元画像の反転のみならず、拡大やノイズの追加などをし、本来あまり無かったタイプの学習用データを増やすイメージ
    • "image augmentation"とか"data augmentation"などのキーワードで検索すると、文献が見つかりやすいです。
  • テーブルデータの水増し: synthesis
    • 学習データの分布に従うデータをランダムに生成していく。つまり、本物そっくりな学習用データを増やすイメージ
      • テーブルデータの場合augmentationはやりづらいです。画像の場合、反転などで特徴量の値を大きく変えても正解ラベルは変わらないのですが、テーブルデータで同じことをするとラベルが変わらないとつじつまが合わなくなるからです6
    • "tabular data synthesis"とか"synthetic tabular data"などのキーワードで検索すると、文献が見つかりやすいです。

3. 既存の主なアルゴリズム

本物に近いテーブルデータの水増しといえば、古くからSMOTE(Chawla et al. 2002)7のようなアルゴリズムが知られています。

ですが、テーブルデータの水増しは現在に至るまでhotな研究対象になっています。特に、様々な種類の値を含む元データの分布をいかに上手く再現するかが盛んに研究されている印象です。

参考文献1によると、近年出現した主なアルゴリズムには以下があります。(説明文は、参考文献のものから相当加筆しています)

3.1. MedGAN(Choi et al. 2018)8

  • もともと、検診データや患者さんへの処置を記録したテーブルデータを水増しするために作られました。
  • 医療データ以外にも使えますが、カテゴリデータなどの離散的なものしか生成できない制限があります。
  • 画像用の同名のGANがあることに注意。

3.2. TGAN(Xu et al. 2018)5

  • カテゴリデータと数値データが混在したテーブルデータでも水増しできます。カテゴリ数や定義域がそれぞれ異なっていてもOKです。
    • そのためTGANでは、離散変数・連続変数の分布をそれぞれ以下と見なします。扱う分布を限定する狙いと考えられます
      • 1つの離散変数の分布は、普通にカテゴリカル分布と見なします。
      • 1つの連続変数の分布は、カテゴリカル分布と、(-1, 1)の値域に収まる数値の分布の組と見なします。
  • テーブルデータの各行が確率的に独立であることを仮定しているため、自己回帰性のあるデータには適しません
  • 同時期に提案されたTableGAN9はCNNベースですが、TGANはLSTMを使って1変数ずつ順繰りに分布を学習する点が異なります。
  • 開発チームが過去に手掛けたSDV10などの手法に比べて、教師あり学習に向いた水増しデータができたと主張。

3.2.2. TGANの学習詳細

  • まずはじめに、変数の分布を学習できるよう離散変数・連続変数を変換する前処理を行います。
    • 離散の場合、テーブルデータのk列目の変数X_kをOne Hot Encodingしたベクトルの要素にノイズを足し、その後正規化。この結果をD_kとします。
      • よって、D_kを再現できるカテゴリカル分布を推定するのがGANの仕事のひとつになります。
    • 連続の場合はちょっと複雑で、変数ごとに下記の処理を順次実行して、i列目の変数からU_iとV_iという値を求めます
      • 1.テーブルデータのi番目の列に出現する元の変数X_iをGMMにかけ、m個の正規分布の山を得る。ここでは例えばm=3とする。
      • 2.変数X_iに含まれるそれぞれの値x_i_jについて、3つあるそれぞれの山に属する確率を推定。この結果をU_iとする。
        • つまり、U_iを再現するカテゴリカル分布を推定するのもGANの仕事になります。
      • 3.同じく各x_i_jについて、属する確率が最も高い正規分布の山から何σ離れているかを計算。
      • 4.上記3で求めた「何σ離れているか」の値を、下限-0.99、上限0.99としてclipする。この結果をV_iとする。
        • よって、V_iを再現する分布を推定するのもGANの仕事になります。

  • 連続値に対する前処理を図解したものは以下です。(この図はCTGAN論文11から引用。ただTGANと処理はほぼ同じ)
    202112100943453975_4.png.jpg

  • GeneratorのLSTMは、各変数について求めたU_i・V_iあるいはD_kを再現できるように順次学習していきます。(下図は原著論文5 Fig.1を引用)
    tgan.png

  • 最後に学習済モデルからU_i、V_iあるいはD_kに相当するデータを新たに生成します。それらに対して前処理と逆のことをすれば、元のデータそっくりなものが得られます
    • 特に連続値の場合、各サンプルの属するGMMの山がU_iのデータからわかり、属する山と各サンプルの間の距離がV_iのデータからわかるので、そこから逆算すれば元の連続値を再現できます。(下図で言えば、αの式からのcの導出に相当)
      202112100943453975_4.png.jpg

3.3. CTGAN(Xu et al. 2019)11

  • 3.2節で挙げたTGANを改良したものです。
  • 学習方法はTGANからかなり変わり、LSTMから普通の多層ニューラルネットになりました。
  • 変数の前処理方法も、その復元処理もTGANと基本はほぼ同じです。
    • ただし連続変数の分布V_iを作るときに値をclipするかわりに、tanhで活性化するようになっています。
    • カテゴリカル分布に従うU_iやD_kは、softmaxで活性化するようになっています。
  • 原著論文ではCTGANとの比較用に、CTGANのGANの部分を変分オートエンコーダにまるごと差し替えたTVAEというアルゴリズムを開発したことが述べられています。
    • データセットによってはTVAEのほうが優れるとのことです(下図は原著論文11 table 2を引用)。
      8-Table2-1.png

3.4. 非GANベースの手法

参考文献1によると、GANを用いない手法にもいくつか有力なものがあります。

3.4.1. Copula Flows for Synthetic Data Generation(Kamthe et al. 2021)2

  • コピュラとは「複数の周辺分布をインプットにして、多変量の同時累積分布をアウトプットする関数」であり、正規分布では表現できない複雑な多変量分布を表すのに使えるものです1213
  • 連続値も離散値も取り扱い可能です。
    • コピュラを使った従来手法では離散値を扱えなかったのですが、離散値の累積分布関数をいったん連続値のものに置き換えて解決している模様です(原著論文2 3.3節参照)。
  • 3.3節で述べたCTGANよりも、教師あり学習に向いた水増しデータができたと主張
    • ただし、本手法の実装は公開されていない様子…
  • 本手法のポイントは、n次元の多変量一様分布上の値から元データの値を求める関数を、コピュラと「フロー関数」というものを使って再現することです(原著論文2 Fig.2参照)。
    • 下図が論文のFig.2です。そこには、左のグラフの2変量一様分布をコピュラにかけると、真ん中のグラフの分布ができることが描かれています。真ん中のグラフには元の2変量の相関が反映されています。
    • コピュラにより相関が加えられた分布を「フロー関数」にかけると、右のグラフの分布が得られます。これが元の分布を再現したものになっています。
    • こうした一連の処理を実現できるコピュラやフロー関数を作るのが本手法です。これにより元データの分布を従来よりも柔軟に再現できる上、水増しデータの生成過程の解釈性も実現できていると主張しています。
      4-Figure2-1.png

3.4.2. Hierarchical Modeling Algorithm14

  • RDB上のデータのように、階層構造を持つテーブルデータの水増しに特化した手法です。
  • 一番下の階層にあるテーブルデータから順番にその中身のデータの分布を学習していきます。
  • 分布の学習自体にはガウシアンコピュラを利用した手法を用います。
    • 3.4.1項のものと同じ手法かは不明です。

3.4.3. 統計値を用いたプライバシ保護擬似データ生成手法(岡田ら 2017)15

  • NTT系の研究所による手法です。
  • 「データの各属性のヒストグラムと等しくなる乱数を線形変換することによって各属性の平均,分散共分散を正確に保持,各二属性間のクロス集計表の近似を保持する擬似データの生成方法」とのこと。
  • 実装はあるらしいのですが、有償。(詳細後述)

4. 主な水増しツール

文献1によると、テーブルデータを水増しするアルゴリズムを実装した主なツールには以下があります。

  • SDV16
    • Pythonライブラリ。OSS。無償。素晴らしい
    • ツールと同名のSDVアルゴリズムをはじめ、3章で言及したCTGAN、TVAEなど多くのアルゴリズムを実行可。強い
      • CTGANなどでは扱えない、時系列データの生成ができるアルゴリズムもあったはず17。偉い。
    • CTGANなどの出力内容に対し、各変数の値域に関する制約を追加することもできる。強すぎる
  • Mostly AI - Synthetic Data Platform4
    • 1日あたり10万件までのデータ生成が永久に無償18。ここまでは素晴らしい
    • ユーザ登録には企業アカウントのメールアドレスが必要。困った。
    • 非倫理的なバイアスを除去したデータの生成に優れるとの主張あり。
      • 倫理対策がある手法は他に聞かないので、おそらくアルゴリズムは独自のものではないか。
  • tasokarena19
    • 有償。エンタープライズ版は年180万円から。
    • 参考文献1によると、3.4.3で紹介したNTTによる論文のアルゴリズムを実装したものでは?とのこと。

4. ツールの利用例の資料

私の目についた資料を下記に示します。


5. 所感

今のところテーブルデータ水増しに使うツールは、SDVがよいのではないかと思います。

特に、調べた範囲で優れていたCTGAN、TVAEを実行できるSDVが個人的には興味深いです。
CTGANを倒したものではなさそうですが、SDVではコピュラを使ったデータ水増しも実行できますし、おそらくSDVで扱えるアルゴリズムは今後もどんどん増えていくと予想されるからです。
実際2022年に入ってからもCTAB-GAN+3のような手法が提案されており、学習データの分布の再現に一層優れたものが出てくる期待があります。

Mostly AIも興味はあるのですが、利用にあたって企業アカウントのメールアドレスを必要とするため、自己啓発で使いづらいのが懸念点です。
オンラインツールのように見受けられるので、会社で利用したくても実際の案件のデータを渡せないのも悩ましいです。


6. 今後の課題

テーブルデータの水増しにおける今後の課題として、「学習データが真の分布よりも偏ったサンプルだったときに、分布推定結果をどう修正するか」ということが挙げられると思います。
2章で述べた通り、テーブルデータの水増し結果は学習データの分布に依存するからです。偏ったサンプルをもとにいくら水増しをしても偏ったデータしかできず、それらを学習したところでモデルの汎化性能は限界があります。

1章で述べたex.1やex.2のケースでは、大量に供与できないが元のデータ自体は多く存在し、その内容について知見を持つ人がいる可能性がありえます。
その場合は、人の知見を外からフィードバックできるアルゴリズムがあれば、上記の課題にアプローチできます

そうしたフィードバックを可能にするアルゴリズムを、私がCTGANをベースに試作したものがあります23ので、別途紹介できればと思います。


  1. "気の利いた"擬似データを生成したい 2 3 4 5 6

  2. Copula Flows for Synthetic Data Generation 2 3 4

  3. CTAB-GAN+: Enhancing Tabular Data Synthesis 2

  4. MOSTLY AI 2 3

  5. Synthesizing Tabular Data using Generative Adversarial Networks 2 3

  6. Augmentation on tabular data

  7. SMOTE Synthetic Minority Over-sampling Technique

  8. Generating Multi-label Discrete Patient Records using Generative Adversarial Networks

  9. Data Synthesis based on Generative Adversarial Networks

  10. The Synthetic Data Vault

  11. Modeling Tabular data using Conditional GAN 2 3

  12. Wikipedia: コピュラ_(統計学)

  13. コピュラとは

  14. HMA1 Class

  15. 統計値を用いたプライバシ保護擬似データ生成手法

  16. SDV

  17. PAR Model

  18. Generate synthetic data for free forever

  19. tasokarena

  20. User Guides

  21. GANで偽のテーブルデータを生成する

  22. TGAN, CTGANの使い方メモ

  23. human_ctgan

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0