BaşlayınÜcretsiz başlayın

Çapraz doğrulamalı bir örtük ALS modeli çalıştırma

Artık her biri farklı bir hiperparametre kümesine sahip birkaç ALS modelimiz olduğuna göre, bunları çapraz doğrulama kullanarak msd veri kümesinin eğitim kısmında eğitebilir, sonra da bir test veri kümesi üzerinde çalıştırıp her birinin ne kadar iyi performans gösterdiğini daha önce tartıştığımız ROEM fonksiyonuyla değerlendirebiliriz. Ne yazık ki, bu işlem bu egzersiz için fazla zaman alıyor; bu yüzden ayrı olarak yapıldı. Yine de referans olması için, model_list'ini aşağıdaki döngüyü kullanarak değerlendirebilirsin (bu örnekte msd veri kümesini kullanıyoruz):

# Split the data into training and test sets
(training, test) = msd.randomSplit([0.8, 0.2])

#Building 5 folds within the training set.
train1, train2, train3, train4, train5 = training.randomSplit([0.2, 0.2, 0.2, 0.2, 0.2], seed = 1)
fold1 = train2.union(train3).union(train4).union(train5)
fold2 = train3.union(train4).union(train5).union(train1)
fold3 = train4.union(train5).union(train1).union(train2)
fold4 = train5.union(train1).union(train2).union(train3)
fold5 = train1.union(train2).union(train3).union(train4)

foldlist = [(fold1, train1), (fold2, train2), (fold3, train3), (fold4, train4), (fold5, train5)]

# Empty list to fill with ROEMs from each model
ROEMS = []

# Loops through all models and all folds
for model in model_list:
    for ft_pair in foldlist:

        # Fits model to fold within training data
        fitted_model = model.fit(ft_pair[0])

        # Generates predictions using fitted_model on respective CV test data
        predictions = fitted_model.transform(ft_pair[1])

        # Generates and prints a ROEM metric CV test data
        r = ROEM(predictions)
        print ("ROEM: ", r)

    # Fits model to all of training data and generates preds for test data
    v_fitted_model = model.fit(training)
    v_predictions = v_fitted_model.transform(test)
    v_ROEM = ROEM(v_predictions)

    # Adds validation ROEM to ROEM list
    ROEMS.append(v_ROEM)
    print ("Validation ROEM: ", v_ROEM)

Adımları birlikte gösterebilmek için, 192 modelin test tahminleri önceden üretildi ve bunların ROEM değeri hesaplandı. Bu değerler sağlanan ROEMS listesinde bulunuyor. Bir liste Pyspark'a özgü olmadığından ve numpy listelerle çok iyi çalıştığından burada numpy kullanacağız. En iyi ROEM değerini ve bunu sağlayan modeli bulmak için aşağıdaki talimatları uygula.

Bu egzersiz, kursun bir parçasıdır

PySpark ile Öneri Motorları Oluşturma

Kursa Göz Atın

Egzersiz talimatları

  • numpy'yi içe aktar.
  • Verilen ROEMS listesinden en küçük ROEM değerini numpy.argmin() ile çıkar. .argmin() metodu, verilen listedeki en küçük değerin indeksini döndürür. Sonucu i olarak adlandır ve i'yi yazdır.
  • Dilimleme kullanarak ROEMS listesindeki i indeksindeki değeri bul.

Uygulamalı etkileşimli egzersiz

Bu egzersizi bu örnek kodu tamamlayarak deneyin.

# Import numpy
import numpy

# Find the index of the smallest ROEM
i = numpy.____(____)
print("Index of smallest ROEM:", ____)

# Find ith element of ROEMS
print("Smallest ROEM: ", ____[____])
Kodu Düzenle ve Çalıştır