การขุดข้อมูล: ฉันจะหารูปแบบการใช้งานได้อย่างไร?


34

ฉันอยากรู้เกี่ยวกับขั้นตอนการทำซ้ำที่สามารถใช้เพื่อค้นหารูปแบบการทำงานของฟังก์ชัน y = f(A, B, C) + error_termที่การป้อนข้อมูลของฉันเท่านั้นเป็นชุดของการสังเกต ( y, A, Bและ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 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 560
6 3 65 16 87 288

ในตัวอย่างนี้สมมติว่าเรารู้ว่าแต่เราไม่แน่ใจเกี่ยวกับรูปแบบการทำงานของFF = f(AA, BB, CC, DD, EE) + error termf(...)

ขั้นตอนอะไร / สิ่งที่วิธีการที่คุณจะใช้ในการประสบความสำเร็จในการหารูปแบบการทำงานของf(...)?

(จุดโบนัส: อะไรคือการคาดเดาที่ดีที่สุดของคุณในคำจำกัดความของfข้อมูลข้างต้น? :-) และใช่มีคำตอบที่ "ถูกต้อง" ที่จะให้ผลR^2มากกว่า 0.99)


1
@OP: ความคิดเห็นของ IrishStat ด้านล่างเตือนฉันว่าไม่มีความรู้ว่าตัวแปรอิสระของคุณเกี่ยวข้องกับแต่ละอื่น ๆ และ / หรือตัวแปรตามในทางทฤษฎีทำให้คุณ "ลำห้วยโดยไม่ต้องพาย" ตัวอย่างเช่นถ้าFFเป็น "ผลผลิตการเผาไหม้" และAAเป็นจำนวนเชื้อเพลิงและBBเป็นปริมาณของออกซิเจนคุณจะมองหาคำที่มีปฏิสัมพันธ์ของAAและBB
Pete

@Pete: เงื่อนไขการโต้ตอบเป็นไปได้อย่างแน่นอน ฉันหวังว่าฉันไม่ได้ออกกฎโดยการวางกรอบคำถามของฉันไม่ถูกต้อง
Knorv

2
@Pete: ไม่มีปัญหา (และฉันจะเรียกมันว่าเหมือนจริงในการตั้งค่าชีวิตจริง) เพียงแค่ดูคำตอบของฉันด้านล่าง
vonjd

3
Pete: จากจำนวนฟังก์ชั่นที่ไม่มีที่สิ้นสุดซึ่งจะพอดีกับข้อมูลโดยมีR^2 >= 0.99หนึ่งต้องการค้นหาหนึ่งที่มีอัตราส่วนประสิทธิภาพต่อความซับซ้อนที่ดีที่สุด (และจากตัวอย่างพอดีแน่นอน) ขออภัยที่ไม่ได้เขียนคำอธิบายนั้นฉันคิดว่ามันชัดเจน :-)
knorv

1
นอกจากนี้ในตอนนี้คำถามก็ตอบได้ดีพอสมควรมันจะเจ๋งถ้ารู้ว่าข้อมูลถูกสร้างโดยหนึ่งในฟังก์ชั่นที่แนะนำด้านล่าง
naught101

คำตอบ:


29

เพื่อหารูปแบบการทำงานที่เหมาะสมที่สุด (เรียกว่าฟรีฟอร์มหรือการถดถอยเชิงสัญลักษณ์) สำหรับข้อมูลลองใช้เครื่องมือนี้ - เพื่อความรู้ทั้งหมดของฉันนี่คือสิ่งที่ดีที่สุดที่มีอยู่ (อย่างน้อยฉันก็ตื่นเต้นมากเกี่ยวกับมัน) ... และ ฟรี :-)

http://creativemachines.cornell.edu/eureqa

แก้ไข : ฉันให้มันยิงกับ Eureqa และฉันจะไปสำหรับ:

กับ R 2 = 0.99988

AA+AA2+BBCC
R2=0.99988

ฉันจะเรียกมันว่าพอดี (Eureqa ให้วิธีแก้ปัญหาที่เหมาะสมกว่า แต่สิ่งเหล่านี้ซับซ้อนกว่านี้เล็กน้อย Eureqa ชอบสิ่งนี้ดังนั้นฉันเลือกอันนี้) - และ Eureqa ทำทุกอย่างให้ฉันภายในเวลาไม่กี่วินาที แล็ปท็อปปกติ ;-)


6
เพื่อการอ้างอิงยูเรกาใช้การเขียนโปรแกรมทางพันธุกรรมเพื่อค้นหาวิธีแก้ปัญหาการถดถอยเชิงสัญลักษณ์
Thies Heidecke

10
+1 ประสิทธิภาพที่น่าประทับใจสำหรับเครื่องมืออัตโนมัติที่ไม่สนใจ!
whuber

1
@ vonjd ตอนนี้ลิงค์บอกว่า "ทดลองใช้ฟรี 30 วัน" คุณจะรู้จักทางเลือกฟรีหรือไม่?
ปฏิเสธ

3
@denis: คุณสามารถลองแพ็คเกจ R นี้ได้: cran.r-project.org/web/packages/rgp/index.html - แต่มันไม่ซับซ้อนเท่าซอฟต์แวร์ดังกล่าวข้างต้น (ยังไม่ได้?)
vonjd

3
Eureqa ยังคงให้บริการฟรีสำหรับองค์กรการศึกษา / องค์กรไม่แสวงผลกำไร
Inverse

25

เพียงอย่างเดียวไม่ได้เป็นเครื่องวัดความดีที่เหมาะสม แต่อย่าเข้าไปในที่นี่ยกเว้นสังเกตว่าparsimonyมีค่าในการสร้างแบบจำลองR2

โปรดทราบว่าเทคนิคมาตรฐานของการวิเคราะห์ข้อมูลเชิงสำรวจ (EDA) และการถดถอย (แต่ไม่ใช่ขั้นตอนแบบขั้นตอนหรือกระบวนการอัตโนมัติอื่น ๆ ) แนะนำให้ใช้แบบจำลองเชิงเส้นในแบบฟอร์ม

=a+* * * *+a* * * ** * * *+คงที่+ความผิดพลาด

การใช้ OLS จะทำให้ค่าสูงกว่า 0.99 กำลังใจด้วยเช่นผลอย่างใดอย่างหนึ่งคืออยากจะตารางทั้งสองด้านและถอยหลังบน, B * C , * B * C , และทุกสี่เหลี่ยมและผลิตภัณฑ์ของตน สิ่งนี้จะสร้างโมเดลทันทีR2a* * * *a* * * ** * * *

=a2+* * * *+คงที่+ความผิดพลาด

กับ MSE รากของภายใต้ 34 และปรับของ R20.9999 ค่าสัมประสิทธิ์โดยประมาณที่ 1.0112 และ 0.988 แนะนำให้สร้างข้อมูลด้วยสูตร

=a2+* * * *+50

บวกข้อผิดพลาดการกระจายเล็กน้อยตามปกติของ SD ประมาณเท่ากับ 50

แก้ไข

aaa2* * * *aa2,...,อี2,a* * * *,a* * * *,...,d* * * *อี2

2

อย่างไรก็ตามได้รับการปรับปรุงให้ดีขึ้นโดย

=a+a2+* * * *-2/100+30.5+ความผิดพลาด

0


a2

BTW โดยใช้การถดถอยที่แข็งแกร่งฉันสามารถพอดีกับรูปแบบ

=1.0103a2+0.99493* * * *-0.0072+46.78+ความผิดพลาด

ด้วย SD ที่เหลือ 27.4 และค่าคงที่ทั้งหมดระหว่าง -51 ถึง +47: โดยพื้นฐานแล้วดีพอ ๆ กับรุ่นก่อนหน้า แต่มีตัวแปรน้อยกว่าหนึ่งค่า มันมีความหมายมากกว่าในแง่ที่ว่า แต่ฉันก็ไม่ได้มีค่าสัมประสิทธิ์ในแง่ที่ว่าฉันไม่ได้ปัดค่าสัมประสิทธิ์เป็นค่า "ดี" อย่างไรก็ตามนี่คือรูปแบบที่ฉันมักจะชอบในการวิเคราะห์การถดถอยไม่มีทฤษฎีที่เข้มงวดเกี่ยวกับชนิดของค่าสัมประสิทธิ์ที่ควรจะมีและตัวแปรที่ควรจะรวม

อาจเป็นไปได้ว่าความสัมพันธ์ที่แข็งแกร่งเพิ่มเติมกำลังซุ่มอยู่ที่นี่แต่พวกเขาจะต้องค่อนข้างซับซ้อน อนึ่งการรับข้อมูลที่มี SD ต้นฉบับเป็น 3410 และการลดความแปรปรวนของพวกเขาไปยังส่วนที่เหลือด้วย SD ของ 27 คือการลดลงของความแปรปรวน99.99384% (R2ของแบบใหม่นี้) หนึ่งจะยังคงมองหาผลกระทบเพิ่มเติมเฉพาะในกรณีที่เหลือ SD มีขนาดใหญ่เกินไปสำหรับวัตถุประสงค์ที่ตั้งใจไว้ นอกเหนือจากการคาดเดา OP ครั้งที่สองแล้วก็ถึงเวลาที่จะต้องหยุด


1
การทำงานที่ดี! จนถึงตอนนี้ดูเหมือนว่าคำตอบที่ดีที่สุด
Zach

@whuber: ทำงานได้ดี - คุณเข้าใกล้! :-) มันเป็นความจริงที่ข้อมูลถูกสร้างขึ้นด้วยสูตรและคำผิดพลาด แต่สูตรไม่ตรงกับที่คุณพบ - คุณพลาดคำศัพท์สองสามคำ แต่คุณอยู่ใกล้และคุณกำลังเป็นผู้นำ :-)
knorv

4
@ เมื่อฉันให้ +1 ของฉันแล้ว แต่ฉันต้องการเพิ่มว่านี่เป็นคำแนะนำที่ดีในการอ่านแนวทางของปัญหาดังกล่าว คุณมีค่าความโปรดปรานในลักษณะใด ๆ
chl

1
@bill ฉันลองแล้ว แต่เนิ่นๆ ฉันเชื่อว่าคำอธิบายของฉันจะให้พื้นที่สำหรับข้อเสนอของคุณเช่นเดียวกับที่ฉันได้รวมไว้ มีคำตอบที่ถูกต้องมากกว่าหนึ่งข้อ ฉันวิเคราะห์อย่างต่อเนื่องและรวมคำศัพท์พิเศษเหล่านั้นเพราะมันชัดเจนว่ามีรูปแบบในส่วนที่เหลือและการบัญชีสำหรับพวกเขาลดความแปรปรวนที่เหลืออยู่อย่างมาก (ฉันจะยอมรับว่าฉันใช้เวลาและความสนใจน้อยมากในเรื่องนี้: เวลาทั้งหมดสำหรับการวิเคราะห์เบื้องต้นรวมถึงการเขียนคำตอบคือ 17 นาทีเวลามักจะแปลให้ลึกซึ้งยิ่งขึ้น ... )
whuber

1
@ ไม่มีสิ่งใดเป็นที่น่าสนใจที่จะเริ่มต้นด้วยสูตรที่ยาวและใช้ Elastic Net (หรืออัลกอริทึมการกำจัดตัวแปรที่คล้ายกัน) ฉันสงสัยว่าความสำเร็จของวิธีการดังกล่าวจะขึ้นอยู่กับการรักษาจำนวนของฟังก์ชั่นที่ค่อนข้างเล็กและรวมถึงฟังก์ชั่นที่ถูกต้องในหมู่พวกเขา - ซึ่งฟังดูคล้ายกับเรื่องของความโชคดีและการคาดเดาที่ดี แต่ถ้าหากการขว้างแบบฟอร์มการทำงานจำนวนมากที่ทำให้เกิดปัญหานั้นประสบความสำเร็จ
whuber

5

คำถามของคุณต้องการการปรับแต่งเนื่องจากฟังก์ชั่นfนั้นแทบจะไม่ได้ถูกกำหนดโดยตัวอย่างข้อมูล มีฟังก์ชั่นต่าง ๆ มากมายซึ่งสามารถสร้างข้อมูลเดียวกันได้

การวิเคราะห์ความแปรปรวน (ANOVA) หรือ "การศึกษาความไว" สามารถบอกคุณได้มากมายเกี่ยวกับว่าอินพุตของคุณ (AA..EE) ส่งผลต่อเอาต์พุตของคุณอย่างไร (FF)

FF = 101*A + 47*B + 49*C - 4484ผมก็ไม่ได้วิเคราะห์ความแปรปรวนอย่างรวดเร็วและพบว่าเป็นแบบอย่างที่ดีพอสมควร: ฟังก์ชั่นดูเหมือนจะไม่ขึ้นอยู่กับ DD หรือ EE เชิงเส้น แน่นอนเราสามารถไปต่อกับโมเดลและเพิ่มคำกำลังสองและเงื่อนไขการผสม ในที่สุดคุณจะมีรูปแบบที่สมบูรณ์แบบที่ตรงกับข้อมูลมากเกินไปและไม่มีค่าคาดการณ์ :)


@ Pet ตามที่คุณบอกว่าคุณสามารถเพิ่มกำลังสอง, ลูกบาศก์, ควอร์ติค .... และเงื่อนไขการผสม แต่นั่นอาจเป็นเพียงเรื่องไร้สาระ มีเรื่องไร้สาระและไม่มีบอทเรื่องไร้สาระที่ไร้สาระที่สุดเรื่องไร้สาระทางประสาทสัมผัสคือ "เรื่องไร้สาระทางสถิติ"
IrishStat

2
@IrishStat มันไม่ได้เป็นเรื่องไร้สาระโดยทั่วไปในการเพิ่มส่วนผสมและเงื่อนไขการสั่งซื้อที่สูงขึ้น; เลวก็ต่อเมื่อมันทำโดยไม่มีการยับยั้งและโดยไม่คำนึงถึงทฤษฎี
Pete

2
@Pete แก้ไข! การไม่มีทฤษฎีที่มีอยู่แล้วทำให้มันโง่
IrishStat

@Pete: คุณได้รับ R ^ 2 อะไรสำหรับโมเดลของคุณ
knorv

@ knorv: ฉันจำไม่ได้ แต่มันเป็น> 0.90 เมื่อพล็อตเกี่ยวกับเส้นถดถอยจุดต่าง ๆ ดูเหมือนจะมีรูปร่าง "S" / ลูกบาศก์เล็กน้อยดังนั้นฉันเดาว่าฟังก์ชัน "f" คือการสร้างทางคณิตศาสตร์ที่มีคนพิมพ์ 100A + 50 (B + C) + ลำดับที่สูงกว่า คำศัพท์ที่เกี่ยวข้องกับ D & E
Pete

3

พูดกว้างไม่มีอาหารกลางวันฟรีในการเรียนรู้ของเครื่อง:

โดยเฉพาะอย่างยิ่งหากอัลกอริทึม A มีประสิทธิภาพสูงกว่าอัลกอริทึม B ในบางฟังก์ชั่นค่าใช้จ่ายดังนั้นการพูดอย่างหลวม ๆ จะต้องมีฟังก์ชั่นอื่น ๆ อีกมากมายที่ B มีประสิทธิภาพดีกว่า

/ edit: นอกจากนี้ SVM เรเดียลที่มี C = 4 และ sigma = 0.206 ให้ผลตอบแทน 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)

โดยที่ ZZ (T) = 0 สำหรับ T = 1,10 = 1 OTHERWISE

ดูเหมือนว่าจะมี "ความสัมพันธ์ล่าช้า" ระหว่าง Y และ AA และการเปลี่ยนแปลงที่อธิบายในค่าเฉลี่ยสำหรับการสังเกต 11-25

ผลลัพธ์ที่น่าประหลาดใจหากนี่ไม่ใช่ข้อมูลตามลำดับเวลาหรืออวกาศ


@IrishStats "กล่อง GEP" คืออะไร
knorv

IrishStat: ข้อมูลไม่ใช่ลำดับเวลา ดังนั้นการเรียงลำดับของการสังเกตจึงไม่มีความสำคัญ การเปลี่ยนแปลงของค่าเฉลี่ยสำหรับการสังเกต # 11-25 เป็นเพียงผลข้างเคียงกับวิธีการที่ฉันเรียกคืนชุดข้อมูล
knorv

1
@IrishStat: ฉันหมายความว่าฉันเพิ่งเกิดขึ้นเพื่อดึงระเบียนในลำดับที่แน่นอน (คิดORDER BY) แถวไม่มีคำสั่งพิเศษโดยธรรมชาติ ดังนั้นคุณสามารถจัดเรียงใหม่ได้อย่างปลอดภัยโดยไม่สูญเสียข้อมูลใด ๆ ขออภัยถ้าฉันสับสนคุณ :-)
knorv

1
IrishStat: ชุดข้อมูลไม่ได้เรียงลำดับ AA(T-1)ระยะในสมการของคุณทำให้รู้สึกไม่ในบริบทนี้
naught101

2
@ ไม่มีนั่นถูกต้อง มันหมายความว่าการค้นพบสัมประสิทธิ์ "สำคัญ" ใด ๆ สำหรับตัวแปรที่ล้าหลังAA(T-1)หรือการเปลี่ยนค่าเฉลี่ยหมายถึงการจัดให้มีตัวแปรปลอม: overfitting สิ่งที่น่าสนใจในตัวอย่างนี้คือถึงแม้ว่าฉันมักจะคิดว่ามีความคิดฟุ้งซ่านเป็นการผลิตในแง่ดี (และไม่ถูกต้อง) สูงR2ค่าในสถานการณ์เช่นนี้ทำให้เกิดความแปรปรวนที่เหลือเพิ่มขึ้นอย่างมากเนื่องจากไม่พบตัวแปรสำคัญหลายตัวเช่นกัน
whuber

-3

r Square ของ 97.2

การประมาณค่า / การตรวจสอบวินิจฉัยสำหรับตัวแปร YY
X1 AAS
X2 BB
X3 BBS
X4 CC

จำนวนที่เหลือ (R) = n 25
จำนวนองศาอิสระ = nm 20
ค่าเฉลี่ยที่เหลือ = Sum R / n -.141873E-05
ผลรวมของกำลังสอง = Sum R 2. 775723E + 07
ความแปรปรวน = SOS / (n) 310289
ปรับ Variance = SOS / (nm) 387861.
ค่าเบี่ยงเบนมาตรฐาน RMSE = SQRT (Adj Var) 622.785
ข้อผิดพลาดมาตรฐานของ Mean = Standard Dev / (nm) 139.259
ค่าเฉลี่ย / ข้อผิดพลาดมาตรฐาน = Mean / SEM -.101877E-07
ค่าเบี่ยงเบนสัมบูรณ์แบบสัมบูรณ์ = ผลรวม (ABS (R)) / n 455.684
ค่า AIC (ใช้ var) = nln + 2m 326.131
ค่า SBC (ใช้ var) = nln + m * lnn 332.226
ค่า BIC (ใช้ var) = ดู Wei p153 340.388
R Square = .972211
Durbin-Watson สถิติ = [- A (T var) -1)] ** 2 / A
2 1.76580

**
รุ่นส่วนประกอบ LAG COEFF มาตรฐาน PT
# (BOP) ค่าความผิดพลาด

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

ซีรีย์ INPUT X1 AAS AA SQUARED

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

ซีรีย์ INPUT X2 BB BB ที่ได้รับ

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

ซีรี่ย์ INPUT X3 BBS BB SQUARED

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

ซีรีย์ INPUT 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.