PC & Mobile

Comment prédire le succès et l'échec de l'entreprise – Nadim Kawwa

Comment prédire le succès et l'échec de l'entreprise - Nadim Kawwa


Photo par Eaters Collective sur Unsplash

Démarrer une entreprise n’est pas une tâche anodine, il faut tenir compte de nombreuses dépenses telles que les coûts irrécupérables, les frais généraux et les emprunts. Les indicateurs de succès incluent, sans toutefois s'y limiter, la croissance, les revenus des ventes, la fidélisation de la clientèle et les bilans.

La viabilité d’une entreprise dépend d’abord et avant tout d’un axiome: qu'il reste ouvert.

Ce sujet intéresse particulièrement les entreprises qui doivent rester viables et les clients qui attendent des services fiables et de qualité. Il est également important dans le domaine de la finance où les prêteurs doivent justifier de consentir des prêts et pourrait être obligé par la loi à expliquer pourquoi les demandes sont refusées.

Nous formulons donc la motivation et le but de cette entreprise comme suit: Peut-on prédire si une entreprise est ouverte ou fermée? Quels sont les principaux indicateurs de viabilité?

Dans cet article, nous allons résoudre cette question en utilisant le jeu de données Yelp, une collection de données relationnelles sur les entreprises locales aux États-Unis et au Canada. Il contient un grand volume d'informations complètes:

  • 6 685 900 avis
  • 192 609 entreprises
  • dix régions métropolitaines
  • 1 223 094 conseils

L'ensemble de données Yelp est donc une excellente étude de cas sur la façon dont des fonctionnalités bien conçues, associées à des modèles d'apprentissage automatique, peuvent prédire le succès d'une entreprise au-delà des approches traditionnelles telles que les bilans.

Dans la partie suivante, nous allons présenter chaque segment de l’ensemble de données comme étant donné et en tirer des caractéristiques:

  • Entreprises: (business.json) Cet ensemble de données contient des données pertinentes pour l'entreprise, notamment des données de localisation, des attributs de restaurant et des catégories de cuisine.
  • Avis: (Review.json) Cet ensemble de données contient des données textuelles complètes comprenant le user_id qui a rédigé l'examen et le business_id pour lequel l'avis a été écrit.
  • Checkin: (Checkin.json) Cet ensemble de données contient les entrées archivées pour les entreprises, le cas échéant.

Ingénierie des fonctionnalités

le business.json Le fichier contient des données commerciales, y compris des données de localisation, des attributs et des catégories. L'extrait ci-dessous montre sa configuration:

{
// chaîne, identifiant professionnel de chaîne unique de 22 caractères
"business_id": "tnhfDv5Il8EaGSXZGiuQGg",

// chaîne, le nom de l'entreprise
"nom": "Garaje",

// chaîne, l'adresse complète de l'entreprise
"address": "475 3rd St",

// string, la ville
"ville": "San Francisco",

// chaîne, code d'état à 2 caractères, le cas échéant
"state": "CA",

// chaîne, le code postal
"code postal": "94107",

// float, latitude
"latitude": 37,7817529521,

// float, longitude
"longitude": -122.39612197,

// float, nombre d'étoiles, arrondi aux demi-étoiles
"étoiles": 4.5,

// entier, nombre d'avis
"review_count": 1198,

// entier, 0 ou 1 pour fermé ou ouvert, respectivement
"is_open": 1,

// objet, attributs commerciaux aux valeurs. remarque: certaines valeurs d'attributs peuvent être des objets
"les attributs": {
"RestaurantsTakeOut": vrai,
"BusinessParking": {
"garage": faux,
"rue": vrai,
"validé": faux,
"lot": faux,
"valet": faux
},
},

// un tableau de chaînes de catégories professionnelles
"catégories":[[
"Mexicain",
"Burgers",
"Gastro-clubs"
],

// un objet du jour clé pour la valeur heures, les heures utilisent une horloge de 24 heures
"heures": {
"Lundi": "10h00-21h00",
"Mardi": "10h00-21h00",
"Vendredi": "10h00-21h00",
"Mercredi": "10h00-21h00",
"Jeudi": "10h00-21h00",
"Dimanche": "11h00-18h00",
"Samedi": "10h00-21h00"
}

}

La variable cible est la est ouvert tels que 0 indique fermé et 1 indique ouvert.

En tant que première approche, nous devons décomposer les attributs imbriqués dans les valeurs correspondantes. Par exemple dans le les attributs fonctionnalité, nous avons un codage binaire pour RestaurantsTakeOut et nous devons élargir encore la BusinessParking fonctionnalité.

Dans le les attributs fonctionnalité, nous pouvons concevoir des variables catégorielles telles que des valeurs numériques. Par exemple Niveau de bruit est une chaîne d'entrée avec des valeurs:

  • très fort
  • bruyant
  • moyenne
  • silencieux
  • NaN

Il est donc possible de coder ces entités de chaîne avec des valeurs numériques, par exemple une échelle représentant les niveaux de bruit. Nous pouvons répéter le même exercice pour des attributs tels que Âges admis, De l'alcool, RestaurantsAttire, et d'autres.

En outre, le catégories fonctionnalité contient une liste de chaînes qui ne sont pas mutuellement exclusives. Il est possible qu'une entreprise soit classée dans les catégories Mexicaine, Burgers et Brasserie gastronomique. Par conséquent, ceux-ci sont codés en tant que caractéristiques binaires.

Dans un cas simple de traitement du langage naturel, on remarque qu'environ 1000 entreprises sont nommées Starbucks et ~ 800 sont nommés McDonalds . Nous définissons donc le binaire chaîne Une caractéristique telle que 1 indique que cette entreprise fait partie d'une chaîne et qu'un nom doit apparaître au moins 5 fois pour être considéré comme une chaîne.

Nous utilisons le latitude et longitude fonctionnalités afin de tirer des caractéristiques géodésiques de l'ensemble de données. Nous utilisons la méthode du champ de sélection minimal afin d’interroger toutes les autres entreprises d’un rayon donné. Dans le cadre de ce projet, nous avons défini un rayon de 2 kilomètres, car les clients sont disposés à marcher entre deux entreprises.

À partir de données géodésiques, nous pouvons définir des caractéristiques telles que densité qui est le nombre d'entreprises dans le cercle interrogé. De plus, nous pouvons comparer chaque entreprise à son environnement en appliquant une normalisation Z-Score. Par exemple, le Z-score du prix d’une entreprise correspond à la différence entre le prix et la moyenne du groupe, divisé par l’écart-type.

Dynamiser les entreprises avec des sources externes

Pour l'ingénierie des caractéristiques, il peut être utile de tirer des informations au-delà du jeu de données. Chaque entreprise a son code postal correspondant aux formats américain et canadien.

Cela dit, l’IRS publie des statistiques sur le revenu individuel et le Bureau de la statistique du Canada publie des données sur le revenu. Bien que non spécifique à l'entreprise elle-même, le revenu de la localité peut jouer un rôle dans la viabilité.

Afin de préserver la vie privée des citoyens, l'IRS ne publie pas de chiffres exacts sur les revenus, mais les données sont catégoriques. Par exemple, une valeur de 3 indique le revenu entre 50 000 à 75 000 $ et 5 est entre $100 000 à 200 000.

Par conséquent, nous pouvons associer chaque code postal au revenu médian du ménage correspondant, en veillant à convertir les dollars canadiens en dollars américains et en combinant les données de revenu canadien par la méthode IRS.

le review.json Le fichier contient les données de texte de révision complètes, y compris le user_id qui a écrit la révision et le business_id pour lequel la révision est écrite.

Ci-dessous, un extrait présentant les attributs:

{
// chaîne, identifiant de révision unique à 22 caractères
"review_id": "zdSx_SD6obEhz9VrW9uAWA",

// chaîne, identifiant d'utilisateur unique à 22 caractères, mappé à l'utilisateur dans user.json
"user_id": "Ha3iJu77CxlrFm-vQRs_8g",

// chaîne, identifiant professionnel à 22 caractères, mappe vers une entreprise dans business.json
"business_id": "tnhfDv5Il8EaGSXZGiuQGg",

// entier, nombre d'étoiles
"étoiles": 4,

// chaîne, date formatée AAAA-MM-JJ
"date": "2016-03-09",

// chaîne, la critique elle-même
"text": "Super endroit pour se détendre après le travail: les prix sont corrects et l'ambiance est agréable. C'est un peu bruyant, mais très animé. Le personnel est sympathique et la nourriture est bonne. Ils ont un bon choix de boissons. ",

// entier, nombre de votes utiles reçus
"utile": 0,

// entier, nombre de votes drôles reçus
"drôle": 0,

// entier, nombre de votes positifs reçus
"cool": 0
}

Nous pouvons agréger par business_id et être fait avec l'ingénierie de fonctionnalité. Cependant, étant donné que chaque impression est associée à un horodatage, nous pouvons mesurer directement les changements associés à un emplacement donné.

La moyenne des étoiles attribuées aux utilisateurs renvoie la note moyenne de l'entreprise. Le regroupement par année peut nous aider à voir comment les fonctionnalités de l'entreprise changent d'année en année. S'améliorent-ils ou sont-ils à la traîne?

Comprendre les entreprises

La première question à poser est de savoir où se trouvent ces ~ 192 000 entreprises? Par l'intrigue ci-dessous: Vegas bébé!

Contrairement à l'intrigue ci-dessus, la majorité des entreprises sont situées en Arizona, comme indiqué ci-dessous:

En outre, nous pouvons constater que la majorité des entreprises ont une note comprise entre 3,0 et 4,5, de sorte que la moyenne se situe autour de 3,5.

Enfin, nous souhaitons comparer la distribution de l’étiquette positive / négative entre les types d’entreprise en traçant les nombres et la teinte de couleur par variable cible. Les restaurants représentent la grande majorité des entreprises et comptent la plus forte proportion d’entreprises fermées.

le checkin.json file répertorie tous les enregistrements pour les entreprises, le cas échéant:

{
// chaîne, identifiant professionnel à 22 caractères, mappe vers une entreprise dans business.json
"business_id": "tnhfDv5Il8EaGSXZGiuQGg"

// chaîne qui est une liste d'horodatages séparés par des virgules pour chaque enregistrement, chacun au format AAAA-MM-JJ HH: MM: SS
"date": "2016-04-26 19:49:16, 2016-08-30 18:36:57, 2016-10-15 02:45:18, 2016-11-18 01:54:50, 2017 -04-20 18:39:06, 2017-05-03 17:58:02 "
}

Dans un premier temps, nous pouvons explorer les tendances en matière d'archives, comme indiqué dans le graphique ci-dessous, où l'axe des ordonnées correspond au nombre d'archives agrégées pour toutes les années et fractionnées toutes les 30 minutes. Par exemple, ce graphique nous indique que la moyenne d'enregistrement maximale enregistrée du samedi au dimanche se situe vers 20 heures, tout en fournissant un intervalle de confiance.

Sur une échelle plus macro, nous pouvons également explorer les checkins en décembre, qui contiennent beaucoup de saisonnalité. Dans le graphique ci-dessous, les points forts correspondent aux week-ends.

À partir des données, nous pouvons extraire quelle est la moyenne des enregistrements mensuels. De plus, nous définissons le envergure comme le temps en secondes entre le premier et le dernier enregistrement: plus une entreprise est ouverte depuis longtemps, plus la probabilité qu'elle reste ouverte soit élevée (voir Problème de Sunrise).

La question que nous essayons de résoudre pour tomber sous l'apprentissage supervisé. Étant donné la nature fortement déséquilibrée de la variable cible, nous omettons la notation basée sur la précision et prenons en compte les mesures suivantes:

Dans un tour préliminaire, nous appliquons plusieurs algorithmes d'apprentissage supervisé. Les personnes les plus performantes ont été classées par ordre croissant:

Dans les sections suivantes, nous développerons davantage les techniques individuelles qui ont été couplées pour produire des résultats fiables.

Splits

Le but de l’ingénierie des caractéristiques est d’avoir une représentation numérique des données pouvant être directement introduite dans un algorithme. La première étape consiste à fractionner les données entre les ensembles de formation et de test.

De plus, nous appliquons une mise à l'échelle min-max des fonctionnalités qui est ajustée sur les données d'apprentissage uniquement pour éviter les fuites de modèle. Les données de formation et de test sont ensuite transformées en utilisant cet ajustement.

Validation croisée de la recherche dans la grille

La méthode, également connue sous le nom de GridSearchCV, est populaire auprès des spécialistes des données, car elle est si complète. En combinant la validation croisée avec la recherche sur la grille, nous obtenons des hyperparamètres accordés.

Pertinence des fonctionnalités

Certains algorithmes, tels que les modèles basés sur des arbres, fonctionnent mal dans les espaces de grande dimension. Avoir trop de fonctionnalités peut également entraîner des fonctionnalités bruyantes.

La première approche utilisée pour détecter les caractéristiques bruitées consiste à sélectionner les caractéristiques L1 de la régression logistique, ce qui donne un poids de 0 aux caractéristiques inutiles. La deuxième approche consiste à utiliser le paquetage featexp afin d’identifier les caractéristiques bruitées.

En fin de compte, la méthode la plus interprétable était la permutation pour l’importance des caractéristiques. Dans ce contexte, nous permutons une caractéristique donnée et calculons le changement de l’erreur de prédiction du modèle. Une fonctionnalité est «importante» si elle est modifiée au hasard, mais elle est «sans importance» si l’erreur reste inchangée.

Faire face aux déséquilibres

Enfin, l’aspect le plus important du projet a été la gestion de la variable cible déséquilibrée. Rappelons que seulement environ 20% des entreprises sont classées comme fermées.

Concrètement, cela signifie que la classe minoritaire est submergée par la classe majoritaire, de sorte que l'algorithme n'a pas suffisamment d'observations de minorité pour prendre des décisions, ou que la classe minoritaire est submergée par la majorité.

Une façon de résoudre ce problème consiste à sous-échantillonner: garder la classe minoritaire telle quelle et tirer au hasard un nombre égal d'observations de la classe majoritaire. À l'inverse, le suréchantillonnage fonctionne légèrement mieux: dupliquez la classe de minorités jusqu'à ce que l'ensemble de données soit équilibré.

Quel que soit le choix de l’échantillonnage, il est crucial de l’appliquer uniquement aux données de formation. L'échantillonnage des données de test est un piège courant, car cela équivaut à une interprétation erronée de la réalité.

Le tableau ci-dessous résume plusieurs performances de modèle. De manière générale, tous les modèles prédisent mieux les entreprises ouvertes (Classe 1) plutôt que des volets (Classe 0).

Dans l’ensemble, nous pouvons constater que les modèles basés sur des arbres ont tendance à donner de meilleurs résultats avec un survol 0,75.

Cela dit, l’interprétabilité du modèle est aussi importante, sinon plus, que la performance du modèle. Nous devons donc approfondir chaque modèle pour comprendre quelles sont les principales caractéristiques qui orientent nos décisions.

Le tableau ci-dessous présente les 5 fonctionnalités les plus importantes pour les modèles.

Fait assez intéressant dans un même modèle tel que la régression logistique, étant un Restaurant peut être un poids positif ou négatif en fonction de la méthode d'échantillonnage.

Nous remarquons également certaines fonctionnalités attendues telles que RestaurantsPrixRange2 qui se rapportent au prix, et certains particuliers tels que Accepte l'assurance et BikeParking. Dans le cas d’une assurance, cette fonctionnalité peut être importante pour des entreprises telles que les salons de massage ou les cliniques de médecins.

Dans le modèle gagnant, les fonctionnalités suivantes sont essentielles au succès de l’entreprise:

  • Être un Restaurant
  • Un service le déjeuner
  • Aussi servir dîner
  • Votre RestaurantsPrixRange2 questions
  • Être un chaîne

Les principales fonctionnalités de XGBoost ont été obtenues à partir de l'attribut feature_importances_. Cependant, nous souhaitons trouver un moyen d’expliquer notre production et d’optimiser le succès de notre entreprise.

Pour cette étude, nous utilisons le package SHAP (SHapley Additive exPlanation) pour dériver des attributions de caractéristiques individualisées. Les valeurs de Shapley sont principalement utilisées par prévision pour aider à l'explicabilité, et répondent à des questions telles que «Qu'est-ce qui a provoqué la fermeture de mon entreprise?

Pour justifier l'utilisation de SHAP, nous présentons la méthode plot_importance dans XGBoost qui produit trois interprétations différentes en fonction du type d'importance.

  • poids le nombre de fois qu'une fonctionnalité apparaît dans un arbre
  • Gain le gain moyen de divisions utilisant la fonctionnalité
  • couverture la couverture moyenne des scissions utilisant la fonctionnalité où la couverture est définie comme le nombre d'échantillons affectés par la scission

Dans le graphique ci-dessous, nous montrons la valeur absolue moyenne des valeurs SHAP. L'axe des x montre la variation d'amplitude moyenne dans la sortie du modèle lorsqu'une entité est masquée du modèle. Étant donné que le masquage d’une fonctionnalité change en fonction des autres, les valeurs de Shapley sont utilisées pour renforcer la cohérence et la précision.

Le graphique ci-dessous est un diagramme de dispersion de la densité des valeurs SHAP pour chaque entité afin d'identifier l'impact de chaque entité sur la sortie du modèle pour chaque observation de l'ensemble de données. Le graphique récapitulatif combine l’importance des caractéristiques avec les effets de caractéristiques. Chaque point du tracé de résumé est une valeur de Shapley pour une entité et une instance. La position sur l'axe des y est déterminée par la fonction et sur l'axe des x par la valeur de Shapley. La couleur représente la valeur de l'entité de bas en haut.

La coloration par fonction nous montre qu’ayant votre stars_change (changement moyen dans le classement des étoiles au fil du temps), l’augmentation est un bon indicateur pour rester ouvert. Pour review_count (le nombre de commentaires) ne pas avoir beaucoup peut vous nuire, mais avoir un haut reiew_count peut également signifier un grand nombre de critiques négatives. Pour la troisième caractéristique la plus importante utile (nombre total de votes utiles), cela semble être un indicateur positif du succès.

Le graphique nous permet également d'identifier les valeurs aberrantes car les points qui se chevauchent sont agités dans la direction de l'axe des ordonnées. Nous avons donc une idée de la distribution des valeurs de Shapley par entité. Pour un sous-ensemble particulier d’entreprises, un nombre élevé de utile peut effectivement être un indicateur de fermeture bientôt. Par exemple, il n'est pas rare que quelqu'un commente «Restez à l'écart du poulet, semblait pas assez cuit”.

Les diagrammes de dépendance SHAP constituent une visualisation supplémentaire pour montrer l'effet d'une seule entité sur l'ensemble du jeu de données. Contrairement aux graphiques de dépendance partielle, SHAP prend en compte les effets d'interaction présents dans les entités et n'est défini que dans les régions de l'espace d'entrée pris en charge par les données.

L'intrigue ci-dessous s'applique à review_density (nombre normalisé d’examens des entreprises par rapport aux autres dans un rayon de 2 km).

Dans le graphique ci-dessus, la dispersion verticale est dictée par les effets d'interaction et une autre caractéristique, ici RestaurantsGoodForGroups , est choisi pour la coloration afin de mettre en évidence les interactions possibles. Nous pouvons voir ici qu’avoir un nombre plus élevé d’examens par rapport à d’autres entreprises est un bon indicateur de succès. En outre, être bon pour les groupes a tendance à être positivement corrélé avec review_density.

La matrice de corrélation ci-dessous se rattache au graphique d'en haut. On peut remarquer une corrélation positive entre review_density et RestaurantsGoodForGroups.

Savoir si une entreprise va fermer ses portes ou rester ouverte est une étude à entreprendre par les entrepreneurs avant d’investir. Grâce à l’apprentissage automatique, nous sommes en mesure d’identifier les caractéristiques pouvant prédire la question initiale de cet article. Nous avons également été en mesure de fournir des interprétations de modèles par utilisateur.

Bien que l’on ne puisse obtenir une réponse globale au problème, cette solution offre néanmoins une voie à suivre. Les entreprises peuvent utiliser les interprétations de modèle pour optimiser leur succès et connaître les mesures à améliorer.

Dans l’avenir, nous pourrons tirer parti des informations textuelles contenues dans le review.json fichier. Un exemple d’exercice de PNL consisterait à extraire des sentiments ou un groupe de mots en fonction du temps ou du lieu qui indiquent les performances de l’entreprise.

Le projet a été rendu possible grâce àharpestminds.com et Aditya Subramanian. Pour une vue détaillée du processus avec le code correspondant, allez dans le référentiel GitHub:

https://github.com/NadimKawwa/PredictBusinessSuccess

Afficher plus

SupportIvy

SupportIvy.com : Un lieu pour partager le savoir et mieux comprendre le monde. Meilleure plate-forme de support gratuit pour vous, Documentation &Tutoriels par les experts.

Articles similaires

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Bouton retour en haut de la page
Fermer