Есть два объекта A и B, их можно представить как два массива, которые состоят из 5 элементов. В каждом элементе находятся данные определённого типа, тип данных в A[0] элементе массива такой же, как и в B[0], т.е. эти элементы можно сравнивать между собой. Предположим, что мы как то вычисляем, что данные в 0 элементе похожи на 40%, данные в 1 элементе похожи на 90% и т.д. И того у нас есть данные схожести для каждого элемента. Как можно имея эти данные посчитать, на сколько похожи оба объекта?
Массивы рассматриваем как векторы. Два способа: вычитание и корреляция (произведение)
1) Есть несколько видов разности векторов, это называется норма разности. Один из вариантов - см. выше (декартово расстояние).
2) Нормируем векторы (т.е. делим на максимальную возможную длину), затем перемножаем пары и суммируем. При этом способе ответ 1 означает совпадение, -1 - противоположность.
Владислав: Так по корреляции тоже можно сортировать. Применяются оба метода, напр. в нейронной сети Кохонена - разница, в сравнении временных рядов или изображений - корреляция.
Владислав: Нет, оба метода выдают диапазон.
1). Рассмотрим разность векторов. При норме 2 (наше обычное (эвклидово) расстояние) это sum ( ( a(i)-b(i) )^2 ) ^0.5. Такая сумма всегда положительна и, естественно, может быть >1. Чем меньше результат, тем ближе векторы. 0 означает тождественность.
2). При корреляции считаем sum( a(i)*b(i) ) / [sum( a(i)^2 ) * sum( b(i)^2 ) ^0.5. Тут будет особенность: при 1 векторы ЛИНЕЙНО коррелированы, т.е. направлены в одну сторону, но могут иметь разную длину (напр., а = [1,2,3], b = [2,4,6]. Если линейная связь вас не устраивает, то, конечно, разность (первый способ) предпочтительнее.