Comment construire un modèle prédictif

Contenu

Vue d'ensemble

  • Les hackathons consistent à construire des modèles prédictifs sur une courte période de temps.
  • L'étape de prétraitement des données prend la plupart du temps partagé lors de la création d'un modèle
  • D'autres étapes incluent l'analyse descriptive, modélisation des données et évaluation des performances du modèle.

introduction

Au cours des derniers mois, nous avons commencé à faire de la science des données. hackaton. Ces hackathons sont des concours avec un obstacle de données bien défini, qui devrait être résolu dans un court laps de temps. Comme d'habitude, dernier entre 2 Oui 7 jours.

Si les compétitions d'un mois à Kaggle sont comme des marathons, donc ces hackathons sont un format plus court du jeu: 100 mts sprint. Ce sont des événements à haute énergie où les scientifiques des données mettent beaucoup d'énergie, le classement change presque toutes les heures et la vitesse de résolution du problème de la science des données est beaucoup plus importante que les compétences de Kaggle.

modèle prédictif, dix minutes, Rapide

L'un des meilleurs conseils que je puisse offrir aux data scientists impliqués dans ces hackathons (ou même dans des compétitions plus longues) est de créer rapidement la première solution et de la soumettre. Les premières présentations devraient être très rapides. J'ai créé des modules en Python et R qui peuvent inclure des données tabulaires et le nom de la variable cible et BOOM !! J'ai mon premier modèle en moins de 10 minutes (en supposant que vos données contiennent plus de 100,000 observations). Pour les ensembles de données plus petits, cela peut être encore plus rapide. La raison de l'expédition de cette solution ultra-rapide est de créer une référence pour vous où vous devez vous améliorer. Je vais parler de ma méthodologie dans ce post.

Décomposition de la procédure de modélisation prédictive

Pour comprendre les domaines stratégiques, analysons d'abord la procédure d'analyse prédictive dans ses composantes essentielles. À peu près, Peut être divisé en 4 les pièces. Chaque composant prend x temps d'exécution. Évaluons ces aspects n (avec le temps passé):

  1. Analyse descriptive des données: 50% du temps
  2. Traitement des données (valeur manquante et correction des valeurs aberrantes): 40% du temps
  3. La modélisation des données: 4% du temps
  4. Estimation des performances: 6% du temps

Noter: Les pourcentages sont centrés sur un échantillon de 40 compétences, auquel j'ai participé dans le passé (arrondi).

Maintenant, nous savons où nous devrions réduire le temps. Allons pas à pas dans la procédure (avec le temps estimé):

1.Analyse descriptive : Quand j'ai commencé ma carrière dans l'analytique, nous construisions principalement des modèles basés sur la régression logistique et les arbres de décision. La plupart des algorithmes que nous avons utilisés impliquaient des algorithmes gourmands, qui peut sous-ensemble le nombre de fonctionnalités sur lesquelles je dois me concentrer.

Avec des outils d'apprentissage automatique avancés sur la course, le temps requis pour effectuer cette tâche peut être considérablement réduit. Pour votre première analyse, vous n'avez probablement pas besoin de faire d'ingénierie de fonctionnalités. Pour cela, le temps dont vous pourriez avoir besoin pour effectuer une analyse descriptive est limité à la connaissance des valeurs manquantes et des grandes fonctionnalités directement visibles. Dans ma méthodologie, a besoin de 2 minutes pour terminer cette étape (Je suppose qu'une donnée avec 100.000 observations).

2.Traitement des données : Étant donné qu'il s'agit de l'étape qui prend le plus de temps, nous devons trouver des techniques intelligentes pour terminer cette étape. Voici deux astuces simples que vous pouvez mettre en pratique:

  • Créer des indicateurs factices pour les valeurs manquantes: en général, J'ai constaté que les valeurs manquantes dans la variable contiennent aussi parfois une bonne quantité d'informations. Par exemple, si vous analysez les données du parcours de navigation, il n'aura probablement pas beaucoup de valeurs dans des variables spécifiques correspondant à l'utilisation de l'appareil mobile.
  • Imputer la valeur manquante avec la moyenne / toute autre méthode plus simple: J'ai trouvé que 'signifie’ fonctionne très bien pour la première itération. Uniquement dans les cas où il y a une tendance évidente à partir de l'analyse descriptive, vous avez probablement besoin d'une méthode plus intelligente.

Avec des méthodes de traitement de données aussi simples, peut réduire le temps de traitement des données pour 3-4 minutes.

3. La modélisation des données : J'ai trouvé le GBM extrêmement efficace dans 100.000 cas d'observation. En cas de données plus importantes, vous pouvez envisager d'exécuter une forêt aléatoire. Cela prendra le maximum de temps (~ 4-5 minutes)

4. Estimation des performances : Je trouve k-fold avec k = 7 très efficace pour accepter mon pari initial. Ceci en conclusion prend 1-2 minutes exécuter et documenter.

La raison de construire ce modèle n'est pas de gagner la compétition, mais pour se déterminer un point de référence. Laissez-moi approfondir mon algorithme. J'ai également inclus quelques extraits de mon code dans ce post.

Commençons à mettre cela en action

Je n'inclurai pas toute ma fonction pour vous laisser de la place pour innover. Voici un squelette de mon algorithme (un R):

Paso 1 : Ajouter le test et l'ensemble de données d'entraînement ensemble

Paso 2 : Lire l'ensemble de données dans sa mémoire

ensemble("C:UtilisateursTavishDesktopKaggAV")
Achevée <- lire.csv("complete_data.csv", stringsAsFactors = TRUE)

Paso 3: Afficher les noms de colonnes / résumé de l'ensemble de données

noms de colonne(Achevée )
[1] "identifiant" "Le genre" "Ville"  "Revenu mensuel" "Décaissé" "former"

Paso 4: Identifier l'un) Variable numérique b) Variables d'identification c) Variables de facteur d) Variables cibles

Paso 5 : Créer des indicateurs pour les valeurs manquantes

missing_val_var <- une fonction(Les données,variable,new_var_name) {
data$new_var_name <- sinon(est.na(variable),1,0))
revenir(data$new_var_name)}

Paso 6 : Imputation des valeurs numériques manquantes

numeric_impute <- une fonction(Les données,variable) {
signifie1 <- moyenne(donnée$variable)
donnée$variable <- sinon(est.na(donnée$variable),moyenne1,données$variable)
revenir(new_var_name)
}

Équivalent, imputer une variable catégorielle afin que toutes les valeurs manquantes soient encodées comme une seule valeur, dis-le “Nul”.

Paso 7 : Passer la variable imputée à la procédure de modélisation.

#Défi: essayez d'intégrer une méthodologie K-fold dans cette étape

créer_modèle <- une fonction(trainDonnées,cible) {
set.seed(120)
myglm <- glm(cible ~ . , données = trainData, famille = "binôme")
revenir(myglm) }

Paso 8 : Faire des prédictions

But <- prédire(myglm, newdata = testData, taper = "réponse")
score_train <- prédire(myglm, nouvelles données = complet, taper = "réponse")

Paso 9 : Vérifier les performances

auc(complet$Déboursé,score_train)

Et soumettre!

Remarques finales

Avec chance, ce post vous aura donné assez de motivation pour créer votre propre code de 10 minutes. La plupart des maîtres de Kaggle et des meilleurs scientifiques du hackathon ont ces codes prêts et lancent leur première présentation avant de faire une analyse détaillée.. Une fois qu'ils ont une estimation du point de référence, ils commencent à improviser plus. Partagez vos codes complets dans la zone de commentaire ci-dessous.

Ce post vous a-t-il été utile? Partagez vos opinions / pensées dans la section des commentaires ci-dessous.

Si vous aimez ce que vous venez de lire et souhaitez continuer à apprendre sur l'analyse, abonnez-vous à nos e-mails, Suivez-nous sur Twitter ou comme le nôtre page le Facebook.

Abonnez-vous à notre newsletter

Nous ne vous enverrons pas de courrier SPAM. Nous le détestons autant que vous.