Penambangan data: Bagaimana cara mencari bentuk fungsional?

34

Saya ingin tahu tentang prosedur berulang yang dapat digunakan untuk menemukan bentuk fungsional dari fungsi y = f(A, B, C) + error_termmana saya hanya masukan adalah seperangkat pengamatan ( y, A, Bdan C). Harap dicatat bahwa bentuk fungsional ftidak diketahui.

Pertimbangkan dataset berikut:

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 39 492
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

Dalam contoh ini, asumsikan kita tahu itu FF = f(AA, BB, CC, DD, EE) + error term, tapi kami tidak yakin tentang bentuk fungsional f(...).

Prosedur apa / metode apa yang akan Anda gunakan untuk sampai pada menemukan bentuk fungsional f(...)?

(Poin bonus: Apa tebakan terbaik Anda pada definisi yang fdiberikan data di atas? :-) Dan ya, ada jawaban "benar" yang akan menghasilkan R^2lebih dari 0,99.)

Knorv
sumber
1
@OP: Komentar IrishStat di bawah ini mengingatkan saya bahwa tanpa pengetahuan tentang bagaimana variabel independen Anda saling terkait satu sama lain dan / atau variabel dependen, secara teori, membuat Anda "menaiki sungai tanpa dayung". Misalnya, jika FF"hasil pembakaran" dan AAjumlah bahan bakar, dan BBjumlah oksigen, Anda akan mencari istilah berinteraksi AAdanBB
Pete
@Pete: Istilah interaksi benar-benar mungkin. Saya harap saya tidak mengesampingkan itu dengan membingkai pertanyaan saya secara tidak benar.
knorv
2
@Pete: Ini bukan masalah (dan saya bahkan menyebutnya realistis dalam pengaturan kehidupan nyata), lihat saja jawaban saya di bawah ini.
vonjd
3
Pete: Keluar dari jumlah tak terbatas fungsi yang akan cocok dengan data dengan R^2 >= 0.99satu ingin menemukan yang dengan kinerja terbaik untuk rasio kompleksitas (dan tentu saja keluar dari kecocokan sampel). Maaf karena tidak menulis
kejelasan
1
Juga, sekarang pertanyaannya adalah menjawab cukup baik, itu akan menjadi dingin untuk mengetahui apakah data itu dihasilkan oleh salah satu fungsi yang disarankan di bawah.
naught101

Jawaban:

29

Untuk menemukan bentuk fungsional pas terbaik (disebut free-form atau symbolic regression) untuk data coba alat ini - sepengetahuan saya ini adalah yang terbaik yang tersedia (setidaknya saya sangat bersemangat tentang hal itu) ... dan itu bebas :-)

http://creativemachines.cornell.edu/eureqa

EDIT : Saya mencobanya dengan Eureqa dan saya akan mencoba:

R 2 = 0,99988

SEBUAHSEBUAH+SEBUAHSEBUAH2+BBCC
denganR2=0,99988

Saya akan menyebutnya sangat pas (Eureqa memberikan solusi pemasangan lain yang lebih baik, tetapi ini juga sedikit lebih rumit. Eureqa lebih menyukai yang ini, jadi saya memilih yang ini) - dan Eureqa melakukan segalanya untuk saya dalam beberapa detik setelah laptop normal ;-)

vonjd
sumber
6
hanya untuk referensi, Eureqa menggunakan Pemrograman Genetik untuk menemukan solusi untuk masalah regresi simbolis.
Thies Heidecke
10
+1 Performa mengesankan untuk alat otomatis tanpa berpikiran!
whuber
1
@vonjd, tautannya sekarang bertuliskan "uji coba 30 hari gratis". Apakah Anda tahu alternatif gratis?
denis
3
@denis: Anda dapat mencoba paket R ini: cran.r-project.org/web/packages/rgp/index.html - tetapi tidak secanggih perangkat lunak yang disebutkan di atas (belum?)
vonjd
3
Eureqa masih gratis untuk organisasi akademik / nirlaba
Inverse
25

R2 sendiri bukanlah ukuran yang baik untuk kebaikan, tetapi jangan sampai membahasnya di sini kecuali untuk mengamati bahwa kekikiran dihargai dalam pemodelan.

Untuk itu, perhatikan bahwa teknik standar analisis data eksplorasi (EDA) dan regresi (tetapi tidak bertahap atau prosedur otomatis lainnya) menyarankan menggunakan model linier dalam bentuk

f=Sebuah+bc+Sebuahbc+konstan+kesalahan

Menggunakan OLS, ini mencapai atas 0,99. Dihibur oleh hasil seperti itu, seseorang tergoda untuk menyejajarkan kedua sisi dan mundur pada , , , dan semua kotak dan produk mereka. Ini segera menghasilkan model f a b c a b cR2fSebuahbcSebuahbc

f=Sebuah2+bc+konstan+kesalahan

dengan MSE root di bawah 34 dan disesuaikan dari 0,9999R2 . Koefisien estimasi 1,0112 dan 0,988 menunjukkan data dapat secara artifisial dihasilkan dengan rumus

f=Sebuah2+bc+50

ditambah sedikit kesalahan distribusi normal dari SD kira-kira sama dengan 50.

Edit

Menanggapi petunjuk @ knorv, saya melanjutkan analisis. Untuk melakukannya, saya menggunakan teknik yang telah berhasil sejauh ini, dimulai dengan memeriksa matriks sebar residu terhadap variabel asli. Benar saja, ada indikasi yang jelas korelasi antara dan residual (meskipun OLS regresi terhadap , , dan tidak tidak menunjukkan adalah "signifikan"). Melanjutkan dalam nada ini saya mengeksplorasi semua korelasi antara istilah kuadrat dan residu baru dan menemukan hubungan kecil tapi sangat signifikan denganf a a 2 b * c a a 2 , ... , e 2 , a * b , a * c , ... , d * e b 2SebuahfSebuahSebuah2bcSebuahSebuah2,...,e2,Sebuahb,Sebuahc,...,deb2. "Sangat signifikan" berarti bahwa semua pengintaian ini melibatkan melihat sekitar 20 variabel yang berbeda, jadi kriteria saya untuk signifikansi pada ekspedisi memancing ini adalah sekitar 0,05 / 20 = 0,0025: sesuatu yang kurang ketat dapat dengan mudah menjadi artefak dari probing for fit.

Ini memiliki semacam aroma model fisik yang kami harapkan, dan karenanya mencari, hubungan dengan koefisien "menarik" dan "sederhana". Jadi, misalnya, melihat bahwa koefisien estimasi adalah -0,0092 (antara -0,005 dan -0,013 dengan kepercayaan 95%), saya memilih menggunakan -1/100 untuk itu. Jika ini adalah dataset lain, seperti pengamatan sistem sosial atau politik, saya tidak akan membuat perubahan seperti itu tetapi hanya menggunakan perkiraan OLS apa adanya.b2

Pokoknya, peningkatan kecocokan diberikan oleh

f=Sebuah+Sebuah2+bc-b2/100+30.5+kesalahan

dengan rata-rata residual , standar deviasi 26,8, semua residu antara -50 dan +43, dan tidak ada bukti ketidaknormalan (walaupun dengan dataset sekecil itu kesalahannya bahkan dapat terdistribusi secara seragam dan orang tidak dapat membedakannya). Pengurangan dalam deviasi standar residu dari sekitar 50 menjadi sekitar 25 akan sering dinyatakan sebagai "menjelaskan 75% dari varian residu."0


Saya tidak mengklaim bahwa ini adalah yang formula yang digunakan untuk menghasilkan data . Residunya cukup besar untuk memungkinkan beberapa perubahan yang cukup besar pada beberapa koefisien. Sebagai contoh, 95% CIs untuk koefisien , , dan konstanta adalah [-0,4, 2,7], [-0,013, -0,003], dan [-7, 61]. Intinya adalah bahwa jika ada kesalahan acak sebenarnya telah diperkenalkan dalam prosedur pembuatan data (dan itu berlaku untuk semua data dunia nyata), yang akan menghalangi identifikasi definitif dari koefisien (dan bahkan semua variabel yang mungkin terlibat) ). Itu bukan batasan metode statistik: itu hanya fakta matematika.b 2Sebuahb2

BTW, menggunakan regresi kuat saya bisa cocok dengan model

f=1.0103Sebuah2+0,99493bc-0,007b2+46,78+kesalahan

dengan SD residual 27,4 dan semua residu antara -51 dan +47: pada dasarnya sama baiknya dengan fit sebelumnya tetapi dengan satu variabel lebih sedikit. Itu lebih pelit dalam arti itu, tetapi kurang pelit dalam arti bahwa saya belum membulatkan koefisien ke nilai-nilai "baik". Namun demikian, ini adalah bentuk yang biasanya saya sukai dalam analisis regresi jika tidak ada teori yang ketat tentang nilai-nilai apa yang seharusnya dimiliki oleh koefisien dan variabel mana yang harus dimasukkan.

Kemungkinan ada hubungan kuat tambahan yang mengintai di sini , tetapi mereka harus cukup rumit. Kebetulan, mengambil data yang SD aslinya adalah 3410 dan mengurangi variasinya menjadi residu dengan SD 27 adalah pengurangan varians 99,99384% ( dari fit baru ini). Orang akan terus mencari efek tambahan hanya jika SD residual terlalu besar untuk tujuan yang dimaksudkan. Dengan tidak adanya tujuan selain menebak-nebak OP, saatnya untuk berhenti.R2

whuber
sumber
1
Kerja bagus! Sejauh ini sepertinya ini jawaban terbaik.
Zach
@whuber: Kerja bagus - Anda semakin dekat! :-) Memang benar bahwa data itu dibuat secara artifisial dengan rumus plus istilah kesalahan. Tapi rumusnya tidak persis seperti yang Anda temukan - Anda kehilangan beberapa istilah. Tapi Anda sudah dekat dan Anda saat ini memimpin :-)
knorv
4
@whuber saya sudah memberi +1 saya, tetapi saya ingin menambahkan bahwa ini sangat instruktif untuk membaca pendekatan seseorang untuk masalah seperti itu. Anda layak mendapatkan hadiah dengan cara apa pun.
chl
1
@ bill saya memang mencobanya, sejak awal. Saya percaya penjelasan saya menyediakan ruang untuk proposal Anda dan juga dua yang saya sertakan. Ada lebih dari satu jawaban yang benar. Saya melanjutkan analisis dan memasukkan istilah-istilah tambahan itu karena jelas ada pola dalam residu dan bahwa akuntansi untuk mereka secara material mengurangi varians residual. (Akan saya akui bahwa saya hanya menghabiskan sedikit waktu dan perhatian pada hal ini: waktu total untuk analisis awal, termasuk menulis jawabannya, adalah 17 menit. Lebih banyak waktu sering diterjemahkan menjadi lebih banyak wawasan ...)
whuber
1
@naught Sangatlah menarik untuk memulai dengan formula yang begitu panjang dan menerapkan Elastic Net (atau algoritma penghapusan variabel yang serupa). Saya menduga keberhasilan pendekatan semacam itu akan tergantung pada menjaga jumlah fungsi relatif kecil dan termasuk fungsi yang benar di antara mereka - yang terdengar lebih seperti masalah keberuntungan dan tebakan yang baik daripada penyelidikan berprinsip. Tetapi jika secara membabi buta melemparkan sejumlah besar bentuk fungsional pada masalah menghasilkan kesuksesan, itu akan layak untuk diketahui.
Whuber
5

Pertanyaan Anda perlu disempurnakan karena fungsinya fhampir pasti tidak ditentukan secara unik oleh data sampel. Ada banyak fungsi berbeda yang dapat menghasilkan data yang sama.

Yang sedang berkata, Analisis Varians (ANOVA) atau "studi sensitivitas" dapat memberi tahu Anda banyak tentang bagaimana input Anda (AA..EE) mempengaruhi output Anda (FF).

Aku hanya melakukan ANOVA cepat dan menemukan model yang cukup baik: FF = 101*A + 47*B + 49*C - 4484. Fungsi ini tampaknya tidak bergantung pada DD atau EE secara linear. Tentu saja, kita bisa melangkah lebih jauh dengan model dan menambahkan istilah kuadratik dan campuran. Akhirnya Anda akan memiliki model yang sempurna yang sesuai dengan data dan tidak memiliki nilai prediksi. :)

Pete
sumber
@Pete Seperti yang Anda katakan, Anda dapat menambahkan kuadrat, kubik, kuartik .... dan istilah campuran tapi itu hanya akan menjadi omong kosong. Ada omong kosong dan ada bot omong kosong non-sensis, omong kosong paling non-sensikel adalah "omong kosong statistik".
IrishStat
2
@IrishStat biasanya tidak masuk akal untuk menambahkan campuran dan syarat pemesanan lebih tinggi; hanya buruk ketika dilakukan tanpa pengekangan dan tanpa memperhatikan teori
Pete
2
@Pete. Benar! Tidak adanya teori yang sudah ada membuatnya konyol.
IrishStat
@Pete: Apa R ^ 2 yang Anda dapatkan untuk model Anda?
knorv
@knorv: Saya tidak begitu ingat tapi itu> 0,90. Ketika diplot tentang garis regresi titik-titik tampaknya memiliki sedikit "S" / bentuk kubik jadi saya menduga fungsi "f" adalah ciptaan matematika di mana seseorang mengetik 100A + 50 (B + C) + urutan lebih tinggi istilah yang melibatkan D&E
Pete
3

Secara umum, tidak ada makan siang gratis dalam pembelajaran mesin:

Secara khusus, jika algoritma A mengungguli algoritma B pada beberapa fungsi biaya, maka secara longgar harus ada persis seperti banyak fungsi lain di mana B mengungguli A

/ edit: juga, SVM radial dengan C = 4 dan sigma = 0,206 dengan mudah menghasilkan R2 0,99. Mengekstraksi persamaan aktual yang digunakan untuk memperoleh dataset ini dibiarkan sebagai latihan untuk kelas. Kode dalam 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)
Zach
sumber
-2

Semua Model salah tetapi beberapa berguna: 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)

di mana ZZ (T) = 0 FOR T = 1,10 = 1 LAINNYA

Tampaknya ada "hubungan tertinggal" antara Y dan AA DAN perubahan yang dijelaskan dalam mean untuk pengamatan 11-25.

Ingin tahu hasil jika ini bukan data kronologis atau spasial.

IrishStat
sumber
@IrishStats Apa itu "Kotak GEP"?
knorv
IrishStat: Data tidak kronologis. Jadi pemesanan pengamatan tidak penting. Pergeseran dalam mean untuk pengamatan # 11-25 hanyalah efek samping pada bagaimana saya mengambil dataset.
knorv
1
@IrishStat: Maksud saya, saya kebetulan mengambil catatan dalam urutan tertentu (pikirkan ORDER BY). Baris tidak memiliki urutan khusus yang melekat. Jadi Anda dapat mengatur ulang dengan aman tanpa kehilangan informasi apa pun. Maaf jika saya membingungkan Anda :-)
knorv
1
IrishStat: Dataset tidak berurutan. The AA(T-1)istilah dalam persamaan Anda tidak masuk akal dalam konteks ini.
nucky101
2
AA(T-1)R2
-3

r kuadrat dari 97,2

Estimasi / Pemeriksaan Diagnostik untuk Variabel YY
X1 AAS
X2 BB
X3 BBS
X4 CC

Jumlah Residu (R) = n 25
Jumlah Derajat Kebebasan = nm 20
Residual Mean = Jumlah R / n -.141873E-05
Jumlah Kuadrat = Jumlah R 2 .775723E + 07
Varians = SOS / (n) 310289.
Disesuaikan Varians = SOS / (nm) 387861.
Standar Deviasi RMSE = SQRT (Adj Var) 622.785
Standar Kesalahan Rata-rata = Standar Dev / (nm) 139.259
Rata-rata / Standar Kesalahan = Mean / SEM -.101877E-07
Mean Absolute Deviation = Jumlah (ABS (R)) / n 455.684
Nilai AIC (Kegunaan var) = nln + 2m 326.131
Nilai SBC (Kegunaan var) = nln + m * lnn 332.226
Nilai BIC (Kegunaan var) = lihat Wei p153 340.388
R Square = .972211
Durbin-Watson Statistik = [- A (T -1)] ** 2 / A
2 1.76580

**
MODEL KOMPONEN LAG COEFF STANDAR PT
# (BOP) NILAI NILAI KESALAHAN

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

SERI INPUT X1 AAS AA SQUARED

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

SERI INPUT X2 BB BB SEBAGAI DIBERIKAN

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

SERI INPUT X3 BBS BB SQUARED

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

SERI INPUT X4 CC CC SEBAGAI DIBERIKAN

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

 Sisa PLOT

IrishStat
sumber