Существует ли стандартный подход для поиска связанных / похожих объектов?
Предположим, у меня есть набор сущностей (например, люди с их физическими характеристиками), и я хочу найти для данной сущности X все сущности, связанные (или похожие) с ней, для некоторого определения сходства.
Я легко могу найти такие объекты для одного измерения (все люди с высотой Y ~= высота X в пределах определенного порога), но есть ли какой-то подход, который я могу использовать, чтобы найти похожие объекты, рассматривающие более одного атрибута?
1 ответ
Это будет зависеть от того, что вы определяете как сходство, но вы можете использовать тот же подход, который вы используете для 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)
,
Легко видеть, что это обобщение вашего одномерного примера, и использование того же подхода для векторов с одним элементом сделает то же самое.
Недостатком этого подхода является (0,0,0,...,0,10^20)
а также (0,0,0,....,0)
будет очень далеко друг от друга - что может или не может быть тем, что вы ищете, и тогда вам может понадобиться другая метрика расстояния - но это действительно зависит от того, что именно вы после.