Я бы не использовать K-средства для обнаружения выбросов в многомерном наборе данных, по той простой причине, что к-значит алгоритм не создан для этой цели: Вы всегда будете в конечном итоге с решением, которое сводит к минимуму суммарная сумма квадратов в кластере (и, следовательно, максимизирует межкластерную SS, потому что полная дисперсия фиксирована), а outlier (s) не обязательно будут определять свой собственный кластер. Рассмотрим следующий пример, в 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
Как можно видеть на следующем рисунке, то периферийное значение никогда не восстанавливается, как, например: Это всегда будет принадлежать к одному из других кластеров.

Одним из возможных вариантов, однако, были бы использовать двухэтапный подход, где один-х извлекая экстремальные точки (здесь определяется как вектор далеко от своих кластерных центроидов) итерационным способом, как описаны в следующем бумага: Improving K-Means by Outlier Removal (Hautamäki, et al.).
Это имеет некоторое сходство с тем, что сделано в генетических исследованиях для обнаружения и удаления лиц, которые проявляют ошибку генотипирования, или лиц, которые являются братьями/сестрами/близнецами (или когда мы хотим идентифицировать субструктуру населения), в то время как мы хотим сохранить неродственные физические лица; в этом случае мы используем многомерное масштабирование (которое эквивалентно PCA, с точностью до константы для первых двух осей) и удаляет наблюдения выше или ниже 6 SD на любой из топовых 10 или 20 осей (см., например, Population Structure and Eigenanalysis , Patterson et al., PLoS Genetics 2006 2 (12)).
Общей альтернативой является использование заказал надежные расстояния Махаланобиса, которые могут быть нанесены (в QQ сюжета) против ожидаемых квантилями в хи-квадрат распределения, как описано в следующей статье:
Р.Г. Гарретт (1989). The chi-square plot: a tools for multivariate outlier recognition. Журнал геохимических исследований 32 (1/3): 319-341.
(Он доступен в пакете mvoutlier R.)
Это зависит от того, что вы называете пользовательский ввод.Я интерпретирую ваш вопрос как может ли какой-либо алгоритм автоматически обрабатывать матрицу расстояний или исходные данные и останавливаться на оптимальном количестве кластеров. Если это так и для любого алгоритма разбиения на расстоянии, вы можете использовать любой из доступных индексов действительности для кластерного анализа; хороший обзор приведен в
Handl, J., Knowles, J., and Kell, D.B. (2005). Computational cluster validation in post-genomic data analysis. Биоинформатика 21 (15): 3201-3212.
, который я обсуждал на Cross Validated. Например, можно запустить несколько экземпляров алгоритма для разных случайных выборок (с использованием бутстрапа) данных, для диапазона номеров кластеров (например, k = от 1 до 20) и выбрать k в соответствии с оптимизированными критериями, которые считались (в среднем ширина силуэта, коэффетическая корреляция и т. д.); он может быть полностью автоматизирован, нет необходимости вводить пользователя.
Существуют другие формы кластеризации, основанные на плотности (кластеры рассматриваются как области, где объекты необычайно распространены) или распределение (кластеры - это совокупности объектов, которые следуют за заданным распределением вероятности). Например, кластеризация на основе моделей, как она реализована в Mclust, позволяет идентифицировать кластеры в многомерном наборе данных, охватывая диапазон формы для матрицы дисперсии-ковариации для различного количества кластеров и выбирать лучшую модель в соответствии с BIC критерий.
Это горячая тема в классификации, а некоторые исследования сосредоточены на SVM для обнаружения выбросов, особенно когда они ошибочно классифицируются. Простой запрос Google возвращает много обращений, например. Support Vector Machine for Outlier Detection in Breast Cancer Survivability Prediction от Thongkam et al. (Лекционные заметки в области компьютерных наук 2008 4977/2008 99-109, эта статья содержит сравнение с методами ансамбля). Самой основной идеей является использование одноклассового SVM для захвата основной структуры данных путем подгонки для него многомерного (например, гауссовского) распределения; объекты, которые на или за пределами границы могут рассматриваться как потенциальные выбросы. (В определенном смысле кластеризация на основе плотности будет работать одинаково хорошо, так как определение того, что действительно представляет собой выброс, является более простым с учетом ожидаемого распределения.)
Другие подходы к неконтролируемому, полуконтролируемому или контролируемому обучению легко найти на Google, например
Родственная тема anomaly detection, о котором вы найдете много статей.
Этот вопрос лучше подходит для http://stats.stackexchange.com, IMO. – chl
Большой вклад в сообщество SO! Это очень важные темы, с которыми должен справиться каждый программист! не могу поверить, что этот вопрос был закрыт! – Matteo