Прогулка по вычислению нескольких матриц популярных ассоциаций

Вы когда-нибудь были в сценарии, когда вам нужно было придумать попарные матрицы ковариации, корреляции или косинуса для данных на лету без помощи функции? Возможно нет.

Тем не менее, стоит взглянуть на то, как эти матрицы могут быть вычислены, поскольку в их соответствующих вычислениях есть некоторые общие черты. В центре всего этого - матрица XᵀX. Здесь вы можете думать о X как о некоторых данных, которые вы собрали, где каждый столбец представляет собой отдельную меру, а каждая строка - отдельную тему.

  • Транспонирование X и умножение его на себя дает матрицу суммы квадратов перекрестных произведений (SSCP), где SS попадают на диагональ, а перекрестные произведения - на недиагональ.
  • Центрирование X, умножение его транспонирования на себя и деление на n-1 (где n = # строк в X) приводит к матрице дисперсии-ковариации с дисперсиями по диагонали и ковариациями по недиагонали.
  • Стандартизация X, умножение его транспонирования на себя и деление на n-1 (где n = # строк в X) приводит к корреляции Пирсона между парами переменных.
  • Единичное масштабирование X и умножение его транспонирования на себя приводит к косинусному сходству между парами переменных

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

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

Перекрестное произведение суммы квадратов

Дисперсия-ковариация

Корреляция Пирсона

Косинусное сходство

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

Таким образом, мы показали, что XᵀX можно манипулировать для получения многих общих матриц ассоциаций, которые мы используем ежедневно. Надеюсь, вы запомните это в следующий раз, когда будете проводить корреляции или проверять косинусное расстояние между переменными в вашем наборе данных!