На практике, что люди делают с пропущенными значениями из матрицы рекомендаций, в чем весь смысл расчета? Я думаю, прочитав сообщение в блоге Саймона, он использует ТОЛЬКО не пропущенные термины для построения модели.
Это верно - в этом смысл его и вашей модели предсказывать пропущенные термины, верно? Это важный момент, который многие на самом деле забывают. Они думают, что могут просто «предположить» заранее назначить константу для пропущенных данных без заботы в мире, и все будет волшебным образом работать достаточно хорошо от SVD. Мусор внутри, мусор снаружи: это реально, и тебе лучше посмотреть это. Вы не должны передавать ненужные данные в модель, если хотите получить что-то полезное.
Конечно, НЕ лучше «выводить какие-либо пропущенные значения» для большинства разреженных наборов данных, а затем запускать SVD для этого с некоторой надеждой приписать вам значения (которые вы уже вменяли перед запуском SVD, верно?). Как вы думаете, модель волшебна? Нет ни магии, ни технологии для преодоления большинства мусорных данных. Вы не можете лгать модели о том, что данные - это реальные данные, когда они вообще не реальны, а просто некий мусор, который вы просто составляете из воздуха.
SVD делает другие полезные вещи, так что я, конечно, не говорю, что SVD ничего не стоит. Идите дальше и используйте SVD только для полных наборов данных, возможно, из которых вы разумно ввели пропущенные значения, уже используя модель машинного обучения, с должным вниманием к ошибкам смещения и ошибке дисперсии во время ее разработки.
Машинное обучение - это путь. Так что, если вы все еще хотите знать, как вменять значения, используя матричную факторизацию, безусловно, есть хорошие способы сделать именно это, используя машинное обучение, и, что важно, они не подают ненужные данные в модель, чтобы бесполезно пытаться учиться.
Именно такая модель факторизации матрицы машинного обучения довольно хорошо представлена преподавателями онлайн-курса Stanford Mining Massive Data Sets, в модуле 5. Они показывают вам математику и объясняют модель. Они не кодируют это для вас все же.
Это нормально, потому что вы можете сами его кодировать, если понимаете основы машинного обучения. Вы знаете, что такое функция потерь и функция затрат? Регуляризация? Градиентный спуск? Ты хорошо с матричным умножением и сложением? Ошибка смещения и ошибка дисперсии? Если так, то ты в порядке. Если нет, то вам стоит подумать о прохождении онлайн-курса Эндрю Нг « Машинное обучение в Coursera», которое является одним из многих хороших стартовых мест. Кроме того, вы также можете пройти онлайн-курс « Наборы массивных данных», в котором подробно рассказывается о факторизации матрицы и машинном обучении для создания рекомендательных моделей.
Достаточно сказать, что вы можете полностью спроектировать, а также кодировать свою собственную модель факторизации, которая очень хорошо обрабатывает пропущенные данные, как это делал Саймон Функ, и вы можете сделать это с нуля, но теперь это совсем не сложно, как будто он вернулся в свое время, потому что теперь вы можете использовать такой инструмент, как TensorFlow или Microsoft CNTK, который много для вас делает. Определите функцию потерь и функцию затрат, выберите оптимизатор, разделите ваш набор данных на обучение, разработайте, протестируйте данные, которые фактически доступны (помечены как данные), и дайте ему работать. Серьезно, это работает. Отладка TF и ошибок построения графиков не так проста, но, в конце концов, она прекрасно работает и занимает менее одной страницы кода.
В частности, один из способов не передавать поддельные данные в модель машинного обучения матричной факторизации - это пропускать пропущенные матричные элементы данных в функциях потерь и затрат .