Обмін даними: Як мені зайнятися пошуком функціональної форми?


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 3360
6 3 65 16 87 288

У цьому прикладі припустимо, що ми це знаємо FF = f(AA, BB, CC, DD, EE) + error term, але ми не впевнені у функціональній формі f(...).

Яку процедуру / які методи ви використовуєте для пошуку функціональної форми f(...)?

(Бонусний бал: як ви найкраще здогадуєтесь у визначенні fнаведених вище даних? :-) І так, є "правильна" відповідь, яка дасть R^2перевищення 0,99.)


1
@OP: коментарі IrishStat, наведені нижче, нагадують мені, що без певних знань про те, як ваші незалежні змінні пов'язані між собою та / або залежною змінною, теоретично залишає вас "вгору за течією без весла". Наприклад, якщо б FF"вихід згоряння" і AAбув кількість палива, і BBбула кількість кисню, ви б шукали взаємодіючого терміна AAіBB
Піт

@ Pete: Взаємодія термінів абсолютно можлива. Я сподіваюся, що я цього не виключив, неправильно поставивши своє запитання.
knorv

2
@ Pete: Це не проблема (і я б навіть назвав це реалістичним в реальному житті), просто дивіться мою відповідь нижче.
vonjd

3
Піт: Із нескінченної кількості функцій, які відповідатимуть даним, R^2 >= 0.99хотілося б знайти ту, яка найкраще співвідносить продуктивність та складність (і, звичайно, не відповідає вибірці). Вибачте за те, що не написав цієї
виразності

1
Крім того, тепер, коли на це питання досить добре відповіли, було б цікаво дізнатися, чи дані були створені однією із запропонованих нижче функцій.
naught101

Відповіді:


29

Щоб знайти найкращу функціональну форму (так звану вільну форму чи символічну регресію) для даних, спробуйте цей інструмент - наскільки мені відомо, це найкращий доступний (принаймні, я дуже радий від цього) ... і його безкоштовно :-)

http://creativemachines.cornell.edu/eureqa

EDIT : Я спробував знятись з Eureqa, і я б пішов на:

AA+AA2+BBCC
R2=0.99988

Я б назвав це ідеальним пристосуванням (Eureqa дає інші, більш підходящі рішення, але вони теж трохи складніші. Eureqa надає перевагу цьому, тому я вибрав саме цей) - і Eureqa зробила все для мене приблизно за кілька секунд. звичайний ноутбук ;-)


6
лише для довідки, Еврика використовує генетичне програмування для пошуку рішення символічної проблеми регресії.
Thies Heidecke

10
+1 Вражаюча продуктивність для бездумного автоматичного інструменту!
whuber

1
@vonjd, посилання тепер говорить про "безкоштовну 30-денну пробну версію". Чи знаєте ви безкоштовну альтернативу?
denis

3
@denis: Ви можете спробувати цей пакет R: cran.r-project.org/web/packages/rgp/index.html - але він не такий складний, як
згадане

3
Eureqa як і раніше безкоштовна для академічних / некомерційних організацій
зворотній

25

R2

З цією метою зауважте, що стандартні методи аналізу розвідувальних даних (EDA) та регресії (але не ступінчасті або інші автоматизовані процедури) пропонують використовувати лінійну модель у формі

f=a+bc+abc+constant+error

R2fabcabc

f=a2+bc+constant+error

R2

f=a2+bc+50

плюс невелика нормально розподілена помилка SD приблизно дорівнює 50.

Редагувати

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: по суті так само добре, як і попереднє розміщення, але з однією меншою змінною. У цьому сенсі це більше парсимонічно, але менш парсимонічно в тому сенсі, що я не округляв коефіцієнти до «приємних» значень. Тим не менш, це форма, яку я зазвичай віддаю перевагу в регресійному аналізі, в якому відсутні будь-які суворі теорії щодо того, які саме значення повинні мати коефіцієнти та які змінні слід включати.

R2


1
Хороша робота! Поки що це здається найкращою відповіддю.
Зак

@whuber: Приємна робота - ти наближається! :-) Це правда, що дані були штучно створені формулою плюс термін помилки. Але формула не є точно такою, яку ви знайшли - вам не вистачає кількох термінів. Але ви близькі, і ви зараз ведете :-)
knorv

4
@whuber Я вже дав +1, але хотів би додати, що це дуже повчально читати підхід до такої проблеми. Ти коштуєш щедрості будь-яким способом.
chl

1
@bill Я це спробував, на початку. Я вірю, що моє пояснення надає місце для вашої пропозиції, а також двох включених мною пропозицій. Вірна відповідь більше. Я продовжив аналіз і включив ці додаткові терміни, оскільки було зрозуміло, що є залишки в залишках і що облік їх суттєво зменшує залишкову дисперсію. (Зізнаюся, я витратив на це дуже мало часу та уваги: ​​загальний час на початковий аналіз, включаючи написання відповіді, становив 17 хвилин. Більше часу часто перекладається на більш глибоке розуміння ...)
помах

1
@naught Було б цікаво почати з такої тривалої формули і застосувати еластичну мережу (або якийсь подібний алгоритм усунення змінних). Я підозрюю, що успіх будь-якого такого підходу залежатиме від збереження кількості функцій порівняно невеликим і включення правильних функцій серед них - що звучить більше як питання удачі та хороших здогадок, ніж будь-яке принципове розслідування. Але якщо сліпо кидання величезної кількості функціональних форм в результаті призводить до успіху, це варто було б знати.
whuber

5

Ваше питання потребує уточнення, оскільки функція fмайже точно не визначена однозначно за зразковими даними. Існує багато різних функцій, які можуть генерувати однакові дані.

При цьому, аналіз варіації (ANOVA) або "дослідження чутливості" може багато розповісти про те, як ваші входи (AA..EE) впливають на ваш вихід (FF).

Я просто зробив швидкий ANOVA і знайшов досить хорошу модель: FF = 101*A + 47*B + 49*C - 4484. Здається, функція не залежить від DD або EE лінійно. Звичайно, ми могли б піти далі з моделлю та додати терміни квадратики та суміші. Врешті-решт у вас буде ідеальна модель, яка надмірно відповідає даних і не має передбачуваного значення. :)


@Pete Як ви сказали, ви можете додати квадратичні, кубічні, кварцові .... і терміни суміші, але це було б просто дурницею. Є нісенітниця, і є нечуттєва нісенітниця бота, найбільш нечуттєва дурниця - це "статистична дурниця".
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

/ edit: також радіальний SVM з C = 4 та сигмою = 0.206 легко дає R2 0,99. Вилучення фактичного рівняння, яке використовується для отримання цього набору даних, залишається як вправа до класу. Код є в Р.

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 ІНШИЙ

Здається, що між Y та AA І пояснюється зміна середнього значення для спостережень 11-25.

Цікаві результати, якщо це не хронологічні чи просторові дані.


@IrishStats Що таке "GEP Box"?
knorv

IrishStat: Дані не є хронологічними. Тож упорядкування спостережень не має важливого значення. Зсув середнього значення для спостережень №11-25 є лише побічним ефектом від того, як я отримав набір даних.
knorv

1
@IrishStat: Я мав на увазі, що мені просто довелося отримати записи в певному порядку (подумайте ORDER BY). Ряди не мають властивого спеціального порядку. Таким чином, ви можете сміливо переставляти їх, не втрачаючи жодної інформації. Вибачте, якщо я переплутав вас :-)
knorv

1
IrishStat: Набір даних не упорядкований. AA(T-1)Член в вашому рівнянні не має сенсу в цьому контексті.
naught101

2
AA(T-1)R2

-3

r площа 97,2

Оцінка / діагностична перевірка змінної 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 / (нм) 387861.
Стандартне відхилення RMSE = SQRT (Adj Var) 622,785
Стандартна похибка середнього = Стандартна розминка / (нм) 139,259
Середня / її стандартна помилка = Середня / SEM-101877E-07
Середнє абсолютне відхилення = Сума (ABS (R)) / п 455.684
Значення AIC (uses var) = nln + 2m 326.131
Значення SBC (var використовується) = nln + m * lnn 332.226
BIC значення (Використання var) = див. Wei p153 340.388
R Square = .972211
Durbin-Watson Statistic = [- A (T -1)] ** 2 / А
2 1,76580

**
МОДЕЛЬНИЙ КОМПОНЕНТНИЙ СТАНДАРТ COEFF PT
# (BOP) ЗНАЧЕННЯ ПОМИЩЕННЯ

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

ВХОДНІ СЕРІЇ X1 ААС АА ПІД ЧАС

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

 Залишкова ПЛОТ

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.