分段函数回归问题

在设计离散事件系统的控制算法时,有一种方式是用“多项式+待定系数”来“回归”出控制策略来。如果系统本身比较接近连续系统,所得到的策略可能会有极好的效果;但万一系统离散性过强,在不同的状态下有着迥异的行为,其有效策略可表示为分段函数,泰勒定理表示惶恐不能,怎么办?

分段函数如何回归?

一种思路是“分段回归”:在找到断点的前提下,在各个子区间内进行回归,是一种分治法。这种方法的难点在于如何找到所有必要的断点。

另一种思路是“映射回归”(这个名字是乱起的,不一定合适):这里的“映射”可以理解为一段代码,它基于一定输入得到对应的输出,而这种方法造价于自动构造一棵“运算树”,这棵“树”里不仅包含一般的数学函数,还包含分支和循环。这种方法面临的问题也颇为棘手:“运算树”有着海量的可行空间,要找到有效的映射如大海捞针,目前并没有高效的搜索方法,与碰运气差不多。

此外,由于 Weierstrass 定理只保证连续函数的可逼近性,对于离散函数,用深度神经网络可能也会碰钉子 —— 不过我没试过。

转载于:https://my.oschina.net/kingmc/blog/839237

要实现拟合分段函数的多元线性回归,可以通过引入分段函数的指示变量来实现。具体来说,可以将自变量按照分段点进行分段,然后对于每个分段引入一个指示变量,表示该自变量是否在该分段内。 例如,假设有两个自变量 X1 和 X2,要拟合两个分段分段函数,可以将 X1 和 X2 分别按照分段点进行分段,得到四个区间。然后引入四个指示变量,分别表示 X1 和 X2 是否在每个区间内。这样,就可以将分段函数转化为多元线性回归的形式。 在 sklearn 中,可以使用 PolynomialFeatures 类来进行多项式特征转换,将自变量转化为多项式特征,并引入指示变量。然后使用 LinearRegression 类进行拟合。具体实现可以参考以下示例代码: ```python from sklearn.preprocessing import PolynomialFeatures from sklearn.linear_model import LinearRegression # 定义分段点 segment_points = [1, 2] # 生成多项式特征 poly = PolynomialFeatures(degree=1, include_bias=False) X_poly = poly.fit_transform(X) # 引入指示变量 X_indicator = np.zeros((X.shape[0], len(segment_points) + 1)) for i, p in enumerate(segment_points): X_indicator[:, i] = (X[:, 0] >= p) X_indicator[:, -1] = 1 # 拼接多项式特征和指示变量 X_new = np.hstack((X_poly, X_indicator)) # 拟合线性回归模型 reg = LinearRegression().fit(X_new, y) ``` 其中,X 是自变量的样本数据,y 是因变量的样本数据。segment_points 是分段点的列表,degree 是多项式特征的次数。最终得到的 X_new 包含了多项式特征和指示变量,可以用于拟合线性回归模型。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值