Compétition Kaggle : House Prices

Pour pratiquer mes compétences en régression, je m’attaque à la compétition Kaggle : “House prices: advanced regression techniques“.

Le jeu est une liste de 79 variables (surfaces, prix, voisinage, état général, etc.) décrivant près de 2000 maisons vendues dans l’Iowa.

Le challenge consiste à construire un modèle permettant de  prédire le prix des maisons à partir de ces variables.

Dans la solution que je propose, j’ai comparé différentes méthodes de régression : ridge, lasso, elastic net, gradient boosting, AdaBoost et Huber (régression robuste moins sensible aux outliers).

Pour améliorer le score, j’ai crée un prédicteur d’ensemble. Il consiste à combiner les différents modèles utilisés, et à donner la moyenne (ou la médiane) du prix.

#Construction d'un ensemble de regresseurs
def EnsembleRegressor(regressors,X_Validation):
    EnsemblePred = pd.DataFrame()
    for reg in regressors:
        colname = str(reg)[:4]
        EnsemblePred[colname] = reg.predict(X_Validation)
    EnsemblePred["Ensemble"] = EnsemblePred.apply(lambda x: np.mean(x), axis=1)
    EnsemblePred["Ensemble"] = EnsemblePred.apply(lambda x: np.median(x), axis=1)
    return EnsemblePred

Concernant le pré-processing des données, il reste à faire afin d’améliorer le score, en particulier :

  • Mieux cibler la détection d’outliers
  • Créer d’autres variables combinées

Cette phase sera étudiée dans un prochain billet. En attendant, le modèle combiné donne un score (RMSE (log(prix)) de 0.12969, ce qui me classe 846/1880 au 06 juillet 2017.

Tous les détails sont dans le notebook jupyter ci-dessous :

 

Leave a Reply

Your email address will not be published. Required fields are marked *