Функции расстояния
Преимуществом метрических методов является то, что их можно применять с любой функцией расстояния (distance function) между объектами . По смыслу расстояние измеряет непохожесть объектов между собой, и его не надо путать с функцией похожести (similarity function) , принимающей более высокие значения между более похожими объе ктами.
Мы всегда можем преобразовать расстояние в похожесть и наоборот, применяя некоторую убывающую функцию :
Например, или .
Популярные функции расстояния для векторов
Сравнение векторов вещественных чисел
Если , то часто используются следующие функции расстояния:
Название | |
---|---|
Евклидово | |
(Манхэттенская) | |
Канберра | |
Ланса-Уильямса |
Косинусная мера близости
Очень популярна косинусная мера близости
измеряющая косинус угла между векторами и , поэтому принимающая значения на отрезке .
Согласно этой мере объекты близки, если угол между ними мал, а, соответственно, косинус этого угла близок к единице. Косинусная мера близости не зависит от длин сравниваемых векторов, что полезно в некоторых приложениях.
Расстояние Махаланобиса
Для сравнения векторов, элементы которых сильно скоррелированы между собой, используется Евклидово расст ояние, но не между исходными объектами , а между их декоррелированными версиями:
Докажите, что и будут иметь нулевое среднее и единичную матрицу ковариаций, т.е. отдельные элементы векторов будут не скоррелированы между собой.
Графически процесс перевода из скоррелированного пространства (A) в декоррелированное (B) показан ниже:
В терминах исходных векторов это расстояние будет выражаться как
и называется расстоянием Махаланобиса.
Докажите, что Евклидово расстояние между декореллированными версиями объектов и будет считаться по формуле выше.
В более общем случае расстояние можно определить через произвольную неотри цательно-определённую матрицу , которую можно настраивать по данным (metric learning):
Сравнение бинарных векторов
Для бинарных векторов, состоящих только из нулей и единиц, часто используют расстояние Хэмминга:
Сравнение множеств
Для сравнения двух множеств X и Z (например наборов товаров, купленных в магазине по двум чекам) используется мера близости Жаккара (Jaccard index), равная числу элементов в пересечении множеств, нормированное на число элементов в их объединении:
Мера принимает значения в отрезке .
Сравнение строк
Для сравнения строк часто используется редакторское расстояние (edit distance), называемое также расстоянием Левенштейна (Levenstein distance). Для двух строк и оно вычисляется как минимальное число операций вставки символа, удаления символа и замены одного символа другим, необходимое для перевода одной строки в другую. Например расстояние между строками "вагон" и "авто" будет 4, поскольку минимально требуется 4 операции для преобразования одной строки в другую:
операция | результат | |
---|---|---|
ВАГОН | ||
1 | удаление В | АГОН |
2 | замена Г на В | АВОН |
3 | вставка Т | АВТОН |
4 | удаление Н | АВТО |
Существует эффективный алгоритм, позволяющий найти минимальное количество редакторских операций за полиномиальное время от длин строк. Строки могут быть произвольной длины, содержать пробелы и описывать целые тексты.
Сравнение временных рядов
Временные ряды можно сравнивать как вектора их последовательных значений, но только в случае, когда они состоят из одинакового количества элементов. Перед сравнением может применяться приведение их значений к одному масштабу (например, нулевое среднее и единичная дисперсия).
Также динамику рядов можно раскладывать по базису некоторых функций, а ряды представлять в виде коэффициентов разложения по базису и сравнивать обычными функциями расстояния между векторами признаков.
Если временные ряды разные по длительности, то можно более короткий временной ряд растянуть до длины более длинного временного ряда.
Альтернативно можно использовать алгоритм динамической трансформации временной шкалы (dynamic time warping), в котором перед сравнением ищется оптимальное локальное растяжение участков каждого из рядов, чтобы они лучше подходили друг к другу, как показано ниже на рисунке справа (источник):
Этот алгоритм позволяет сравнивать временные ряды разной длины по наличию в них схожей динамики, даже если она происходила с разной скоростью. Расчёт расстояния также может быть эффективно произведён за полиномиальное время от длин сравниваемых рядов.