如何对一组数据进行分段回归分析?
6 个回答
现在不去讨论题主有没有更好的拟合方法,就用题主想要的“分两段的一元二次函数”来拟合。
设这两段二次函数的解析式分别为 a_1x^2+b_1x+c 和 a_2x^2+b_2x+c ,分界点为 x=x_0 。
那么这个函数整体可以表达为
f(x) = (a_1x^2+b_1x+c_1) (1-u(x-x_0)) + (a_2x^2+b_2x+c) u(x-x_0)
其中 u(x)=\left\{ \begin{array}{rl} 1, & \text{if } x \ge 0 \\ 0, & \text{if } x < 0 \end{array} \right. 为阶跃函数。
设题主已经测得的数据点为 (x_i,y_i), 1 \le i \le n 。误差函数不妨就取最小二乘误差,即 E=\sum_{i=1}^n [y_i-f(x_i)]^2 ,其自变量为 f 中所有的参数( a_1,b_1,c_1,a_2,b_2,c_2,x_0 )。题主下面要做的事情就是求得这组参数的值以使得误差函数最小化了。
不过,因为阶跃函数有间断点,上述误差函数最小化起来有困难。
为了解决这个问题,可以用sigmoid函数 \sigma(x) = \frac{1}{1+\text{e}^{-wx}} 来代替阶跃函数 u(x) 。
这里引进了一个新的参数 w>0 ,它控制的是sigmoid函数的陡峭程度,当 w \rightarrow + \infty 时sigmoid函数就变成了阶跃函数。不过sigmoid函数处处可导,优化起来就比较简便了。
这位同学应该是指下面这种情况吧(假设piecewise linear分段线性)?
其实各学科都是交叉和相通的
为大家科普一个运筹学的”奇淫“技巧
--引入0-1变量的整数规划建模和求解
- 图模型和离散变量
首先建立一个chain graph(链状图)
每个node(点)引入一个0,1变量x_i
当x_i = 1的时候,就是一个 分界点
2. 约束条件
然后用 discerete second derivative 来刻画线性的性质
并把它放进约束条件
3. 目标函数
目标函数即拟合的绝对误差(L_1 范数)
这里用L_1范数是因为可以方便地转化成Linear Integer Programming(整数线性规划模型)
目前函数的另一部分是regularization term(规则项)
加上惩罚系数Lambda,为的是防止过拟合
4. 模型数值求解
最后这个问题可以完美地建模成一个线性0-1整数规划模型
并且可以求得全局最优解
但众所周知整数规划的求解是NP难的
好在有开源或者商业求解器可以掉包直接求解
把模型和系数输入到求解器就行
留德华叫兽:【学界】混合整数规划/离散优化的精确算法--分支定界法及优化求解器
最后,欢迎引用我的paper [1]
工作之余,历时一年半,一次大修和小修
刚刚发表在 Journal of Global Optimization~
参考
- ^ Learning Discontinuous Piecewise Affine Fitting Functions using Mixed Integer Programming for Segmentation and Denoising https://link.springer.com/article/10.1007/s10898-021-01034-x