2014-11-06 2 views
0

Предположим, у меня есть набор сущностей (например, людей с их физическими характеристиками), и я хочу найти для данного объекта X все сущности, связанные (или похожие) с ним, для некоторого определения подобия.Существует ли стандартный подход для поиска связанных/похожих объектов?

Я могу легко найти такие сущности для одного измерения (все люди с высотой Y ~ = высота X в пределах определенного порога), но есть ли какой-то подход, который я могу использовать для поиска похожих объектов, рассматривающих более одного атрибута?

+2

Возможно, вы захотите ознакомиться с алгоритмом [_k_-ближайших соседей] (http://en.wikipedia.org/wiki/K-nearest_neighbors_algorithm). –

ответ

0

Это зависит от того, что вы определяете как подобие, но вы можете использовать тот же подход, который вы используете для 1D, к любому измерению с небольшим обобщением. Предполагая, что каждый элемент представлен в виде вектора, вы можете измерить расстояние 2 вектора x,y как d=|x-y| и принять/отклонить в зависимости от этого d и некоторый порог.

Здесь, оператор минус вектор отрицание:
(a1,a2,...,an)-(b1,b2,...,bn)=(a1-b1,a2-b2,...,an-bn)
и абсолютное значение снова для векторов:
|(a1,a2,...,an)| = sqrt(a1^2 + a2^2 + ... + an^2).

Легко видеть, что это обобщение вашего примера 1D, и использование такого же подхода для векторов с одним элементом будет делать то же самое.


Даунсайд этого подхода является (0,0,0,...,0,10^20) и (0,0,0,....,0) будет очень далеко друг от друга - что может или не может быть то, что вы после этого, и тогда вам может понадобиться разное расстояние метрики - но это действительно зависит от что именно вы после.

Смежные вопросы