Outil de validation d’idées de projets de financement participatif utilisant le traitement du langage naturel

Dans l’ensemble de données, binary_state (soit «réussi», soit «échoué») était le label de prédiction cible, tandis que les autres variables décrivaient différentes caractéristiques des projets Kickstarter, qui sont considérées comme des candidats potentiels des fonctionnalités de modélisation. Cependant, la seule information textuelle dans l’ensemble de données était «texte de présentation» (une brève description de 135 caractères au maximum du projet), ce qui pourrait ne pas être suffisant pour la modélisation. Par conséquent, nous avons gratté sur le Web l’histoire complète du projet correspondant à partir du site Web Kickstarter en utilisant le sélénium package et les a fusionnés dans l’ensemble de données.
- Création et sélection de fonctionnalités
- Construction et interprétation de modèles
- Développement d’un algorithme de score de similarité
- Implémentation du modèle et construction de l’interface utilisateur
Création et sélection de fonctionnalités
Nous nous sommes principalement concentrés sur deux types de fonctionnalités pour modéliser les résultats du projet: les fonctionnalités personnalisées et les fonctionnalités d’intégration de mots. Pour les fonctionnalités personnalisées, elles peuvent être classées en trois catégories comme suit:
Ces trois catégories de fonctionnalités personnalisées visent à capturer les différents aspects d’un projet Kickstarter donné. Les informations générales couvraient les informations clés de base du projet. La richesse lexicale reflète la richesse du vocabulaire d’une description de projet donnée (combinant à la fois texte de présentation et récit). Il pourrait être mesuré par la diversité lexicale en utilisant le type token ratio (TTR) dans Diversité lexicale package ou entropie lexicale utilisant la fonction auto-définie suivante:
La lisibilité lexicale reflétait la facilité avec laquelle les textes pouvaient être compris par les lecteurs, et nous avons utilisé le TextStat package pour calculer quelques statistiques afin de déterminer la lisibilité, la complexité et le niveau de qualité d’un corpus particulier.
Pour mieux comprendre ces fonctionnalités personnalisées et les textes communs dans les projets réussis et échoués, nous avons d’abord effectué une analyse exploratoire des données (EDA) pour générer des informations avant de construire les modèles:
Tout d’abord, nous avons comparé les mots courants dans les projets réussis et échoués en utilisant des tracés de nuage de mots. Nous avons observé que les sujets liés au «jeu» étaient très courants pour les projets réussis. En outre, les projets retenus avaient généralement un «objectif tendu», qui était un objectif supplémentaire fixé pour la campagne au cas où le montant du financement dépasserait l’objectif de financement initial. Cela suggérait qu’un plan à long terme clair était important pour la réussite du projet.
La figure ci-dessus montre le taux de réussite et d’échec pour chaque catégorie et est triée par taux de réussite. Le jeu et la technologie étaient des catégories populaires, cependant, les projets de jeux étaient beaucoup plus faciles à obtenir que les projets technologiques.
La diversité lexicale, mesurant la variété des mots utilisés dans les descriptions de projets pour refléter la richesse lexicale, a ensuite été explorée. Nous avons observé que les catégories de musique et de théâtre utilisaient le plus large éventail de vocabulaire, et ce résultat était conforme à notre attente qu’il y avait une variété de mots pour expliquer et décrire les caractéristiques artistiques de ces deux catégories.
La figure ci-dessus montre la lisibilité lexicale de chaque catégorie en utilisant le score de facilité de lecture de Flesch. Plus le score est élevé, plus le texte est facile à comprendre. Ici, nous avons observé que les catégories de bandes dessinées et d’art étaient plus faciles à lire, tandis que les catégories de danse et de technologie étaient les plus difficiles à lire.
En plus des fonctionnalités personnalisées, les fonctionnalités d’intégration de mots étaient également importantes pour représenter les informations textuelles en capturant le contexte des mots ainsi que les relations entre les mots. Dans ce projet, nous avons utilisé deux méthodes d’intégration de mots différentes: l’analyse sémantique latente (LSA) et Doc2Vec.
LSA tokenise les mots dans un document avec Vectorisation Tf-Idf et comprime ces entités vectorielles dans des plongements avec une décomposition en valeurs singulières (SVD). Dans la pratique, l’un des défis à relever était de savoir comment déterminer le nombre optimal de composants dans l’étape de réduction des dimensions. Pour relever ce défi, nous avons examiné différents nombres de composants et examiné le taux de variation de la variance expliquée (c’est-à-dire le gain marginal au nombre donné de composants). Ensuite, un tracé du coude a été utilisé pour déterminer le nombre optimal de composants, qui a été observé à 500:
Doc2Vec, d’autre part, est une approche basée sur un réseau neuronal pour l’apprentissage des plongées à partir d’un document texte donné. Il utilise deux modèles, y compris la version à mémoire distribuée du paragraphe Vector (PV-DM), qui prédit le mot suivant à l’aide des mots et de l’ID du document, et la version Distributed Bag of Words du paragraphe Vector (PV-DBOW), qui prédit les mots environnants à l’aide de l’ID du document. Dans ce projet, nous avons utilisé toutes les histoires de projet dans l’ensemble de données pour former Doc2Vec modèle, qui a généré 100 Doc2Vec fonctions d’intégration.
Ces fonctionnalités d’intégration de mots étaient un ajout important aux fonctionnalités personnalisées dans la construction du modèle. Cependant, ces fonctionnalités ont une interprétabilité plus faible que les fonctionnalités personnalisées de la modélisation. Par conséquent, nous avons décidé de construire d’abord le modèle et d’interpréter les résultats de la modélisation en utilisant uniquement les fonctionnalités personnalisées, puis d’ajouter les fonctionnalités d’intégration pour vérifier l’amélioration des performances du modèle. En outre, ces fonctionnalités d’intégration de mots seraient également utilisées dans le calcul du score de similitude, qui a été utilisé pour identifier des projets similaires dans l’ensemble de données en fonction de la saisie par les utilisateurs de leurs idées originales.
Construction et interprétation de modèles
Pour garantir l’interprétabilité du modèle, nous avons d’abord construit le modèle en utilisant uniquement les fonctionnalités personnalisées. Dans l’étape de prétraitement des données, nous avons converti les informations sur le pays / l’emplacement en variable binaire Top dix, où Top dix = 1 fait référence aux 10 premiers pays / emplacements avec la plupart des projets Kickstarter (sinon, Top dix = 0). Ensuite, les catégories de projets ont été transformées en variables fictives binaires avec des niveaux (k-1). Ensuite, l’étiquette binary_state a été codé en 1 pour «réussi» et 0 pour «échoué». Enfin, l’ensemble des données a été divisé en ensembles de données de formation (67%) et de test (33%). Le jeu de données final après le prétraitement était présenté comme suit:
Nous avons construit quelques modèles différents, dont régression logistique, forêt aléatoire, GBM léger, et XGBoosting, avec des hyper-paramètres réglés via Grid Search. Nous avons constaté que le XGBoosting Le modèle avait la meilleure performance avec le score f1 de 0,83 et le score de rappel de 0,94. Notamment, le score de rappel dans ce contexte était très important dans la mesure où un score de rappel plus élevé (moins de cas faussement négatifs) indiquait une chance moindre de manquer une occasion. L’accordé XGBoosting les paramètres et les résultats du modèle ont été présentés comme suit:
Pour interpréter le XGBoosting modèle, nous avons utilisé le SHAP (SHapley Additive exPlanations) package, qui est une approche théorique du jeu pour expliquer la sortie des modèles d’apprentissage automatique. En particulier, nous voulions comprendre comment différentes caractéristiques et valeurs ont eu un impact sur les résultats globaux de prédiction du modèle. Ainsi, le graphique récapitulatif a été généré en SHAP et les 20 principales caractéristiques importantes ont été étudiées:
Pour mieux comprendre comment les textes de la description du projet ont un impact sur le taux de réussite, nous avons également inclus Tf-Idf vecteurs avec les caractéristiques personnalisées pour former un modèle séparé et étudié l’importance des caractéristiques. À partir des résultats, nous avons observé que l ‘«objectif tendu» (c’est-à-dire le plan futur) était très important pour la réussite du projet.
À partir des résultats ci-dessus, nous pourrions résumer plusieurs pratiques générales pour un projet Kickstarter réussi:
- Inférieur montant de financement cible
- Plus court financement du temps de collecte
- Plus long histoire / description du produit
- Richer vocabulaire écrit
- Moins terminologie / jargon professionnel
- Clair plan d’avenir (c’est à dire. objectif extensible)
En outre, certaines tendances spécifiques à chaque catégorie ont également été identifiées:
- Technologie, mode, alimentation, artisanat, et journalisme les projets sont plus difficiles à obtenir entièrement financés sur Kickstarter
- Design, jeux, musique, bandes dessinées, et édition les projets sont plus faciles à obtenir entièrement financés sur Kickstarter
Après avoir construit et interprété le modèle avec des fonctionnalités personnalisées, nous avons ensuite inclus les fonctionnalités d’intégration de mots de LSA ou Doc2Vec ainsi que les fonctionnalités personnalisées dans la formation du modèle et vérifié les performances du modèle. Les résultats ont été résumés dans le tableau suivant:
À partir des résultats ci-dessus, nous avons observé que le modèle avec une combinaison de fonctionnalités personnalisées et Doc2Vec avait les meilleures performances. Ce modèle final a ensuite été exporté à l’aide de cornichons pour une implémentation ultérieure dans le validateur d’idées.
Développement d’un algorithme de score de similarité
Une autre caractéristique importante de notre validateur d’idées est d’identifier les projets Kickstarter les plus similaires dans l’ensemble de données en fonction de la saisie par les utilisateurs de leurs idées originales. Par conséquent, nous devons développer une approche pour calculer le score de similitude entre l’idée originale et les projets existants, puis signaler les projets existants avec le score de similitude le plus élevé.
Adapté de Méthode de recommandation de parfum de Longo, le score de similitude assemblé a été calculé en prenant la moyenne de la similitude du cosinus LSA et de la similitude du cosinus Doc2Vec. Le flux de travail a été résumé comme suit:
Implémentation du modèle et construction de l’interface utilisateur
Dans la dernière étape, nous avons intégré toutes les unités fonctionnelles ci-dessus dans l’outil de validation d’idée de financement participatif et construit une interface utilisateur qui a permis aux utilisateurs de soumettre la description du projet et les informations connexes.
Dans le scénario d’utilisation, une fois que l’utilisateur a soumis l’idée d’origine, l’outil convertit automatiquement l’entrée au format requis pour la modélisation et génère des résultats de prédiction. De plus, les scores de similitude entre l’idée originale de l’utilisateur et tous les projets existants dans l’ensemble de données seront calculés. Les 3 projets les plus similaires dans la même catégorie que l’idée originale de l’utilisateur seront imprimés, ainsi que la comparaison directe en termes de montant de financement, de durée, de longueur de description, de diversité lexicale et de lisibilité. Ce flux de travail a été résumé comme suit:
Par exemple, nous pourrions tester notre outil en utilisant The Character Coins: RPG Token Sets par Dice Dungeons sur le site Web de Kickstarter. Ce projet a été financé avec succès et ne faisait pas partie de l’ensemble de données que nous avons utilisé pour la formation et les tests de modèles. Lorsque les informations associées ont été ajoutées au formulaire, notre modèle a correctement prédit le succès du projet et a également identifié d’autres projets Kickstarter liés au jeu de pièces de monnaie dans notre ensemble de données:
Principales conclusions
Parallèlement au développement de l’outil, nous avons identifié plusieurs idées pour lancer un projet Kickstarter réussi:
- Montant du financement cible plus faible et temps de collecte du financement plus court
- Description de l’histoire / du produit plus longue avec un vocabulaire plus riche, mais moins de jargon
- Plan futur clair (c’est à dire. objectif extensible)
- Les projets de technologie, de mode, d’alimentation, d’artisanat et de journalisme sont plus difficiles à obtenir entièrement financés
- Les projets de conception, de jeux, de musique, de bandes dessinées et d’édition sont plus faciles à obtenir entièrement financés
Travail futur
L’outil présenté ici était un prototype. À l’avenir, nous pourrions le modifier et l’améliorer sous deux aspects principaux:
- Améliorez les performances du modèle prédictif. Le modèle actuel a été construit à partir de 10 058 projets Kickstarter. Pour améliorer encore les performances du modèle, nous pourrions le former sur un ensemble de données plus important et inclure des informations liées à l’utilisateur, telles que l’historique de lancement du projet (bien que ces informations liées à l’utilisateur ne soient pas facilement accessibles)
- Modifiez la page de sortie des résultats. Actuellement, la page de sortie des résultats contient uniquement les résultats de prédiction et la comparaison avec les projets les plus similaires. À l’avenir, des fonctions de conseil pourraient être explorées pour fournir aux utilisateurs des conseils plus détaillés sur la façon d’améliorer leur idée de projet.
Tous les codes pour la formation du modèle et l’outil de validation d’idée sont disponibles sur ce site repo. Vous pouvez tester votre idée d’origine dans le bloc-notes run_model.ipynb.