Compréhension de l'évaluation et de l'optimisation des modèles

Objective

After completing this lesson, you will be able to évaluez les performances du modèle de régression linéaire à l'aide de la métrique R au carré.

Évaluation du modèle

La métrique de performance du modèle utilisée pour évaluer le modèle de régression linéaire est le coefficient de détermination. Il est connu sous le nom de "R au carré", et noté "R2" [ 1, 2 ].

R2 est essentiellement la proportion de variation dans la variable de réponse qui est prévisible à partir des variables indépendantes. Autrement dit, plus la valeur de R2 est grande, plus le modèle explique la variabilité.

Généralement, R2 varie de 0 à 1; cependant, il peut y avoir des cas où des valeurs négatives peuvent être obtenues, voir [1] pour plus de détails.

Dans ce cas, un score R2 de '0,75' est obtenu.

Python
123456
#Computes the R2 score R2=hgr.score( test_hdf, key='ID', features=['MedInc', 'HouseAge', 'AveRooms', 'AveBedrms', 'Population', 'AveOccup', 'Latitude', 'Longitude'], label='Target') R2

Résultat :

0.7535287346593224

Références

[1] Coefficient de détermination

[2] Coefficient de détermination (R au carré)

Améliorer le modèle HGBT avec une recherche de paramètres optimale

Pour améliorer le modèle HGBT, une recherche des valeurs de paramètre optimales pour l'objet de régression linéaire est lancée. ParamSearchCV effectue une recherche exhaustive ou aléatoire sur des valeurs de paramètres spécifiées avec validation croisée (CV) [1]

Références

[1] Package d'algorithme SAP hana_ml.algorithms.pal : ParamSearchCV

Python
123456789101112131415161718
from hana_ml.algorithms.pal.model_selection import ParamSearchCV hgbr=HybridGradientBoostingRegressor(n_estimators=50, subsample = 0.8, col_subsample_tree=0.7) ps_hgr3=ParamSearchCV(estimator=hgbr, search_strategy='grid', param_grid={ 'learning_rate': [0.05, 0.1, 0.025, 0.04, 0.01], 'max_depth': [4, 5, 6, 7, 8, 10], 'split_threshold': [0.1, 0.4, 0.7, 1], 'min_samples_leaf': [2,3,4,5,6], 'col_subsample_split': [0.2,0.4,0.6, 0.8] }, train_control={"fold_num": 10, "evaluation_metric": 'rmse'}, scoring='mae' ) ps_hgr3.set_scoring_metric('mae') ps_hgr3.set_resampling_method('cv') ps_hgr3.fit(data=train_hdf, features=['MedInc', 'HouseAge', 'AveRooms', 'AveBedrms', 'Population', 'AveOccup', 'Latitude', 'Longitude'], label='Target', key='ID')

Contrôle des paramètres optimisés

Le mappage entre les noms de paramètres optimisés (comme indiqué à gauche) et les noms de paramètre HybridGradientBoostingRegressor (comme indiqué à droite) est fourni ci-dessous :

  • MAX_DEPTH = prof. max.
  • ETA = learning_rate
  • COL_SAMPLE_RATE_BYSPLIT = col_subsample_split
  • NODE_SIZE = min_samples_leaf
  • GAMMA = split_seuil
Python
1
ps_hgr3.estimator.selected_param_.collect()
 PARAM_NAMEINT_VALUEDOUBLE_VALUESTRING_VALUE
0MAX_DEPTH10.0NaNAucune
1HAENaN0,1Aucune
2COL_SAMPLE_RATE_BYSPLITNaN0,6Aucune
3NODE_SIZE6.0NaNAucune
4GAMMANaN0,1Aucune
Python
12
# Optimal parameter values selected hgbt_params = dict(n_estimators = 50, subsample = 0.8, col_subsample_tree=0.7, split_method = 'exact', fold_num=10, resampling_method = 'cv', evaluation_metric = 'rmse', ref_metric=['mae'], max_depth=10, learning_rate=0.1, col_subsample_split=0.6, min_samples_leaf=6, split_threshold=0.1)

Nouvel entraînement du modèle

Le réentraînement du modèle est nécessaire pour intégrer les paramètres de l'algorithme nouvellement optimisé visant à maximiser les performances du modèle ; ces paramètres ont été obtenus dans la section précédente.

Python
12345
%%time #retrain model with optimal parameters hgr_optimized = HybridGradientBoostingRegressor( **hgbt_params ) hgr_optimized.fit(train_hdf, features=['MedInc', 'HouseAge', 'AveRooms', 'AveBedrms', 'Population', 'AveOccup', 'Latitude', 'Longitude'], label='Target')

Temps CPU : utilisateur 4,18 ms, système : 2,36 ms, total : 6,55 ms

Temps du mur: 2.19 s

Résultat :

<hana_ml.algorithms.pal.trees.HybridGradientBoostingRegressor à l'adresse 0x7fe333c01e10>

Modèle réentraîné : importance de la fonctionnalité

L'importance de la fonctionnalité affecte un score aux fonctions d'entrée en fonction de leur contribution à la prévision de la réponse ou de la variable dépendante [1].

Plus le score d'une fonctionnalité est élevé, plus elle a d'influence sur le modèle pour prédire la variable cible. Les scores d'importance se situent dans la plage [0, 1].

Modèle réentraîné : évaluation de l'importance de la fonctionnalité

En comparant avec le "Modèle entraîné" initial, vous pourrez observer que la caractéristique la plus influente reste 'MedInc' avec une valeur d'importance diminuée de '0,34' (la valeur précédente était '0,51'). Cette caractéristique représente le revenu médian dans un groupe de blocs. [2].

Fait intéressant, les caractéristiques 'Latitude' et 'Longitude' deviennent les deuxième et troisième caractéristiques les plus influentes des positions trois et cinq (initialement "Model Trained"), respectivement. En fait, ils sont devenus environ 2 fois plus influents en franchissant la valeur '0,10'.

Le modèle amélioré peut mettre en évidence plus précisément que les emplacements géographiques ont une influence plus forte sur la variable cible qu'on ne le pensait auparavant. La variable 'target' est la 'Median House Value' pour les districts californiens [2].

Python
1
hgr_optimized.feature_importances_.sort('IMPORTANCE', desc='TRUE').collect()
 VARIABLE_NAMEIMPORTANCE
0MedInc0.340796
1Longitude0.216604
2Latitude0.153428
3AveOccup0.116022
4AveRooms0.097980
5HouseAge0.036293
6Population0.019592
7AveBedrms0.019286

Références

[1] Package d'algorithme SAP hana_ml.pal : HybridGradientBoostingRegressor

[2] Description de l'ensemble de données California Housing

Modèle entraîné à nouveau : évaluation du modèle

Pour évaluer les performances du modèle de régression linéaire, comme indiqué dans la section "Évaluation du modèle", on utilise le coefficient de détermination, communément appelé R carré et noté R2, [1, 2].

R2 mesure la proportion de variation dans la variable de réponse qui est expliquée par les variables indépendantes. Une valeur R2 plus élevée indique que le modèle explique une plus grande proportion de la variabilité.

Bien que la valeur de R2 soit généralement comprise entre 0 et 1, des valeurs négatives peuvent survenir dans certains cas. Voir [1] pour plus de détails.

Dans ce cas, le modèle amélioré obtient un score R2 de 0,829, une amélioration par rapport au score initial de 0,75, ce qui représente une augmentation de 0,079.

Python
123456
#Computes the R2 score R2=hgr_optimized.score( test_hdf, key='ID', features=['MedInc', 'HouseAge', 'AveRooms', 'AveBedrms', 'Population', 'AveOccup', 'Latitude', 'Longitude'], label='Target') R2

Résultat :

0.7535287346593224

Références

[1] Coefficient de détermination

[2] Coefficient de détermination (R au carré)