通过聚类进行分段回归

数据挖掘 Python 回归 线性回归
2022-03-06 02:29:27

我想知道将数值数据(超过 3 个维度)聚类到不同的集群并在每个集群上进行曲线拟合以获得比使用单个模型更高的准确度的可能性。

由于线性回归是首选,有没有办法根据它们的线性拟合对数据点进行聚类?

这是因为我需要一个与输入数据匹配的结果,而不关心看不见的数据。我无法对数据进行硬编码并使用查找机制。相反,一个近似的数学函数会更好。

有现成的实现吗?(最好在 Python 中)

2个回答

你可以用一种非常简单的方式做到这一点。聚类最终成为无监督特征工程的一种形式,您假设组成员身份会改变潜在的线性关系。

例如,假设您的初始拟合是

y = b0 + b1*x1 + ... + bn*xn

然后创建 3 个集群 k1、k2、k3。创建 2 个二进制变量,is_k2 和 is_k3(两者均为零表示 k1 成员资格)。适合这个,你会有

y = (b0 + bn+1*is_k2 + bn+2*is_k3) + b1*x1 + ... + bn*xn

这里 bn+1 和 bn+2 只是与原始截距的偏差,但是,我们没有单独的斜率。为了使斜率独立,我们需要继续特征工程来创建 x1..xn 变量和 is_k2 & is_k3 变量的乘积。生成的系数可以被认为是默认类的斜率变化:

y = (b0 + bn+1*is_k2 + bn+2*is_k3) + (b1 + bn+3*is_k2 + bn+4*is_k3)*x1 + ...

您可能预料到的问题是您正在创建大量特征,因此您可能希望使用套索来驯服您的特征空间。