У меня есть многомерный набор данных с 10K точек, имеющий 200 числовых столбцов.Я хотел бы эффективно найти, какие точки являются «изолированными» в том смысле, что они находятся далеко от ближайших n
соседей.
Например, в наборе
{(-3, 0.5), (-2.9, 0.6), (-3.1,0.4), (-3, 2), (-2.9, 2.1), (-3.1, 2.2), (1, 0.5), (1.1, 0.6), (0.9, 0.4), (1,2) }
Точка(1,2)
изолирован, хотя его значения x
и y
отдельно не являются выбросами.
Я пробовал различные варианты kNN
, чтобы найти ближайших соседей к каждой точке, а затем решить,эти точки находятся далеко (например, если n-й сосед находится на расстоянии, превышающем все остальные расстояния).Но для 10K x 200
самый быстрый, который я получил, был около 40 секунд.Так как мне приходится делать это много раз в своем коде, я ищу что-то гораздо более быстрое.
Есть идеи?