数据挖掘:如何寻找功能形式?


34

我很好奇,可用于发现功能的函数形式重复的程序y = f(A, B, C) + error_term在那里我唯一的输入是一组观察(yABC)。请注意,的功能形式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 87288

在此示例中,假设我们知道FF = f(AA, BB, CC, DD, EE) + error term,但是我们不确定的功能形式f(...)

您将使用什么程序/什么方法来找到函数的形式f(...)

(奖励点:什么是的definiton你最好的猜测f给出上述数据:-)是的,有一个“正确”的答案,将产生的?R^2超过0.99)。


1
@OP:IrishStat在下面的评论提醒我,从理论上讲,如果您不了解自变量之间如何相互关联和/或因变量之间的关系,那么您将“一无所获”。例如,如果FF是“燃烧产率”,AA是燃料BB量,是氧气量,则您将寻找一个AABB
Pete

@Pete:交互条件是绝对可能的。我希望我不排除错误地提出我的问题。
knorv

2
@Pete:这没问题(在现实生活中我什至可以称其为现实),请看下面的答案。
2011年

3
皮特(Pete):在将函数与数据拟合的无数函数中,R^2 >= 0.99我们希望找到一种具有最佳性能与复杂度比的函数(当然也超出了样本拟合)。对不起,我没有写那么明确,我认为这很明显:-)
knorv 2011年

1
同样,既然问题得到了很好的回答,那么知道数据是否由下面建议的功能之一生成将很酷。
naught101

Answers:


29

要找到最适合数据的函数形式(所谓的自由形式或符号回归),请尝试使用此工具-据我所知,这是可用的最好的函数形式(至少我对此感到非常兴奋)...及其自由 :-)

http://creativemachines.cornell.edu/eureqa

编辑:我与Eureqa试了一下,我会去:

R 2 = 0.99988

AA+AA2+BBCC
R2=0.99988

我会称它为完美的配合(Eureqa提供了其他更好的配合解决方案,但这些解决方案也有些复杂。Eureqa偏爱这一解决方案,因此我选择了这一解决方案)-Eureqa在大约几秒钟的时间内为我做了所有工作一台普通的笔记本电脑;-)


6
仅供参考,Eureqa使用遗传编程来找到符号回归问题的解决方案。
Thies Heidecke,

10
+1令人印象深刻的性能,让您无需动脑筋就可以自动使用工具!
ub

1
@vonjd,该链接现在显示“ 30天免费试用”。您知道免费的替代方法吗?
denis 2014年

3
@denis:您可以尝试使用以下R包:cran.r-project.org/web/packages/rgp/index.html-但它不如上述软件复杂(不是吗?)
2014年

3
Eureqa仍然是免费的学术/非营利组织

25

单独使用 R 2并不是衡量拟合优度的好方法,但是除了观察到简约在建模中非常重要之外,我们在这里不做进一步介绍。R2

为此,请注意,探索性数据分析(EDA)和回归的标准技术(但不是逐步或其他自动化过程)建议使用以下形式的线性模型:

f=a+bc+abc+constant+error

使用OLS,确实可以实现大于0.99。通过这样的结果感到高兴,一方面是试探方双方和倒退˚F一个b * Ç* b * ç所有的广场和产品。这立即产生一个模型R2fabcabc

f=a2+bc+constant+error

的MSE根小于34,调整后的为0.9999R2。估计系数1.0112和0.988表示数据可能是通过以下公式人工生成的

f=a2+bc+50

加上SD的一点正态分布误差,大约等于50。

编辑

为了响应@knorv的提示,我继续进行分析。为此,我使用了迄今为止成功的技术,首先是根据原始变量检查残差的散点图矩阵。果然,有相关性的清晰指示和残差(即使的OLS回归˚F一个一个2,和b * ç没有表明一个是“显著”)。我继续沿着这一脉络探索了二次项a 2e 2a 之间的所有相关性afaa2bca以及新残差,发现与 b 2的关系很小但意义重大。“高度显着”意味着所有这些侦听都涉及查看约20个不同的变量,因此,我对该捕鱼远征的显着性标准约为0.05 / 20 = 0.0025:不那么严格的任何事物很容易成为适合性探测的假象。a2,,e2,ab,ac,,deb2

这具有物理模型的味道,因为我们期望并因此搜索具有“有趣”和“简单”系数的关系。因此,例如,看到的估计系数为-0.0092(在-0.005和-0.013之间,置信度为95%),我选择使用-1/100。如果这是其他一些数据集,例如对社会或政治系统的观察,我将不会进行任何更改,而只是按原样使用OLS估算。b2

无论如何,通过

F=一种+一种2+bC-b2/100+30.5+错误

平均残差为,标准差为26.8,所有残差在-50到+43之间,并且没有非正态性的证据(尽管数据集如此之小,误差甚至可以均匀分布,而且不能真正分辨出差异)。残留标准偏差从大约50减少到大约25常常表示为“解释了残留方差的75%”。0


我没有断言这是用于生成数据公式。残差足够大,以允许一些系数发生相当大的变化。例如,系数b 2和常数的95%CIs分别为[-0.4,2.7],[-0.013,-0.003]和[-7、61]。关键是,如果在数据生成过程中确实引入了任何随机错误(并且对所有现实数据都是如此),那将排除对系数(甚至是可能涉及的所有变量)的确定性识别)。这不是统计方法的局限性:这只是一个数学事实。一种b2

顺便说一句,使用稳健的回归我可以拟合模型

F=1.0103一种2+0.99493bC-0.007b2+46.78+错误

SD的残差为27.4,且所有残差在-51和+47之间:与先前的拟合程度基本相同,但变量较小。从这个意义上讲,它更为简约,但在我没有将系数四舍五入为“ nice”值的意义上,则更为简约。尽管如此,在没有任何严格的理论来确定系数应具有哪种值以及应包含哪些变量的情况下,我通常倾向于在回归分析中采用这种形式。

可能还有其他牢固的关系潜伏在这里,但它们必须相当复杂。顺便说一句,采用原始SD为3410的数据并将其变化减少为残差(SD为27),可以减少99.99384%的方差(此新拟合的)。仅当残余SD太大而无法达到预期目的时,人们才会继续寻找其他效果。除了对OP进行第二次猜测之外,没有其他目的了,该停止了。[R2


1
干得好!到目前为止,这似乎是最好的答案。
Zach

@whuber:干得好-您越来越近了!:-)的确,数据是使用公式加上错误项人工生成的。但是,该公式并不完全是您所找到的公式-您错过了一些术语。但是您已经接近,目前处于领先地位:-)
knorv 2011年

4
@whuber我已经给了我+1,但我想补充一点,这对于阅读一个人解决此类问题的方法很有帮助。无论如何,您都是值得的赏金。
chl

1
@bill我很早就尝试过。我相信我的解释为您的建议以及我所提出的两个建议提供了空间。答案不只一个。我继续分析并包括了这些额外的术语,因为很明显残差中存在模式,并且对它们进行会计处理可以大大减少残差方差。(我会承认,我已经花了很少的时间和精力在这一点,虽然:总时间初步分析,包括书面答复,为17分钟的时间往往转化为更多的有识之士...。)
whuber

1
@naught从这么长的公式开始并应用Elastic Net(或一些类似的变量消除算法)会很有趣。我怀疑任何这种方法的成功都将取决于使功能的数量保持相对较小并在其中包括正确的功能,这听起来比任何有原则的调查更像是个好运和猜测。但是,如果盲目地在问题上抛出大量的函数形式而获得成功,那将是值得知道的。
ub

5

您的问题需要完善,因为该函数f几乎肯定不是由示例数据唯一定义的。有许多不同的函数可以生成相同的数据。

话虽这么说,方差分析(ANOVA)或“敏感性研究”可以告诉您很多有关您的输入(AA..EE)如何影响您的输出(FF)的信息。

我只是做了一个快速的方差分析,并找到了一个合理的模型: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&
Pete

3

广义上讲,机器学习没有免费的午餐:

特别是,如果算法A在某些成本函数方面优于算法B,那么宽松地说,在其他函数中B一定要优于A

/ edit:同样,C = 4和sigma = 0.206的径向SVM容易产生0.99的R2。提取用于导出此数据集的实际方程式将作为该类的练习。代码在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 FOR T = 1,10 = 1否则

Y和AA之间似乎存在“滞后关系”,并且观察值11-25的均值发生了解释性变化。

如果这不是按时间顺序或空间数据,则会产生奇怪的结果。


@IrishStats什么是“ GEP盒子”?
knorv

IrishStat:数据不是按时间顺序的。因此,观察的顺序并不重要。观测值#11-25的平均值的变化仅是我如何检索数据集的副作用。
knorv

1
@IrishStat:我的意思是我只是碰巧以某种顺序检索记录(请考虑ORDER BY)。这些行没有固有的特殊顺序。因此,您可以安全地重新排列它们,而不会丢失任何信息。对不起,如果我让您感到困惑:-)
knorv 2011年

1
IrishStat:数据集是无序的。AA(T-1)在这种情况下,方程式中的术语没有任何意义。
naught101,2013年

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平均值的
标准误差=标准Dev /(nm)139.259
平均值/其标准误差=平均值/ 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 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平方

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

 剩余图

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.