データマイニング:機能フォームを見つけるにはどうすればよいですか?


34

私は、関数の関数形を発見するために使用することができ、再現手順について興味がy = f(A, B, C) + error_term私の唯一の入力は、観測値の集合である場合(yABおよびC)。の機能形式fは不明であることに注意してください。

次のデータセットを検討してください。

AA BB CC DD EE FF
== == == == == ==
98 11 66 84 67 10500
71 44 48 12 47 7250
54 28 90 73 95 5463
34 95 15 45 75 2581
56 37 0 79 43 3221
68 79 1 65 9 4721
53 2 90 10 18 3095
38 75 41 97 40 4558
29 99 46 28 96 5336
22 63 27 43 4 2196
4 5 89 78 39492
10 28 39 59 64 1178
11 59 56 25 5 3418
10 4 79 98 24 431
86 36 84 14 67 10526
80 46 29 96 7 7793
67 71 12 43 3 5411
14 63 2 9 52 368
99 62 56 81 26 13334
56 4 72 65 33 3495
51 40 62 11 52 5178
29 77 80 2 54 7001
42 32 4 17 72 1926
44 45 30 25 5 3360
6 3 65 16 87 288

この例では、を知っていると仮定しFF = f(AA, BB, CC, DD, EE) + error termますが、の機能形式についてはわかりませんf(...)

機能形態を見つけるためにどのような手順/方法を使用しf(...)ますか?

(ボーナスポイント:f上記のデータの定義について、あなたの最良の推測は何ですか?:-)そして、はい、R^20.99を超える「正しい」答えがあります。)


1
@OP:以下のIrishStatのコメントは、理論上、独立変数が相互にどのように関連しているのか、従属変数がどのように関連しているのかを知らないと、「パドルなしで小川を上る」ことを思い出させます。例えば、場合FF「燃焼収量」であったとAAされる燃料の量だった、とBB酸素の量だった、あなたはの相互作用項を探しますAABB
ピート

@Pete:相互作用する用語は絶対に可能です。私の質問を誤ってフレーミングすることで、それを除外しなかったことを願っています。
knorv

2
@Pete:これは問題ではありません(実際の環境では現実的とさえ言えます)。以下の私の答えをご覧ください。
vonjd

3
Pete:データに適合する無限の数の関数R^2 >= 0.99のうち、最高のパフォーマンスと複雑度の比をもつ関数を見つけたいと思っています(そしてもちろんサンプル適合から外れています)。その明示的に書いていないため申し訳ありませんが、私はそれが明らかだと思った:
knorv

1
また、質問に対する回答がかなりよくなったので、以下の推奨機能のいずれかによってデータ生成されたかどうかを知ることはクールです。
naught101

回答:


29

データに最適な機能形式(いわゆる自由形式またはシンボリック回帰)を見つけるには、このツールを試してください-私の知る限りでは、これが利用可能な最良のものです(少なくとも私は非常に興奮しています)...無料:-)

http://creativemachines.cornell.edu/eureqa

編集:私はそれをユーレカで撮影し、私が行くだろう:

R 2 = 0.99988

AA+AA2+BBCC
R2=0.99988

私はそれを完璧なフィットと呼びます(ユーレカは他のより良いフィッティングソリューションを提供しますが、これらはもう少し複雑です。ユーレカはこれを好むので、これを選択しました)-ユーレカは約数秒で私のためにすべてを行いました通常のラップトップ;-)


6
参考のために、Eureqaは遺伝的プログラミングを使用して、シンボリック回帰問題の解決策を見つけています。
ティースハイデケ

10
+1心のない自動ツールの印象的なパフォーマンス!
whuber

1
@vonjd、リンクには「30日間無料トライアル」と表示されています。無料の代替手段をご存知ですか?
デニス14年

3
@denis:このRパッケージを試すことができます:cran.r-project.org/web/packages/rgp/index.html-ただし、上記のソフトウェアほど洗練されていません(まだですか?)
vonjd 14年

3
Eureqaはまだ学術的/非営利団体のために自由である

25

だけでは適合度の良い尺度ではありませんが、ここではモデリングで節約が重視されることを確認する場合を除き、ここでは取り上げません。R2

そのために、探索的データ分析(EDA)および回帰の標準的な手法(ただし段階的または他の自動化された手順ではない)は、次の形式で線形モデルを使用することを推奨します。

f=a+bc+abc+constant+error

OLSを使用すると、これは0.99を超える達成します。このような結果によって励まさ、一方が両面及び後退正方形に誘惑されたFを上に、B * 、C* B * Cおよびすべての正方形と製品。これはすぐにモデルを生成しますR2fabcabc

f=a2+bc+定数+エラー

ルートMSEが34未満で、調整済みのが0.9999であるR2。推定係数1.0112および0.988は、データが次の式で人為的に生成される可能性があることを示唆しています。

f=a2+bc+50

プラス50にほぼ等しいSDのわずかに正規分布された誤差。

編集

afaa2bcaa2,,e2,ab,ac,,deb2

b2

とにかく、改善されたフィット感は

f=a+a2+bcb2/100+30.5+error

0


ab2

ところで、ロバスト回帰を使用して、モデルに適合できます

f=1.0103a2+0.99493bc0.007b2+46.78+error

残差SDが27.4で、すべての残差が-51〜+47の場合:前回の適合と基本的には同じですが、変数は1つ少なくなります。その意味ではs約ですが、係数を「いい」値に丸めていないという意味ではpar約しません。それにもかかわらず、これは、係数がどのような種類の値を持ち、どの変数を含めるべきかについての厳密な理論がない場合、回帰分析で通常好む形式です。

R2


1
よくできました!これまでのところ、これが最良の答えのようです。
ザック

@whuber:良い仕事です-あなたは近づいています!:-)データが公式とエラー項を使用して人工的に生成されたことは事実です。しかし、公式はあなたが見つけたものとはまったく異なります-あなたはいくつかの用語を見逃しています。しかし、あなたは近くにいて、あなたは現在リードしています:
knorv

4
@whuber私はすでに+1を与えましたが、これはそのような問題へのアプローチを読むのに非常に有益であることを付け加えたいと思います。どんな形であれ、賞金に値するものです。
-chl

1
@bill早くから試しました。私の説明があなたの提案と私が含めた2つの余地を提供すると信じています。複数の正解があります。残差にパターンがあり、それらを考慮することで残差分散が大幅に減少することが明らかだったため、分析を続け、これらの追加の用語を含めました。(私はこれにほとんど時間と注意を費やしたことはないが、答えを書くことを含む最初の分析の合計時間は17分であったことを告白します。より多くの時間はより多くの洞察に変換されます...)
whuber

1
@naughtこのような長い式から始めて、Elastic Net(または同様の変数除去アルゴリズム)を適用することは興味深いでしょう。そのようなアプローチの成功は、関数の数を比較的少なくし、それらの間に正しい関数を含めることに依存するのではないかと思われます。しかし、盲目的に問題に膨大な数の機能的なフォームを投げて成功する場合、それは知っておく価値があります。
whuber

5

関数fはサンプルデータによって一意に定義されることはほとんどないため、質問を絞り込む必要があります。同じデータを生成できるさまざまな機能があります。

そうは言っても、分散分析(ANOVA)または「感度研究」は、入力(AA..EE)が出力(FF)にどのように影響するかについて多くを教えてくれます。

簡単なANOVAを実行したところ、かなり良いモデルが見つかりましたFF = 101*A + 47*B + 49*C - 4484。この関数は、DDまたはEEに線形に依存していないようです。もちろん、モデルをさらに進めて、二次項と混合項を追加できます。最終的には、データに過剰適合し、予測値を持たない完璧なモデルが得られます。:)


@Peteあなたが言ったように、2次、3次、4次、および混合項を追加できますが、それは単なるナンセンスです。ナンセンスがあり、非感覚的なナンセンスボットがあります。最も非感覚的なナンセンスは「統計的ナンセンス」です。
IrishStat

2
@IrishStat 混合物と高次の用語を追加することは一般にナンセンスではありません。制限なしに、理論に関係なく行われた場合にのみ悪い
ピート

2
@Pete 正しい!既存の理論がないため、それはばかげています。
IrishStat

@Pete:モデルに対してどのようなR ^ 2が得られますか?
knorv

@knorv:よく覚えていませんが、> 0.90でした。回帰線についてプロットすると、点は少し「S」/立方体の形をしているように見えたので、関数「f」は誰かが100A + 50(B + C)+高次を入力した数学的な創造であったと推測しますDとEが関係する用語
ピート

3

大まかに言えば、機械学習には無料のランチはありません。

特に、アルゴリズムAが一部のコスト関数でアルゴリズムBを上回る場合、大まかに言えば、BがAを上回る他の関数とまったく同じ数の関数が存在する必要があります。

/編集:また、C = 4およびsigma = 0.206の放射状SVMは、容易にR2を0.99にします。このデータセットの導出に使用される実際の方程式の抽出は、クラスの演習として残されています。コードはRにあります。

setwd("~/wherever")
library('caret')
Data <- read.csv("CV.csv", header=TRUE)
FL <- as.formula("FF ~ AA+BB+CC+DD+EE")
model <- train(FL,data=Data,method='svmRadial',tuneGrid = expand.grid(.C=4,.sigma=0.206))
R2( predict(model, Data), Data$FF)

-2

すべてのモデルは間違っていますが、いくつかは便利です:GEPBox

Y(T)=-4709.7
+ 102.60 * AA(T)-17.0707 * AA(T-1)
+ 62.4994 * BB(T)+ 41.7453 * CC(T)+ 965.70 * ZZ(T)

T = 1,10 = 1の場合、ZZ(T)= 0

YとAAの間に「遅れた関係」があり、観察11-25の平均に説明されたシフトがあるように見えます。

これが時系列データでも空間データでもない場合、興味深い結果が得られます。


@IrishStats「GEPボックス」とは何ですか?
knorv

IrishStat:データは時系列ではありません。そのため、観測の順序は重要ではありません。観測#11-25の平均値の変化は、データセットの取得方法に対する単なる副作用です。
knorv

1
@IrishStat:私はたまたま特定の順序でレコードを取得することを意味しました(考えてみてくださいORDER BY)。行には固有の特別な順序はありません。したがって、情報を失うことなく、安全に再配置できます。ごめんなさい。:
knorv

1
IrishStat:データセットは順不同です。AA(T-1)方程式の用語は、この文脈では意味がありません。
naught101

2
@naughtそれは正しいです。これは、時間差のある変数の「有意な」係数AA(T-1)または「平均シフト」を見つけると、誤った変数、つまり過剰適合が生じることを意味します。この例で興味深いのは、オーバーフィッティングは楽観的に(そして誤って)高くなると考える傾向がありますが、R2この状況では、いくつかの重要な変数も検出されていないため、残差分散が大幅に増加しています。
whuber

-3

97.2のr平方

変数YY
X1 AAS
X2 BB
X3 BBSの推定/診断チェック
X4 CCの

残差数(R)= n 25
自由
度数= nm 20 残差平均=合計R / n -.141873E-05
平方和=合計R 2.775723E + 07
分散= SOS /(n)310289.
調整済み分散= SOS /(nm)387861。
標準偏差RMSE = SQRT(Adj Var)622.785
平均の標準誤差= Standard Dev /(nm)139.259 AIC値(varを使用)= nln + 2m 326.131 SBC値(varを使用)= nln + m * lnn 332.226
平均/その標準誤差=平均/ SEM -.101877E-07
平均絶対偏差=合計(ABS(R))/ n 455.684


BIC値(varを使用)= Wei p153 340.388を参照
R Square = .972211
Durbin-Watson Statistic = [-A(T-1)] ** 2 / A
2 1.76580

**
モデルコンポーネントラグCOEFF標準PT
#(BOP)エラー値値

1CONSTANT                         -.381E+04   466.       .0000    -8.18

入力シリーズX1 AAS AAスクエア

2Omega (input) -Factor #  1    0   .983       .410E-01   .0000    23.98

入力シリーズX2 BB BB

3Omega (input) -Factor #  2    0   108.       14.9       .0000     7.27

入力シリーズX3 BBS BB SQUARED

4Omega (input) -Factor #  3    0  -.577       .147       .0008    -3.93

与えられた入力シリーズX4 CC CC

5Omega (input) -Factor #  4    0   49.9       4.67       .0000    10.67

 残差プロット

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.