Bouw een ALS-model
Laten we je eerste ALS-model specificeren. Maak de code hieronder af om je eerste ALS-model te bouwen.
Onthoud dat je de methode .columns op het ratings-dataframe kunt gebruiken om te zien hoe de kolommen heten die de gebruikers-, film- en beoordelingsgegevens bevatten. Spark moet deze kolomnamen weten om ALS correct uit te voeren.
Deze oefening maakt deel uit van de cursus
Aanbevelingssystemen bouwen met PySpark
Oefeninstructies
- Voordat we ons ALS-model bouwen, moeten we de data splitsen in trainingsdata en testdata. Gebruik de methode
randomSplit()om hetratings-dataframe te splitsen intraining_dataentest_datamet respectievelijk een 0,8/0,2-split en eenseedvoor de willekeurigegetalgenerator van42. - Vertel Spark welke kolommen de
userCol,itemColenratingColbevatten. Gebruik indien nodig de methode.columns. Vul de hyperparameters in. Zet derankop 10, demaxIterop 15, deregParamof lambda op .1, decoldStartStrategyop"drop", het argumentnonnegativeopTrue, en omdat onze data expliciete beoordelingen bevat, zet je het argumentimplicitPrefsopFalse. - Fit nu het
als-model op hettraining_data-gedeelte van deratings-data door de methodeals.fit()aan te roepen op de meegegeventraining_data. Noem het gefitte modelmodel. - Genereer voorspellingen op het
test_data-gedeelte van deratings-data door de methodemodel.transform()aan te roepen op de meegegeventest_data. Noem de voorspellingentest_predictions. Je kunt de voorspellingen bekijken door de methode.show()aan te roepen optest_predictions.
Interactieve oefening met praktijkervaring
Probeer deze oefening door deze voorbeeldcode aan te vullen.
# 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()