J'ai 2 jeux de données, un avec des instances positives de ce que je voudrais détecter et un avec des instances sans étiquette. Quelles méthodes puis-je utiliser?
Par exemple, supposons que nous voulons comprendre la détection des e-mails de spam sur la base de quelques caractéristiques structurées des e-mails. Nous avons un ensemble de données de 10000 e-mails de spam et un ensemble de données de 100000 e-mails pour lesquels nous ne savons pas s'il s'agit de spam ou non.
Comment pouvons-nous résoudre ce problème (sans étiqueter manuellement aucune des données non étiquetées)?
Que pouvons-nous faire si nous avons des informations supplémentaires sur la proportion de spam dans les données non étiquetées (c'est-à-dire si nous estimons qu'entre 20 et 40% des 100 000 e-mails non étiquetés sont du spam)?
la source
Réponses:
Ma suggestion serait d'essayer de construire une sorte de clustering sur vos données sans étiquette qui se rapproche quelque peu d'un ensemble de données étiqueté. La justification est plus ou moins la suivante:
J'espère que cela a du sens, si vous recherchez spécifiquement des algorithmes de clustering, certains que j'apprécie personnellement et qui pourraient être bons dans ce scénario sont FLAME et tsne . Alternativement, en regardant la spectaculaire bibliothèque gensim en python, vous obtiendrez un long chemin vers le clustering que vous recherchez.
J'espère que cela aide et fait sens, laissez un commentaire si vous avez des questions.
la source
Votre problème appartient au cadre de l' apprentissage PU (seulement des points positifs, beaucoup de non étiquetés).
Il est également proche des cadres les plus courants de l' apprentissage semi supervisé (peu de positifs et de négatifs, beaucoup de non étiquetés).
Il existe de nombreux documents d'enquête que vous pouvez consulter sur le terrain.
Une méthode classique dans le domaine, qui a également été testée sur le spam comme dans votre cas, est la co-formation En co-formation, vous construisez deux apprenants indépendants (par exemple, un basé sur le contenu du courrier et un basé sur le schéma d'envoi) et vous utilisez les résultats de l'un pour former l'autre et vice versa.
la source
Former 2 modèles génératifs, un pour chaque jeu de données (spam uniquement, spam plus jambon), qui vous donneront la probabilité qu'un point de données soit tiré de la même distribution de probabilité des données d'entraînement. Attribuez des e-mails en tant que spam ou jambon en fonction du modèle qui vous donne la plus forte probabilité que le document résulte des données de formation utilisées pour le former. Des exemples de modèles génératifs sont les RBM, les auto-encodeurs (dans ce cas, quel modèle a l'erreur de reconstruction la plus faible). Il existe également probablement des modèles génératifs bayésiens qui attribueront une probabilité à un point de données sur la base de certaines données d'entraînement.
La meilleure option serait cependant de prendre le temps de gérer un deuxième ensemble de données contenant uniquement du jambon. Cela vous donnera une précision de classification plus élevée. En supposant une proportion inférieure de spam dans les e-mails de jambon, cela ne devrait pas être trop difficile. Vous pouvez même utiliser Mechanical Turk si vous manquez de temps ou de ressources (ou stagiaires \ étudiants diplômés ou autre main-d'œuvre bon marché).
la source