Лучший способ определить различия: евклидово расстояние, косинусное расстояние или простое вычитание? - PullRequest
0 голосов
/ 06 ноября 2018

Я новичок в науке о данных и в настоящее время изучаю различные методы, которые я могу использовать с Python. В настоящее время я опробую его с помощью API Spotify для своих собственных плейлистов.

Цель состоит в том, чтобы найти самые разные функции между двумя разными списками воспроизведения.

Мой вопрос заключается в том, каков наилучший способ определить наиболее отличающиеся особенности между этими двумя списками воспроизведения?

Я начал с получения всех треков в каждом плейлисте и соответствующих им функций. Затем я вычислил среднее значение для каждой из функций.

Вот DataFrame, с которым я закончил. Значения данных являются средними значениями всех функций дорожек для их соответствующего списка воспроизведения

                   playlist1  playlist2
                   --------------------
danceability      | 0.667509   0.592140
energy            | 0.598873   0.468020
acousticness      | 0.114511   0.398372
valence           | 0.376920   0.287250
instrumentalness  | 0.005238   0.227783
speechiness       | 0.243587   0.088612

Я немного покопался и нашел две общие процедуры:

1. Евклидово расстояние

2. Косинус сходство

Я по какой-то причине не мог обернуть голову, какую из них использовать, и приступил к вычислению абсолютной разницы между каждой функцией. Простое вычитание, потому что это имело смысл для меня интуитивно. Элемент с наибольшим отличием будет «самым непохожим».

При таком подходе я в итоге использовал эти результаты и пришел к выводу, что энергия и акустичность являются наиболее несхожими

                   playlist1    playlist2   absoluteDifference
                   ----------------------------------------------------
energy             |0.871310    0.468020    0.403290
acousticness       |0.041479    0.398372    0.356893
valence            |0.501890    0.287250    0.214640
instrumentalness   |0.049012    0.227783    0.178771
danceability       |0.531071    0.592140    0.061069
speechiness        |0.109587    0.088612    0.020975

Является ли моя интуиция правильной / неправильной и когда мы будем использовать вышеупомянутые техники? Будет ли какой-либо из этих методов применим в такой ситуации?

В конце концов, я хочу взять две верхние отличия и сделать их моей осью для KNN. Моя интуиция заключается в том, что я могу определить самые разные особенности двух плейлистов, у меня будут более четкие и четкие особенности плейлиста, и я могу более точно предсказать, к какой песне должен принадлежать плейлист.

1 Ответ

0 голосов
/ 06 ноября 2018

Позвольте мне начать с нескольких коротких замечаний о евклидовом расстоянии и косинусном сходстве:

Евклидово расстояние измеряет, как далеко друг от друга находятся две точки в n -мерном пространстве, т. Е. Измеряется длина прямой линии от точки A до точки B

Сходство косинусов измеряет их сходство по ориентации, то есть угол между двумя точками A и B с вершиной в нуле

Позвольте мне добавить изображение, чтобы подчеркнуть мои мысли An illustration on different metrics Евклидово расстояние между точками A и B изображено красным, косинусное сходство изображено зеленым (и под этим я не имею в виду буквально действительные значения мер, а скорее , что имеет отношение к их вычислению )

Теперь позвольте мне поговорить о мерах в целом : любые меры отражают какое-то сходство. Универсальной «лучшей метрики» не существует. Метрика, которая лучше всего подходит для вашей задачи, всегда определяется этой проблемой.

Я добавил несколько дополнительных точек на изображении, чтобы показать этот факт:

  • Точки D и E имеют такое же косинусное сходство , что и A и B, но сильно различающееся евклидово расстояние
  • Напротив, точки A и F имеют сильно отличающееся косинусное сходство , чем A и B, но такое же евклидово расстояние

Теперь позвольте мне сделать замечание относительно выбора метрики для вашей конкретной задачи: вы хотите оценить, насколько далеко друг от друга находятся функции. Чем больше разница, тем дальше друг от друга черты. Вам вообще не нужны углы между точками. Это четкая точка для евклидова расстояния. Вы можете не осознавать, но вы действительно использовали евклидово расстояние в своем примере. Ваши объекты одномерны, а в 1D евклидово расстояние равно абсолютной разнице.

...