您可能希望使用能够自动捕获非线性的灵活公式,例如,某个版本的广义加法模型。穷人的选择是多项式xk,x2k, ...,xpkk, 但是这样的多项式在它们各自变量范围的末端会产生可怕的过摆。更好的公式是使用(三次)B 样条曲线(请参阅此处 Google 第一页的随机介绍说明,以及此处的一本好书)。B样条是一系列局部驼峰:
http://ars.sciencedirect.com/content/image/1-s2.0-S0169743911002292-gr2.jpg
驼峰的高度由您的(线性、逻辑、其他 GLM)回归确定,因为您要拟合的函数很简单
θ=β0+∑k=1KβkB(x−xkhk)
对于您的驼峰的指定功能形式B(⋅). 到目前为止,最流行的版本是钟形平滑三次样条:
B(z)=⎧⎩⎨⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪14(z+2)3,14(3|x|3−6x2+4),14(2−x)3,0,−2≤z≤−1−1<x<11≤x≤2otherwise
在实施方面,您需要做的就是设置 3-5-10-任意数量的结xk对您的应用程序来说是合理的,并在数据集中创建相应的 3-5-10-whatever 变量,其值为B(x−xkhk). 通常,选择一个简单的值网格,其中hk是网格网格大小的两倍,因此在每个点上都有两条重叠的 B 样条,如上图所示。