Мой вопрос, как правило, касается разложения по сингулярным значениям (SVD) и, в частности, латентного семантического индексирования (LSI).
Скажем, у меня есть который содержит частоты 5 слов для 7 документов.
A = matrix(data=c(2,0,8,6,0,3,1,
1,6,0,1,7,0,1,
5,0,7,4,0,5,6,
7,0,8,5,0,8,5,
0,10,0,0,7,0,0), ncol=7, byrow=TRUE)
rownames(A) <- c('doctor','car','nurse','hospital','wheel')
Я получаю матрицу разложение для с помощью SVD: .A = U ⋅ D ⋅ V T
s = svd(A)
D = diag(s$d) # singular value matrix
S = diag(s$d^0.5 ) # diag matrix with square roots of singular values.
дает матрицу подобия слов , где строки представляют разные слова.
WordSim = s$u %*% S
дает матрицу сходства документов, где столбцы представляют разные документы.
DocSim = S %*% t(s$v)
Вопросов:
- Алгебраически, почему и DocSimS имеют слов / документов? Есть ли интуитивное объяснение?D уплотнительное гр S я м S
- Основываясь на приведенном примере R, можем ли мы сделать какие-либо интуитивные наблюдения за количеством слов / подобием, просто взглянув на и (без использования косинусного сходства или коэффициента корреляции между строками / столбцами)?
D=svd(A)$d
в R возвращает квадратные корни ненулевых собственных значений, поэтому я использовал . У меня нет проблем с аспектом уменьшения размерности, и я понимаю, что аппроксимация A более низкого ранга может быть сформирована так, как они описывают. Я нашел ответ по этой ссылке, частично отвечает на мой вопрос.Ответы:
Матричная факторизация с использованием SVD разбивает входную матрицу на три части:
Когда слова или документы отличаются друг от друга, это указывает на то, что они похожи. Например, если слово «доктор» встречается в документе чаще, слово «медсестра» и «больница» также встречаются чаще. Это показано первым масштабированным левым единичным вектором, первым столбцом Вы можете проверить этот результат, посмотрев на входные данные. Обратите внимание, что, когда медсестра действительно происходит, больница также возникает, и когда это не происходит, больница также не возникает.WordSim
источник