我正在尝试使用聚类来识别我数据集中的波段。我使用的是供应链数据,所以我的数据是这样的:
相关的列是每种产品的价格。
问题是,有时我们错误地认为这个产品是100而不是10的情况,所以每个价格应该看起来像(2,0.25,3)。我想创建一个代码,如果一个额外的集群的平均价格至少是所有现有集群的2倍以上或更少,则只创建集群。
例如,如果我的价格是(4,5,6,13,14,15),我希望它返回2个质心为5和14的集群。另一方面,如果我的数据看起来像(3,4,5,6),它应该返回一个集群。
我们的目标是创建一个代码,返回生成了多个集群的商品的产品代码,这样我就可以审核这些产品代码中的错误度量单位(案例100与案例10)。
我正在考虑使用分裂的层次聚类,但我不知道如何引入质心距离规则来创建新的聚类。
我对R比较陌生,但是我有SQL和Stata的经验,所以我正在寻找一个可以完成这项工作的包,或者帮助我完成这项工作所需的语法。
发布于 2017-05-27 15:28:58
不要在这里使用集群。
虽然您可以使用具有类似比率的距离函数和8x阈值的HAC,但这将是相当不可靠和昂贵的:集群通常需要O(n²)或O(n³)。
如果您知道这些错误会发生,但不是经常发生,那么我宁愿使用经典统计方法。例如,计算中位数,然后将大于/小于中位数9倍的值报告为错误。如果误差不是很频繁,你甚至可以使用平均值,但中位数更稳健。
https://stackoverflow.com/questions/44188090
复制相似问题