#python #matrix #dataset #sparse-matrix #dimensionality-reduction
#python #матрица #набор данных #разреженная матрица #уменьшение размерности
Вопрос:
у меня есть dataser таким образом:
User Movie
0 1 2 3 4
0 2 0 5 0 0
1 0 1 0 0 0
2 0 5 5 5 0
от 1 до 5 — значение отзыва пользователя о фильмах, в противном случае равно нулю (нет отзыва).
У меня нет полных столбцов, все данные разрежены.(хотя бы один ноль в столбце)
Я видел, что это вносит больше шума в данные, потому что у меня есть много значений, которые действительно не нужны. Какой метод позволяет устранить этот шум? Я помню, что вместо нуля я могу использовать среднее значение, а после я каким-то образом упрощу, но я не уверен..
Есть предложения?
Комментарии:
1. Наличие значений, которые вам не нужны, на самом деле не является шумом, скорее беспорядком. Чего вы действительно хотите достичь? Хранить более эффективно? Вычислить средние оценки? Что-то еще?
2. Итак, вопрос в том, как сохранить разреженную матрицу?
3. у scipy и numpy есть способы сделать это для больших наборов данных. Или вы могли бы просто использовать dict, и там будет обзор, если есть ключ — обзоры [фильма] [пользователя]
4. Я пробую пользователя ti cluster из обзора
5. @KennyOstrom Я уже создаю фрейм данных, но у меня много нулей, которые добавляют слишком много разреженности в мою матрицу.. Я хотел бы удалить это значение после с помощью некоторой техники data science
Ответ №1:
Одна из идей, когда у вас отсутствуют данные (в вашем случае нули), — попытаться использовать известные данные для заполнения недостающих значений. Другими словами, учитывая частичный вектор функций для отдельного человека, мы хотим вывести остальные значения. Тривиальный способ сделать это — просто использовать среднее значение для отсутствующего столбца (конечно, тогда выведенное значение не зависит от известных значений для этого пользователя или значений, известных для таких людей, как они!). Вы также могли бы, например, кластеризировать пользователей (используя только известные значения, которые разделяют оба пользователя) и вычислять средние значения для отсутствующих столбцов только в пределах каждого кластера.
Очень подходящая литература для изучения — это использование матричного завершения для рекомендательных систем (что на самом деле похоже на то, что вы в основном пытаетесь сделать) и совместная фильтрация. Использовалось вменение, но оно довольно дорого для крупномасштабных наборов данных. Ознакомьтесь с Кореном и др., Методы факторизации матриц для рекомендательных систем, для некоторых используемых методов.
Другой перспективой является использование полууправляемых методов обучения вероятностному представлению. По сути, вы изучаете генеративную модель данных, так что вы можете частично указать представление и автоматически вывести оставшиеся значения. Одно предостережение заключается в том, что это может быть дорогостоящим, поскольку в этом случае вам нужно определить случайный узел для каждого объекта. Рассмотрим, например, Siddarth et al, изучение распутанных представлений с помощью полууправляемых глубоких генеративных моделей