gpt4 book ai didi

data-mining - 数据挖掘中的异常值检测

转载 作者:行者123 更新时间:2023-12-04 00:01:20 26 4
gpt4 key购买 nike

关闭。这个问题是off-topic .它目前不接受答案。












想改善这个问题吗? Update the question所以它是 on-topic对于堆栈溢出。

8年前关闭。



Improve this question




我有几组关于异常值检测的问题:

  • 我们可以使用 k-means 找到异常值,这是一个好方法吗?
  • 是否有任何不接受用户任何输入的聚类算法?
  • 我们可以使用支持向量机或任何其他监督学习算法进行异常值检测吗?
  • 每种方法的优缺点是什么?
  • 最佳答案

    我将把自己限制在我认为对您的所有问题提供一些线索至关重要的内容上,因为这是许多教科书的主题,并且可能在单独的问题中更好地解决它们。

  • 我不会使用 k-means 来发现多变量数据集中的异常值,原因很简单,k-means 算法不是为此目的而构建的:您最终会得到一个最小化集群内总和的解决方案平方数(因此最大化集群间 SS,因为总方差是固定的),并且异常值不一定定义它们自己的集群。考虑以下 R 中的示例:
    set.seed(123)
    sim.xy <- function(n, mean, sd) cbind(rnorm(n, mean[1], sd[1]),
    rnorm(n, mean[2],sd[2]))
    # generate three clouds of points, well separated in the 2D plane
    xy <- rbind(sim.xy(100, c(0,0), c(.2,.2)),
    sim.xy(100, c(2.5,0), c(.4,.2)),
    sim.xy(100, c(1.25,.5), c(.3,.2)))
    xy[1,] <- c(0,2) # convert 1st obs. to an outlying value
    km3 <- kmeans(xy, 3) # ask for three clusters
    km4 <- kmeans(xy, 4) # ask for four clusters

    从下图中可以看出,外围值永远不会被恢复:它将始终属于其他集群之一。

    enter image description here

    然而,一种可能性是使用两阶段方法,其中以迭代方式移除极值点(此处定义为远离其聚类质心的向量),如以下论文所述:Improving K-Means by Outlier Removal(Hautamäki 等人)。 )。

    这与基因研究中为检测和删除表现出基因分型错误的个体或 sibling /双胞胎的个体(或当我们想识别种群子结构时)所做的工作有些相似,而我们只想保留无关的个体;在这种情况下,我们使用多维缩放(相当于 PCA,前两个轴的常数)并在前 10 或 20 轴中的任何一个轴上删除高于或低于 6 SD 的观察(参见例如,Population Structure and Eigenanalysis , Patterson 等人,PLoS Genetics 2006 2(12))。

    一种常见的替代方法是使用有序的稳健马氏距离,该距离可以针对卡方分布的预期分位数绘制(在 QQ 图中),如下文所述:

    R.G. Garrett (1989). The chi-square plot: a tools for multivariate outlier recognition. Journal of Geochemical Exploration 32(1/3): 319-341.



    (它在 mvoutlier R 包中可用。)
  • 这取决于你所说的用户输入。我将您的问题解释为某种算法是否可以自动处理距离矩阵或原始数据并在最佳数量的集群上停止。如果是这种情况,并且对于任何基于距离的分区算法,那么您可以使用任何可用的有效性指数进行聚类分析;一个很好的概述在

    Handl, J., Knowles, J., and Kell, D.B. (2005). Computational cluster validation in post-genomic data analysis. Bioinformatics 21(15): 3201-3212.



    我在 Cross Validated 上讨论过。例如,您可以在数据的不同随机样本(使用 bootstrap )上运行该算法的多个实例,针对一系列聚类数(例如,k=1 到 20)并根据考虑的优化标准选择 k(平均轮廓宽度、cophenetic 相关性等);它可以完全自动化,无需用户输入。

    存在其他形式的聚类,基于密度(聚类被视为对象异常常见的区域)或分布(聚类是遵循给定概率分布的对象集)。例如,基于模型的聚类,因为它在 Mclust 中实现,允许通过跨越不同数量聚类的方差-协方差矩阵的形状范围来识别多元数据集中的聚类,并根据BIC 标准。
  • 这是分类中的一个热门话题,一些研究侧重于 SVM 来检测异常值,尤其是当它们被错误分类时。一个简单的谷歌查询会返回很多命中,例如Thongkam 等人的 Support Vector Machine for Outlier Detection in Breast Cancer Survivability Prediction。 (计算机科学讲义 2008 4977/2008 99-109;本文包括与集成方法的比较)。非常基本的想法是使用一类 SVM 通过拟合多元(例如,高斯)分布来捕获数据的主要结构;边界上或边界外的对象可能被视为潜在的异常值。 (在某种意义上,基于密度的聚类将表现得同样好,因为在给定预期分布的情况下,定义异常值更直接。)

    在谷歌上很容易找到其他无监督、半监督或监督学习的方法,例如
  • 霍奇,V.J.和 Austin, J. A Survey of Outlier Detection Methodologies
  • Vinueza, A. 和 Grudic, G.Z. Unsupervised Outlier Detection and Semi-Supervised Learning
  • 埃斯卡兰特,H.J. A Comparison of Outlier Detection Algorithms for Machine Learning

  • 一个相关的主题是 anomaly detection ,你会找到很多关于它的论文。
  • 这真的值得一个新的(可能更集中的)问题:-)
  • 关于data-mining - 数据挖掘中的异常值检测,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6026067/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com