На практиці, що люди роблять із відсутніми значеннями з матриці рекомендацій, в чому полягає суть у виконанні розрахунку? Моя здогадка з читання публікації в блозі Саймона полягає в тому, що він ТІЛЬКИ використовує непусті терміни для створення моделі.
Це правильно - це суть його та вашої моделі, передбачити відсутні умови, правда? Це важливий момент, який багато хто насправді забуває. Вони думають, що можуть просто "припустити" попередньо призначити постійну відсутніх даних без піклування у світі, і все буде магічно скластись досить добре від SVD. Сміття, сміття: Це справжнє, і вам краще дивитися. Якщо ви хочете, щоб щось було корисне, вам краще не надсилати непотрібні дані моделі.
Звичайно, НЕ "найкраще робити будь-які пропущені значення" на наборі даних з більшістю, а потім запустити SVD з цим з деякою надією присвоїти вам значення (які ви вже вкладали до запуску SVD, правда?). Як ви думаєте, модель - це магія? Тут немає жодної магії та технології для подолання більшості даних про сміття. Ви не можете брехати моделі, що дані - це реальні дані, коли вони зовсім не реальні, але насправді це лише якийсь сміття, яке ви просто зробили з повітря.
SVD робить і інші корисні речі, тому я, звичайно, не кажу, що SVD принаймні нічого не вартий. Вперед і використовуйте SVD лише для повних наборів даних, можливо, ви інтелектуально вписали пропущені значення вже використовуючи модель машинного навчання з усією увагою до помилок зміщення та помилки дисперсії під час її розробки.
Машинне навчання - це спосіб. Отже, якщо ви все ще хочете знати, як присвоїти значення за допомогою матричної факторизованої конструкції, безумовно, є хороші способи зробити саме це за допомогою машинного навчання, і що важливо, вони не подають жодних непотрібних даних моделі, з якої безцільно намагатися вчитися.
Саме таку модель машинного вивчення матричної факторизації представлена досить добре інструкторами Стенфордського онлайн-курсу Mining Massive Data Sets в модулі 5. Вони показують вам математику та пояснюють модель. Однак вони не кодують це для вас.
Це добре, тому що ви можете це кодувати самостійно, якщо ви розумієте базове машинне навчання. Чи знаєте ви, що таке функція втрат і функція витрат? Регуляризація? Градієнтний спуск? З тобою все в порядку з матричним множенням і додаванням? Помилка зміщення та помилка дисперсії? Якщо так, то ви добрі. Якщо ні, то варто подумати про онлайн-курс Ендрю Нґ Машинне навчання в Курсі, який є одним із багатьох хороших стартових місць. Потім також перейдіть на онлайн-курс Mining Massive Data Sets, який точно говорить про матричну факторизацію та машинне навчання для виготовлення моделей рекомендацій.
Досить сказати, ви можете повністю розробити і кодувати свою власну модель факторизації, яка дуже добре обробляє відсутні дані, як це робив Саймон Функ, і ви можете це робити з нуля, але це зовсім не важко, як це було назад в його дні, тому що тепер ви можете використовувати такий інструмент, як TensorFlow або Microsoft CNTK, який робить багато для вас. Визначте функцію втрат та функцію витрат, виберіть оптимізатор, розділіть ваш набір даних на навчання, розробку, тестуйте з наявних даних (мічені дані) та дайте їм працювати. Серйозно, це працює. Налагодження TF та помилок його побудови графіків непросте, але в кінцевому підсумку він може працювати чудово і займає менше однієї сторінки коду.
Зокрема, одним із способів не подати підроблені дані до моделі машинного навчання матричної факторизації, є пропускати елементи матриці відсутніх даних у функціях втрат та витрат .