Замечания
Без сомнений, техники обновления и обновления удалением матрицы терм-документ нужны. Можно долго аргументировать, но в конце концов, информация действительно имеет тенденцию устаревать.
Так что вопрос стоит не как «нужно ли нам обновление?», а по-другому: «какое нам нужно обновление?». Попытаемся ответить на этот вопрос.
В связи с тем, что здесь рассматривается даже не две, а целый набор техник обновления и обновления удалением, нужно сначала выяснить, что же происходит с матрицей при проведении каждой из них. Пересчет svd, собственно, не требует пояснений – это полная замена старой матрицы на новую. Гораздо интереснее два следующих случая. При вложении документов или термов их веса и веса остальных членов матрицы а не корректируются, что ведет в конечном счете к потере ортогональности терм-документной матрицы. При svd-обновлении этого не происходит.
Операции с ортогональными матрицам зачастую гораздо менее ресурсоемки, чем с не ортогональными. Но в связи с тем, что численные методы все-таки не обязательно имеют некие погрешности и работают всегда приблизительно (с той или иной степенью приближения), то возможно допустить некую потерю ортогональности.
Разница между вложением и svd-обновлением проявляется тем больше, чем больше число добавляемых термов. Понятно, что из-за одного нового терма или документа проводить ресурсоемкую процедуру svd-обновления нерентабельно, здесь можно ограничиться вложением. Но если число добавляемых объектов – сотни, то точность операций на матрицах сильно упадет.
Вывод очевиден. Нужно небольшие порции объектов добавлять вложением, причем постоянно следить за результатами работы, числом релевантных документов и наибольшим косинусом между запросом и вернувшимися документами. Если эти значения будут падать ниже пороговых (обычно устанавливаемых эмпирически), то стоит произвести над матрицей svd-обновление.
Таблица 1 . Временная сложность процедур обновления
Операция | Скорость |
Вложение: документы + термы | 2mkp + 2nkq. |
SVD–обновление | О(2k2m + 2 k2n) |
Пересчет SVD | I ´ [4nnz(A) - (m+ q) - (n + p)]+ trp ´ 2nnz(A) - (m+ q) |
Таким образом мы убиваем сразу двух зайцев – экономим машинное время и повышаем качество результата. Что же касается стоимости проведения этих операций (flops), то она приведена в таблице 2.
Здесь i – число итераций для процедуры типа алгоритма ланкоша, n – число термов, m – число документов, p – число новых документов, q – число новых термов, trp - число принятых сингулярных триплетов, z- исправленные веса термов в соответствующей матрице.