没有应该在线性函数上的数据的无监督聚类

数据挖掘 聚类 无监督学习
2022-03-04 06:45:40

当我有一个数据集,其中每个数据都具有xy,并且(x,y)具有其中一个的关系时y = a_i*x + b_i (i=1,2,...)

下面写的流程是否可用?它属于哪个算法?

过程是......

我有很多观点(x, y)机器找到代表点的 2 个线性函数。机器消除了远离 3 条线的点。

在这种情况下,我想我将参数设置为线性函数的数量和标准来判断一个点是否在一条线上。

第一个图是我的数据集。

我想要一台机器接受行数(在这种情况下为 3)并找到 3 行(作为第二个图(图中的行只是为了想法而没有计算)),然后最后建议可能的点不属于他们任何一个。(在这种情况下,例如,(71.6, 22))

例如,我应该扩展k-means算法来实现这个过程吗?///在此处输入图像描述在此处输入图像描述

4个回答

非常有趣的问题!

第一种方法:PCA + K-means

您的数据将在第二个主成分上得到很好的解释如果您在数据上应用 PCA,则第一台 PC 会沿着您完全失去差异的线捕获数据,但第二台 PC 与第一台 PC 相垂直,因此您的数据将以与每条线相对应的点被放置的方式投影彼此更接近。正如您先验地知道行数(簇数),那么您只需应用 k-means 就可以了!请参阅链接中的图像以了解第二个 pc 向量将如何。

第二种方法:GMM

使用最大似然估计(您使用期望最大化算法)将高斯混合模型拟合到数据中的集群您沿着第二台 PC 的集群非常高斯(再次行数)高斯内核混合到它们上,您将获得良好的软集群。n

变体: s 不相等a

在这种情况下,由于坡度不同,您的线会相互交叉。你的图片没有显示,但我还是把它包括在这里。在这种情况下,您将线性回归拟合到每条线并保留线的系数。您有一个数据,其中每条线仅由斜率和截距描述。然后每个点和所有线之间的垂直距离告诉你哪条线更近,所以这就是集群。(距离也可以简单地是回归线的那个点的残差。你只需要一个距离度量来确定最近的线)2D

如果您也需要实现,请在此处发表评论,以便我可以使用 Python 代码更新答案。

祝你好运 :)

我宁愿看混合模型。或者,如果除了线条之外还有其他噪声,请使用计算机视觉算法,例如 Hough 变换的一些变体。

查看情节,您似乎可以将其投影到一维。

从这里您只需计算到线的距离,这将是一个集群中心,或一维中的点。由于运行 K-Means 或 GMM 可能不会为您提供与线的位置相对应的集群中心,因此这似乎不是正确的做法。

您可以使用分位数回归模型。

正如回归最小化平方误差损失函数以预测单点估计一样,分位数回归最小化预测某个分位数时的分位数损失。

最流行的分位数是中位数或第 50 个百分位数,在这种情况下,分位数损失只是绝对误差的总和。

其他分位数可以给出预测区间的端点;例如,中间 80% 的范围由第 10 个和第 90 个百分位数定义。分位数损失因评估的分位数而异,因此对于较高的分位数,更多的负错误会受到更多的惩罚,而对于较低的分位数,更多的正错误会受到更多的惩罚。

分位数回归 - 迈向数据科学