Pratikte, insanlar, hesaplama matrisinin eksik olan öneri matrisindeki eksik değerlerle ne yaparlar? Simon'un blog gönderisini okumaktan tahmin ettiğim, SADECE bir model oluşturmak için eksik olmayan terimleri kullanması.
Bu doğru - bu onun ve modelinizin amacı, eksik terimleri tahmin etmek, değil mi? Birçoğunun gerçekten unutacağı çok önemli bir nokta. Onlar dünyada kayıpsız bir veri eksik sabit için önceden atamak için "varsayabileceğini" düşünüyorlar ve işler bir SVD gelen sihirli yeterince iyi çalışır. Çöp içeri, çöp dışarı: Bu gerçek ve onu izlesen iyi olur. Yararlı bir şeyin ortaya çıkmasını istiyorsanız, önemsiz verileri bir modele beslememeniz daha iyi olur.
Çoğunlukla seyrek veri kümesinde "herhangi bir eksik değeri çıkarmak" en iyisi DEĞİL DEĞİLDİR ve daha sonra SVD'yi sizin için değerleri empoze etmek için biraz umutla (SVD'yi çalıştırmadan önce empoze ettiğiniz), değil mi? Ne düşünüyorsun, bir model sihir mi? Çoğunluk çöp verilerinin üstesinden gelmek için hiçbir sihir veya teknoloji yoktur. Bir modele, gerçek olmadığında verilerin gerçek veri olduğunu söyleyemezsiniz, ama gerçekten sadece ince havadan yapılmış bazı önemsiz şeyler.
SVD başka yararlı şeyler yapar, bu yüzden SVD'nin en azından değersiz olduğunu söylemiyorum. SVD'yi yalnızca tam veri kümelerinde kullanın, belki de geliştirme sırasında önyargı hatasına ve sapma hatasına tüm dikkat gösterilerek zaten bir makine öğrenme modelini kullanmanın eksik değerlerini akıllıca etkilemişsinizdir.
Makine öğrenmenin yolu budur. Dolayısıyla, bir matris çarpanlara ayırma tasarımı kullanarak değerlerin nasıl impute edileceğini bilmek istiyorsanız, makine öğrenimini kullanarak tam olarak bunu yapmanın kesinlikle iyi yolları vardır ve en önemlisi, gereksiz bir şekilde öğrenmek için bir modele herhangi bir önemsiz veri beslemezler.
Tam olarak böyle bir makine öğrenme matrisi çarpanlara ayırma modeli, modül 5'te 5. Stanford çevrimiçi Madencilik Masif Veri Kümelerinin eğitmenleri tarafından oldukça iyi bir şekilde sunulmaktadır. Onlar olsa sizin için kodlama yok.
Tamam, çünkü temel makine öğrenimini anlarsanız, kendiniz kodlayabilirsiniz. Kayıp fonksiyonu ve maliyet fonksiyonunun ne olduğunu biliyor musunuz? Düzenlileştirme? Dereceli alçalma? AR Matris çarpımı ve toplama ile iyi misiniz? Sapma hatası ve sapma hatası? Eğer öyleyse o zaman iyisin. Değilse, o zaman çok iyi bir başlangıç yerlerinden biri olan Andrew Ng'in çevrimiçi kursu Machine Learning at Coursera'yı almayı düşünmelisiniz . Daha sonra, tavsiye modeli yapmak için matris çarpanlarına ayırma ve makine öğrenimi hakkında tam olarak konuşan çevrimiçi Madencilik Büyük Veri Setleri dersini de alın .
Söylemek yeterli, tamamen Simon Funk'ın yaptığı gibi eksik verileri çok iyi işleyen kendi çarpanlara ayırma modelinizi tamamen tasarlayabilir ve kodlayabilirsiniz ve sıfırdan yapabilirsiniz, ancak geri döndüğü gibi artık zor değil çünkü artık sizin için çok şey yapan TensorFlow veya Microsoft CNTK gibi bir araç kullanabilirsiniz. Bir kayıp fonksiyonu ve bir maliyet fonksiyonu tanımlayın, bir optimize edici seçin, veri setinizi eğitime ayırın, geliştirin, gerçekte mevcut olan verilerden test edin (etiketli veriler) ve çalışmasına izin verin. Cidden, işe yarıyor. TF ve grafik oluşturma hatalarını ayıklamak kolay değildir, ancak sonunda harika çalışabilir ve bir sayfadan daha az kod alır.
Özellikle, sahte verileri bir matris çarpanlara ayırma makinesi öğrenme modeline beslememenin bir yolu , kayıp verilerinizin kayıp ve maliyet fonksiyonlarınızdaki matris öğelerini atlamaktır .