Khai thác dữ liệu: Làm thế nào tôi nên tìm về các hình thức chức năng?


34

Tôi rất tò mò về các thủ tục lặp lại có thể được sử dụng để khám phá ra dạng hàm của hàm y = f(A, B, C) + error_termnơi đầu vào duy nhất của tôi là một tập hợp các quan sát ( y, A, BC). Xin lưu ý rằng hình thức chức năng củaf là không rõ.

Hãy xem xét các tập dữ liệu sau:

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

Trong ví dụ này, giả sử rằng chúng tôi biết điều đó FF = f(AA, BB, CC, DD, EE) + error term, nhưng chúng tôi không chắc chắn về hình thức chức năng của f(...).

Quy trình / phương pháp nào bạn sẽ sử dụng để tìm ra hình thức chức năng của f(...)?

(Điểm thưởng: Dự đoán tốt nhất của bạn về fđịnh nghĩa của dữ liệu được cung cấp ở trên là gì? :-) Và vâng, có một câu trả lời "đúng" sẽ mang lại R^2vượt quá 0,99.)


1
@OP: Ý kiến ​​của IrishStat dưới đây nhắc nhở tôi rằng không có một số kiến ​​thức về cách các biến độc lập của bạn có liên quan với nhau và / hoặc biến phụ thuộc, theo lý thuyết, sẽ khiến bạn "lên lạch mà không có mái chèo". Ví dụ: nếu FFlà "năng suất đốt cháy" và AAlà lượng nhiên liệu, và BBlà lượng oxy, bạn sẽ tìm kiếm một thuật ngữ tương tác của AABB
Pete

@Pete: Điều khoản tương tác là hoàn toàn có thể. Tôi hy vọng tôi đã không loại trừ điều đó bằng cách đóng khung câu hỏi của tôi không chính xác.
knorv

2
@Pete: Đây không phải là vấn đề (và tôi thậm chí sẽ gọi nó là hiện thực trong môi trường thực tế), chỉ cần xem câu trả lời của tôi dưới đây.
vonjd

3
Pete: Trong số vô số các hàm sẽ phù hợp với dữ liệu mà R^2 >= 0.99người ta muốn tìm một hàm có hiệu suất tốt nhất với tỷ lệ phức tạp (dĩ nhiên là không phù hợp với mẫu). Xin lỗi vì đã không viết sự khám phá đó, tôi nghĩ đó là điều hiển nhiên :-)
knorv

1
Ngoài ra, bây giờ khi câu hỏi được trả lời hợp lý, sẽ rất tuyệt nếu biết liệu dữ liệu được tạo bởi một trong các chức năng được đề xuất dưới đây.
nè 101

Câu trả lời:


29

Để tìm dạng hàm phù hợp nhất (được gọi là hồi quy dạng tự do hoặc biểu tượng) cho dữ liệu, hãy thử công cụ này - với tất cả kiến ​​thức của tôi, đây là dạng tốt nhất hiện có (ít nhất là tôi rất hào hứng về nó) ... và nó miễn phí :-)

http://creativemachines.cornell.edu/eureqa

EDIT : Tôi đã bắn nó với Eureqa và tôi sẽ đi:

với R 2 = 0,99988

AA+AA2+BBCC
R2=0.99988

Tôi sẽ gọi nó là một sự phù hợp hoàn hảo (Eureqa đưa ra các giải pháp khác phù hợp hơn, tốt hơn, nhưng những điều này cũng phức tạp hơn một chút. Eureqa thích cái này, vì vậy tôi đã chọn cái này) - và Eureqa đã làm mọi thứ cho tôi trong vài giây một máy tính xách tay bình thường ;-)


6
chỉ để tham khảo, Eureqa sử dụng Lập trình di truyền để tìm giải pháp cho vấn đề hồi quy tượng trưng.
Thies Heidecke

10
+1 Hiệu suất ấn tượng cho một công cụ tự động, không suy nghĩ!
whuber

1
@vonjd, liên kết hiện có nội dung "dùng thử miễn phí 30 ngày". Bạn có biết về một sự thay thế miễn phí?
chối

3
@denis: Bạn có thể dùng thử gói R này: cran.r-project.org/web/packages/rgp/index.html - nhưng nó không phức tạp như phần mềm nói trên (chưa?)
vonjd

3
Eureqa vẫn miễn phí cho các tổ chức học thuật / phi lợi nhuận
Nghịch đảo

25

Chỉ riêng R 2 không phải là một thước đo tốt về sự phù hợp, nhưng chúng ta đừng đi sâu vào vấn đề đó ở đây ngoại trừ việc quan sát rằngsự khôn ngoancó giá trị trong mô hình hóa.R2

Cuối cùng, lưu ý rằng các kỹ thuật tiêu chuẩn về phân tích dữ liệu khám phá (EDA) và hồi quy (nhưng không phải theo từng bước hoặc các quy trình tự động khác) đề xuất sử dụng mô hình tuyến tính trong biểu mẫu

f=a+bc+abc+constant+error

Sử dụng OLS, điều này đạt được trên 0,99. Bị kích động bởi một kết quả như vậy, người ta bị cám dỗ vuông cả hai bên và hồi quy f trên a , b c , a b c , tất cả các hình vuông và sản phẩm của họ. Điều này ngay lập tức tạo ra một mô hìnhR2fabcabc

f=a2+bc+constant+error

với MSE gốc dưới 34 và R 2 điều chỉnh là 0,9999R2 . Các hệ số ước tính của 1.0112 và 0.988 cho thấy dữ liệu có thể được tạo một cách giả tạo với công thức

f=a2+bc+50

cộng với một chút lỗi phân phối thông thường của SD xấp xỉ bằng 50.

Chỉnh sửa

Đáp lại gợi ý của @ knorv, tôi tiếp tục phân tích. Để làm như vậy, tôi đã sử dụng các kỹ thuật đã thành công cho đến nay, bắt đầu bằng việc kiểm tra ma trận phân tán của phần dư so với các biến ban đầu. Chắc chắn, có một dấu hiệu rõ ràng của sự tương quan giữa và dư (mặc dù OLS hồi quy của f đối với một , một 2 , và b * c đã không chỉ một là "quan trọng"). Tiếp tục trong tĩnh mạch này tôi khám phá tất cả các mối tương quan giữa các điều khoản bậc hai một 2 , ... , e 2 , một *afaa2bca và phần dư mới và tìm thấy một mối quan hệ nhỏ nhưng có ý nghĩa cao với b 2 . "Rất có ý nghĩa" có nghĩa là tất cả việc rình mò này liên quan đến việc xem xét khoảng 20 biến số khác nhau, do đó, tiêu chí quan trọng của tôi đối với chuyến thám hiểm câu cá này là khoảng 0,05 / 20 = 0,0025: bất cứ điều gì ít nghiêm ngặt hơn đều có thể dễ dàng trở thành vật phẩm của việc thăm dò.a2,,e2,ab,ac,,deb2

Điều này có một cái gì đó mang hương vị của một mô hình vật lý mà chúng ta mong đợi, và do đó tìm kiếm các mối quan hệ với các hệ số "thú vị" và "đơn giản". Vì vậy, ví dụ, khi thấy rằng hệ số ước tính của là -0,0092 (trong khoảng -0,005 đến -0,013 với độ tin cậy 95%), tôi đã chọn sử dụng -1/100 cho nó. Nếu đây là một số dữ liệu khác, chẳng hạn như các quan sát về một hệ thống xã hội hoặc chính trị, tôi sẽ không thực hiện các thay đổi như vậy mà chỉ sử dụng các ước tính OLS như hiện trạng.b2

Dù sao, một sự phù hợp được cải thiện được đưa ra bởi

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

0


ab2

BTW, sử dụng hồi quy mạnh mẽ Tôi có thể phù hợp với mô hình

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

với SD dư là 27,4 và tất cả các phần dư trong khoảng từ -51 đến +47: về cơ bản là tốt như mức phù hợp trước đó nhưng với một biến ít hơn. Theo nghĩa đó thì khó hiểu hơn, nhưng ít khó hiểu hơn theo nghĩa là tôi đã không làm tròn các hệ số thành các giá trị "đẹp". Tuy nhiên, đây là hình thức tôi thường ưu tiên trong phân tích hồi quy mà không có bất kỳ lý thuyết nghiêm ngặt nào về các loại giá trị mà các hệ số nên có và các biến nào nên được đưa vào.

R2


1
Làm tốt lắm! Cho đến nay điều này có vẻ như câu trả lời tốt nhất.
Zach

@whuber: Làm việc tốt - bạn đang đến gần! :-) Đúng là dữ liệu được tạo một cách giả tạo với công thức cộng với một thuật ngữ lỗi. Nhưng công thức không chính xác như công thức bạn đã tìm thấy - bạn đang bỏ lỡ một vài điều khoản. Nhưng bạn đang ở gần và bạn hiện đang dẫn đầu :-)
knorv

4
@whuber Tôi đã cho +1 của mình, nhưng tôi muốn nói thêm rằng điều này rất có ích khi đọc cách tiếp cận của một người đối với vấn đề như vậy. Bạn có giá trị tiền thưởng trong bất kỳ cách nào.
chl

1
@bill Tôi đã thử rồi, từ rất sớm. Tôi tin rằng lời giải thích của tôi cung cấp chỗ cho đề xuất của bạn cũng như hai tôi đã đưa vào. Có nhiều hơn một câu trả lời đúng. Tôi tiếp tục phân tích và bao gồm các điều khoản bổ sung đó bởi vì rõ ràng có các mô hình trong phần dư và việc tính toán cho chúng làm giảm đáng kể phương sai còn lại. (Tôi sẽ thú nhận rằng tôi đã dành rất ít thời gian và sự chú ý về điều này, mặc dù: tổng thời gian cho phân tích ban đầu, bao gồm viết câu trả lời, là 17 phút. Nhiều thời gian hơn thường chuyển sang hiểu biết sâu sắc hơn ...)
whuber

1
@naught Thật thú vị khi bắt đầu với một công thức dài như vậy và áp dụng một Mạng đàn hồi (hoặc một số thuật toán loại bỏ biến tương tự). Tôi nghi ngờ sự thành công của bất kỳ cách tiếp cận nào như vậy sẽ phụ thuộc vào việc giữ số lượng chức năng tương đối nhỏ và bao gồm các chức năng chính xác trong số chúng - nghe có vẻ giống như một vấn đề may mắn và đoán tốt hơn bất kỳ cuộc điều tra nguyên tắc nào. Nhưng nếu mù quáng ném một số lượng lớn các hình thức chức năng vào vấn đề dẫn đến thành công, điều đó sẽ đáng để biết.
whuber

5

Câu hỏi của bạn cần tinh chỉnh bởi vì chức năng fgần như chắc chắn không được xác định duy nhất bởi dữ liệu mẫu. Có nhiều chức năng khác nhau có thể tạo ra cùng một dữ liệu.

Điều đó đang được nói, Phân tích phương sai (ANOVA) hoặc "nghiên cứu độ nhạy" có thể cho bạn biết rất nhiều về cách đầu vào của bạn (AA..EE) ảnh hưởng đến đầu ra của bạn (FF).

Tôi vừa thực hiện một ANOVA nhanh chóng và tìm thấy một mô hình hợp lý tốt : FF = 101*A + 47*B + 49*C - 4484. Hàm dường như không phụ thuộc vào DD hoặc EE tuyến tính. Tất nhiên, chúng ta có thể đi xa hơn với mô hình và thêm các thuật ngữ bậc hai và hỗn hợp. Cuối cùng, bạn sẽ có một mô hình hoàn hảo phù hợp với dữ liệu và không có giá trị dự đoán. :)


@Pete Như bạn đã nói, bạn có thể thêm các thuật ngữ bậc hai, bậc ba, bậc bốn .... và hỗn hợp nhưng điều đó sẽ chỉ là vô nghĩa. Có vô nghĩa và có bot vô nghĩa không nhạy cảm, vô nghĩa phi cảm giác nhất là "vô nghĩa thống kê".
IrishStat

2
@IrishStat thường không vô nghĩa khi thêm hỗn hợp và các điều khoản bậc cao hơn; chỉ tệ khi nó được thực hiện mà không có sự kiềm chế và không liên quan đến lý thuyết
Pete

2
@Pete. Chính xác! Sự vắng mặt của một lý thuyết có sẵn làm cho nó ngớ ngẩn.
IrishStat

@Pete: R ^ 2 bạn nhận được gì cho mô hình của mình?
knorv

@knorv: Tôi không nhớ lắm nhưng nó đã> 0,90. Khi vẽ sơ đồ về đường hồi quy, các điểm dường như có một chút hình chữ "S" / khối nên tôi đoán hàm "f" là một sáng tạo toán học trong đó ai đó đã gõ 100A + 50 (B + C) + bậc cao hơn các điều khoản liên quan đến D & E.
Pete

3

Nói rộng ra, không có bữa ăn trưa miễn phí trong học máy:

Cụ thể, nếu thuật toán A vượt trội hơn thuật toán B trên một số hàm chi phí, thì nói một cách lỏng lẻo là phải tồn tại chính xác như nhiều hàm khác trong đó B vượt trội hơn A

/ chỉnh sửa: đồng thời, một SVM xuyên tâm có C = 4 và sigma = 0,206 dễ dàng mang lại R2 là 0,99. Trích xuất phương trình thực tế được sử dụng để lấy dữ liệu này được để lại như một bài tập cho lớp. Mã nằm trong 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

Tất cả các Mô hình đều sai nhưng một số hữu ích: 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)

trong đó ZZ (T) = 0 CHO T = 1,10 = 1 KHÁC

Dường như có một "mối quan hệ tụt hậu" giữa Y và AA VÀ một sự thay đổi được giải thích trong trung bình cho các quan sát 11-25.

Kết quả tò mò nếu đây không phải là dữ liệu theo thời gian hoặc không gian.


@IrishStats "Hộp GEP" là gì?
knorv

IrishStat: Dữ liệu không theo trình tự thời gian. Vì vậy, thứ tự của các quan sát không quan trọng. Sự thay đổi trong giá trị trung bình của các quan sát # 11-25 chỉ là tác dụng phụ đối với cách tôi truy xuất tập dữ liệu.
knorv

1
@IrishStat: Ý tôi là tôi chỉ tình cờ lấy lại các bản ghi theo một thứ tự nhất định (nghĩ ORDER BY). Các hàng không có thứ tự đặc biệt vốn có. Vì vậy, bạn có thể sắp xếp lại chúng một cách an toàn mà không mất bất kỳ thông tin nào. Xin lỗi nếu tôi làm bạn bối rối :-)
knorv

1
IrishStat: Bộ dữ liệu không có thứ tự. Các AA(T-1)thuật ngữ trong phương trình của bạn làm cho không có ý nghĩa trong bối cảnh này.
nè 101

2
@naught Đúng vậy. Điều đó có nghĩa là việc tìm ra bất kỳ hệ số "đáng kể" nào cho biến bị trễ AA(T-1)hoặc của bất kỳ "dịch chuyển trung bình" nào đều đưa ra các biến giả: quá mức. Điều thú vị trong ví dụ này là mặc dù tôi có xu hướng nghĩ rằng quá mức là sản xuất cao một cách lạc quan (và không chính xác)R2trong các trường hợp này, nó đã tạo ra một sự gia tăng lớn trong phương sai dư, bởi vì nó cũng không tìm thấy một số biến quan trọng.
whuber

-3

r vuông 97,2

Ước tính / Kiểm tra chẩn đoán cho biến YY
X1 AAS
X2 BB
X3 BBS
X4 CC

Số lượng dư (R) = n 25
Số bậc tự do = nm 20
Trung bình dư = Sum R / n -.141873E-05
Tổng bình phương = Sum R 2 .775723E + 07
Phương sai = SOS / (n) 310289. AIC Giá trị (Sử dụng var) = nln + 2m 326.131 Giá trị SBC (Sử dụng var) = nln + m * lnn 332.226 Giá trị BIC (Sử dụng var) = xem Wei p153 340.388 R Square = .972211
điều chỉnh Phương sai = SOS / (nm) 387861.
Độ lệch chuẩn RMSE = SQRT (Adj Var) 622.785
Lỗi tiêu chuẩn của giá trị trung bình = Độ lệch chuẩn / (nm) 139.259 Ý
nghĩa / Lỗi tiêu chuẩn của nó = Trung bình / SEM -.101877E-07
Độ lệch tuyệt đối trung bình = Tổng (ABS (R)) / n 455.684




Thống kê Durbin-Watson = [- A -1)] ** 2 / A
2 1.76580

**
MÔ HÌNH THÀNH PHẦN LAG COEFF STANDARD PT
# (BOP) GIÁ TRỊ GIÁ TRỊ LRI

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

INPUT SERIES X1 AAS AA SQUARED

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

INPUT SERIES X2 BB BB NHƯ VẬY

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

INPUT SERIES X3 BBS BB SQUARED

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

INPUT SERIES X4 CC CC NHƯ VẬY

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

 PLOT dư

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.