Bygg en ALS-modell
Nu ska du specificera din första ALS-modell. Komplettera koden nedan för att bygga din första ALS-modell.
Kom ihåg att du kan använda metoden .columns på dataramen ratings för att se namnen på de kolumner som innehåller användar-, film- och betygsdata. Spark behöver känna till namnen på dessa kolumner för att kunna utföra ALS korrekt.
Den här övningen är en del av kursen
Bygg rekommendationsmotorer med PySpark
Övningsinstruktioner
- Innan vi bygger vår ALS-modell behöver vi dela upp datan i träningsdata och testdata. Använd metoden
randomSplit()för att dela upp dataramenratingsitraining_dataochtest_datamed en uppdelning på 0,8/0,2 respektive, och angeseedför slumptalsgeneratorn till42. - Tala om för Spark vilka kolumner som innehåller
userCol,itemColochratingCol. Använd metoden.columnsvid behov. Komplettera hyperparametrarna. Sättranktill 10,maxItertill 15,regParam(lambda) till .1,coldStartStrategytill"drop", argumentetnonnegativeska sättas tillTrue, och eftersom vår data innehåller explicita betyg, sätt argumentetimplicitPrefstillFalse. - Anpassa nu
als-modellen tilltraining_data-delen avratings-datan genom att anropa metodenals.fit()på den angivnatraining_data. Kalla den anpassade modellenmodel. - Generera förutsägelser på
test_data-delen avratings-datan genom att anropa metodenmodel.transform()på den angivnatest_data. Kalla förutsägelsernatest_predictions. Du kan gärna granska förutsägelserna genom att anropa metoden.show()påtest_predictions.
Interaktiv övning med praktiskt arbete
Testa den här övningen genom att slutföra den här exempelkoden.
# Split the ratings dataframe into training and test data
(training_data, test_data) = ratings.____([____, ____], seed=42)
# Set the ALS hyperparameters
from pyspark.ml.recommendation import ALS
als = ALS(userCol="____", itemCol="____", ratingCol="____", rank =____, maxIter =____, regParam =____,
coldStartStrategy="____", nonnegative =____, implicitPrefs = ____)
# Fit the mdoel to the training_data
____ = ____.fit(____)
# Generate predictions on the test_data
____ = ____.transform(____)
test_predictions.show()