SVD матриці з відсутніми значеннями


12

Припустимо, у мене є матриця рекомендацій у стилі Netflix, і я хочу створити модель, яка передбачає потенційні майбутні рейтинги фільмів для даного користувача. Використовуючи підхід Саймона Функ, можна використовувати стохастичний градієнтний спуск, щоб мінімізувати норму Фробеніуса між повною матрицею і матрицею «за пунктом * користувач-користувач» у поєднанні з терміном регуляції L2.

На практиці, що люди роблять із відсутніми значеннями з матриці рекомендацій, в чому полягає суть у виконанні розрахунку? Моя здогадка з читання публікації в блозі Саймона полягає в тому, що він ТІЛЬКИ використовує непусті терміни (які складаються з (скажімо) ~ 1% матриці рекомендацій) для побудови моделі (з певним розумним вибором гіпер-параметрів та регуляризації) для прогнозування інші 99% матриці?

На практиці ви справді пропускаєте всі ці цінності? Або ти робиш якомога більше, перш ніж робити стохастичний градієнтний спуск? Які є стандартні найкращі практики поводження з відсутніми цінностями?


1
Це здається таким же питанням до цього . Я там відповів на питання.
d_ijk_stra


2
@d_ijk_stra "відповів" - це щедро щедро
додає

Відповіді:


6

Так, на практиці ці значення пропускаються. У вашому описі з точки зору норми Фробеніуса, це відповідає мінімізації компонентів норми, які можна виміряти, тобто тих, які мають відомі оцінки. Термін регуляризації може розглядатися як байєсівський компонент на компонентах функціональних векторів, при цьому SVD обчислює максимальну оцінку ймовірності з урахуванням цього попереднього та відомих значень.

Напевно, найкраще думати про SVD як про метод виведення пропущених значень. Якщо у вас вже є кращий спосіб зробити це, навіщо вам потрібен SVD? Якщо цього не зробити, то SVD із задоволенням заповнить прогалини для вас.


1
Як ви використовуєте SVD для виведення цих пропущених значень? Ви пробували інші методи, щоб визначити пропущені значення, скажімо, використовуючи непусті значення для підготовки класифікатора випадкових лісів, який потім може бути використаний для відгадування ваших відсутніх значень? Чи отримуєте ви кращі результати, чи це справді залежить від проблем?
Вішал

1
Ви виводите пропущені значення так само, як і прогнозували майбутні значення, використовуючи відповідні компоненти розкладання SVD. Прогнозування рейтингів у майбутньому - це абсолютно та сама проблема, як і виведення пропущених значень. Якщо у вас є гарний спосіб вивести пропущені значення, просто використовуйте це для прогнозування майбутніх рейтингів. Якщо ви цього не зробите, то для цього і є SVD.
Мартін О'Лірі

"Мабуть, найкраще думати про SVD як про метод виведення пропущених значень". Ага ні, насправді SVD залежить від того, щоб користувач попередньо вивів усі пропущені значення іншим способом, перш ніж запустити SVD. SVD взагалі нічого не нав'язує.
Джеффрі Андерсон

1

На практиці, що люди роблять із відсутніми значеннями з матриці рекомендацій, в чому полягає суть у виконанні розрахунку? Моя здогадка з читання публікації в блозі Саймона полягає в тому, що він ТІЛЬКИ використовує непусті терміни для створення моделі.

Це правильно - це суть його та вашої моделі, передбачити відсутні умови, правда? Це важливий момент, який багато хто насправді забуває. Вони думають, що можуть просто "припустити" попередньо призначити постійну відсутніх даних без піклування у світі, і все буде магічно скластись досить добре від SVD. Сміття, сміття: Це справжнє, і вам краще дивитися. Якщо ви хочете, щоб щось було корисне, вам краще не надсилати непотрібні дані моделі.

Звичайно, НЕ "найкраще робити будь-які пропущені значення" на наборі даних з більшістю, а потім запустити SVD з цим з деякою надією присвоїти вам значення (які ви вже вкладали до запуску SVD, правда?). Як ви думаєте, модель - це магія? Тут немає жодної магії та технології для подолання більшості даних про сміття. Ви не можете брехати моделі, що дані - це реальні дані, коли вони зовсім не реальні, але насправді це лише якийсь сміття, яке ви просто зробили з повітря.

SVD робить і інші корисні речі, тому я, звичайно, не кажу, що SVD принаймні нічого не вартий. Вперед і використовуйте SVD лише для повних наборів даних, можливо, ви інтелектуально вписали пропущені значення вже використовуючи модель машинного навчання з усією увагою до помилок зміщення та помилки дисперсії під час її розробки.

Машинне навчання - це спосіб. Отже, якщо ви все ще хочете знати, як присвоїти значення за допомогою матричної факторизованої конструкції, безумовно, є хороші способи зробити саме це за допомогою машинного навчання, і що важливо, вони не подають жодних непотрібних даних моделі, з якої безцільно намагатися вчитися.

Саме таку модель машинного вивчення матричної факторизації представлена ​​досить добре інструкторами Стенфордського онлайн-курсу Mining Massive Data Sets в модулі 5. Вони показують вам математику та пояснюють модель. Однак вони не кодують це для вас.

Це добре, тому що ви можете це кодувати самостійно, якщо ви розумієте базове машинне навчання. Чи знаєте ви, що таке функція втрат і функція витрат? Регуляризація? Градієнтний спуск? З тобою все в порядку з матричним множенням і додаванням? Помилка зміщення та помилка дисперсії? Якщо так, то ви добрі. Якщо ні, то варто подумати про онлайн-курс Ендрю Нґ Машинне навчання в Курсі, який є одним із багатьох хороших стартових місць. Потім також перейдіть на онлайн-курс Mining Massive Data Sets, який точно говорить про матричну факторизацію та машинне навчання для виготовлення моделей рекомендацій.

Досить сказати, ви можете повністю розробити і кодувати свою власну модель факторизації, яка дуже добре обробляє відсутні дані, як це робив Саймон Функ, і ви можете це робити з нуля, але це зовсім не важко, як це було назад в його дні, тому що тепер ви можете використовувати такий інструмент, як TensorFlow або Microsoft CNTK, який робить багато для вас. Визначте функцію втрат та функцію витрат, виберіть оптимізатор, розділіть ваш набір даних на навчання, розробку, тестуйте з наявних даних (мічені дані) та дайте їм працювати. Серйозно, це працює. Налагодження TF та помилок його побудови графіків непросте, але в кінцевому підсумку він може працювати чудово і займає менше однієї сторінки коду.

Зокрема, одним із способів не подати підроблені дані до моделі машинного навчання матричної факторизації, є пропускати елементи матриці відсутніх даних у функціях втрат та витрат .


1

Існує теза, в якій переглядаються багато систем рекомендацій та порівнюються їх, але не йдеться про довгострокове відстеження відсутніх предметів, наприклад, для перевірки прогнозів. Це частина вашого питання? Використовуючи тимчасовий компонент? Серед багатьох робіт та методів огляду дисертації є системи, що знають час та чутливі, такі як дослідження в документах Rendle. Якщо ваше питання також стосується поводження з нечисленністю даних, це також детально обговорюється в дисертації, і існує багато методів. розріджені матриці та імпутація з нулями або матрична факторизація, що додає зв'язуючу матрицю кластеризації користувачів (користувачів, які оцінюють елементи аналогічно) або зв'язуючу матрицю кластеризації елементів.

Назва дисертації - "Моделі низького рейтингу для систем рекомендування з обмеженою інформацією про переваги" Євгена Фролова https://www.skoltech.ru/app/data/uploads/2018/09/Frolov_Dissertation_Final1.pdf

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.