Construiește un model ALS
Hai să definești primul tău model ALS. Completează codul de mai jos pentru a-l construi.
Amintește-ți că poți folosi metoda .columns pe DataFrame-ul ratings pentru a vedea numele coloanelor care conțin datele despre utilizatori, filme și evaluări. Spark are nevoie de aceste nume pentru a putea aplica ALS corect.
Acest exercițiu face parte din cursul
Construiește motoare de recomandare cu PySpark
Instrucțiuni pentru exercițiu
- Înainte de a construi modelul ALS, trebuie să împarți datele în set de antrenament și set de testare. Folosește metoda
randomSplit()pentru a împărți DataFrame-ulratingsîntraining_datașitest_datacu un raport de 0.8/0.2 și unseedpentru generatorul de numere aleatoare egal cu42. - Indică-i lui Spark care coloane conțin
userCol,itemColșiratingCol. Folosește metoda.columnsdacă este necesar. Completează hiperparametrii: seteazărankla 10,maxIterla 15,regParam(lambda) la .1,coldStartStrategyla"drop", argumentulnonnegativelaTrue, iar deoarece datele noastre conțin evaluări explicite, setează argumentulimplicitPrefslaFalse. - Acum antrenează modelul
alspe porțiuneatraining_datadin dateleratings, apelând metodaals.fit()cutraining_dataca argument. Numește modelul antrenatmodel. - Generează predicții pe porțiunea
test_datadin dateleratings, apelând metodamodel.transform()cutest_dataca argument. Numește predicțiiletest_predictions. Poți vizualiza predicțiile apelând metoda.show()petest_predictions.
Exercițiu interactiv practic
Încearcă acest exercițiu completând acest cod de exemplu.
# 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()