Работа с пропущенными данными в SVD

Вопрос или проблема

Я новичок в машинном обучении и пытаюсь применить SVD к набору данных movielens для рекомендаций фильмов. У меня есть матрица “фильм-пользователь”, где строка – это идентификатор пользователя, столбец – идентификатор фильма, а значение – это рейтинг.

Теперь я хотел бы провести нормализацию матрицы “фильм-пользователь” (вычесть среднее значение рейтингов пользователей). Затем передать нормализованную матрицу в svds из Scipy.sparse следующим образом:

from scipy.sparse.linalg import svds
U, sigma, Vt = svds(R_demeaned, k = 50)

Теперь у меня есть 2 метода сделать это:

Метод 1.) Сначала заполнить все отсутствующие рейтинги 0, затем рассчитать среднее значение рейтингов пользователей для нормализации.

Предсказанная датафрейм рейтингов по методу 1 с использованием svd выглядит так:

введите описание изображения здесь

Метод 2.) Сначала рассчитать среднее значение рейтингов пользователей и провести нормализацию, затем заменить отсутствующие рейтинги на 0.

Предсказанная датафрейм рейтингов по методу 2 с использованием svd выглядит так:

введите описание изображения здесь

Я хотел бы узнать, какой метод лучше или есть ли другие методы для этого. Насколько я могу наблюдать из метода 2, предсказанные рейтинги для пользователя довольно похожи. Например, пользователь A может получить 4.XX рейтинги для всех фильмов. Тем временем в методе 1 наблюдается большее разнообразие. Я хотел бы узнать, неправильно ли что-то.

Я бы порекомендовал попробовать оба метода, чтобы увидеть, какой из них работает лучше.

Тем не менее, на мой взгляд, сначала нужно заполнить, а затем нормализовать. Представьте, если вы сначала нормализуете, вы можете получить некоторые значения, очень близкие к 0. Поэтому, когда вы заполняете отсутствующие значения 0, вы тем самым говорите, что эти отсутствующие значения имели такое же начальное значение, как те, что были нормализованы до 0, что было бы неверно.

Ответ или решение

Отвечая на ваш вопрос о том, как лучше всего подходить к проблеме отсутствующих данных при применении SVD на наборе данных MovieLens, давайте рассмотрим оба представленных вами метода и их влияние на результаты.

Метод 1: Заполнение отсутствующих оценок нулями перед нормализацией

Этот подход предполагает, что перед нормализацией вы заполняете все отсутствующие значения оценками "0". После этого вы вычисляете среднее значение оценок пользователей для нормализации. Это имеет свои плюсы и минусы.

Плюсы:

  1. Легкость в реализации: достаточно одной операции для заполнения нулями и одной для нормализации.
  2. Может помочь избежать потери информации о пользователях, которые не оценивали много фильмов, поскольку ноли попадают в набор данных и могут быть учтены в матрице.

Минусы:

  1. Нулевая оценка может быть некорректной интерпретацией отсутствующих данных. Это может привести к искажениям, когда SVD рассматривает ноль как реальную оценку.
  2. Использование нуля может занижать важность других более высоких оценок.

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

Метод 2: Нормализация перед заполнением отсутствующих оценок нулями

Этот метод заключается в том, что вы сначала вычисляете среднее значение оценок пользователей для нормализации, а затем заменяете отсутствующие значения нулями.

Плюсы:

  1. Более корректное представление нормализованных значений, так как вы учитываете существующие данные в первую очередь.
  2. Это предотвращает ситуацию, когда отсутствующие значения случайно трактуются как важные (например, если пользователь просто не оценивал фильмы).

Минусы:

  1. Заполнение отсутствующих значений нулями после нормализации может привести к менее разнообразным предсказаниям, так как близкие к нулю значения будут смешиваться с.Fill empty spaces with zeros after normalization can lead to less diverse predictions, as values close to zero will mingle with those that are effectively normalized.
  2. Потенциальная потеря информации из-за замены отсутствующих оценок, что может увеличить схожесть предсказанных оценок.

Рекомендации

  1. Эмпирические испытания: Рекомендуется протестировать оба метода на небольшом подмножестве данных, оценив качество рекомендаций с помощью таких метрик, как RMSE или MAE. Это покажет, какая методология работает лучше в вашем конкретном случае.

  2. Alternative Imputation Techniques: Кроме того, существуют и другие методы обработки отсутствующих данных, такие как заполнение средними значениями, медианами, наиболее распространенными значениями или использование более сложных методов, таких как k-ближайших соседей (KNN) или модели машинного обучения. Эти методы могут привести к более точным предсказаниям.

  3. Consider Hybrid Approaches: Подумайте о комбинировании подходов или использовании методов смешанной импутации, чтобы максимизировать преимущества.

  4. Чувствительность модели: Обратите внимание на чувствительность модели к отброшенным или заполненным данным. Это может оказать серьезное влияние на конечные результаты.

Выбор метода зависит от контекста вашей задачи и доступных данных. В результате, чтобы получить наиболее регулярные и надежные предсказания, стоит внимательно исследовать оба метода и поэкспериментировать с альтернативными подходами.

Оцените материал
Добавить комментарий

Капча загружается...