この技術は、データ間の依存関係を高速に推論するもので、弊社の特許技術でもあります。特許情報は末尾に記載します。
データ項目間(項目Aと項目Bの間)の依存とは、このように定義しています。
項目Aが決まると項目Bが決まるが、項目Bが決まっても項目Aが決まらない場合、AからBに向かっての依存関係がある、または BはAに依存すると定義する。
実際には、これはある/なしではなく程度の問題になるので、数値で表現することが出来ます。この数値を短時間で計算することが出来るということが、本技術の重要なポイントとなります。
具体的には、項目AとBの間の依存関係のみを計算するのであれば、計算量は O(n) となります。但し、n はデータ数です。
データ項目間の依存関係をこの計算量で計算できる技術は私の知る限り他にはありません。
この技術は、データに対して強い仮定を置く必要がありません。もちろん、分布は均等分布であることが望ましいのですが、均等分布でなくてもそれなりに結果は出ます。
ほぼ全ての種類のデータについて依存関係を調査することが出来ます。また、連続データと名義データの間での依存関係の計算も出来ます。
連続データ
連続値と見なして調査可能です
離散データ
値が項目であると見なして項目データと扱うことで調査可能です。ただ、離散値でもほとんど連続値のようなものの場合は、連続値と見なして扱うことも可能です。
順序データ
値が項目であると見なして調査可能です。
名義データ
値が項目であると見なして調査可能です。
以下の3種類が数値として得られます。
項目Aが項目Bに与える影響
項目Bが項目Aに与える影響
項目Aと項目Bの間の依存関係
現在、テクニカルサンプルとして、以下のアプリケーションでお試し可能です。
Machine Learning Data Checker
本特許技術と[ベクトルデータの高速クラスタリングエンジン]を用いることで、データ間の関係性を調べるツールです。
Machine Learning Reduce Explanatory Variables for WinUI
説明変数の各項目について、データ中の目的変数に対する影響度を計算し、不要な説明変数を削除するためのツールです。
これは、本特許を素直に使うことで簡単に求められます。Machine Learning Data Checker を使うことで簡単に実行可能です。
なお、現在 WinUI 側の問題(グラフィックコンポーネント数をそれほど増やすことが出来ない)があるため、大量の項目で動かすことは難しい状態です。
この問題を回避するため、直接結果を CSV に出力する機能を実装することも検討中です。
Machine Learning Reduce Explanatory Variables for WinUI を用い、説明変数を削除したときの結果のサンプルを以下に示します。
このサンプルは、MNIST データセット(28x28 = 784次元)を3層のMLP(中間層のノード数は入力層の半分)で学習させたときの結果をまとめたものです。
なお、成績の f値は3回実行した結果の平均値としています。ですので、チャンピオンデータというわけではありません。
また、パラメタ数は、MLP を表現する時に必要な変数の数です。
ケース 説明変数 パラメタ数 成績(f値)
通常 784 927,090 0.982
削減ケース1 227 78,660 0.975
削減ケース2 212 68,804 0.974
削減ケース3 182 50,879 0.972
削減ケース4 37 2,280 0.860
ここに示したとおり、説明変数を大幅に減らしても f値の減少はそれほど多くはありません。つまり、無駄な項目が多いということです。
この手法を使うことで、効率的な項目の削減が可能です。
また、主成分分析(PCA)で類似したことが出来るという指摘もあるかと思いますが、PCAとはそもそもの考え方が違います。PCAでは線形性をデータに求めますが、本手法は線形性を前提としません。非線形のデータでも問題なく動作します。また、PCAは正規分布に近いデータの方が良いですが、本手法は正規分布ではなく均等分布である方が良い結果が出ます。これは、データの偏りが本手法の結果に影響を与えるためです。そして、PCAの結果を元に項目を削減することも可能ですが、それは間接的なもので直接的ではありません。
特許第7526525号
発明の名称
データ間の依存性判定システム、データ間の依存性判定プログラム、及び、データ間の依存性判定方法
特許権者
愛知県大府市一屋町一丁目191番地
合同会社ふうたシステムサービス
発明者
岡田年且