Comment apprendre la détection des spams?


8

Je veux savoir comment fonctionne un détecteur de courrier indésirable. Je n'essaie pas de créer un produit commercial, ce sera un exercice d'apprentissage sérieux pour moi. Par conséquent, je recherche des ressources, telles que des projets existants, du code source, des articles, des articles, etc. que je peux suivre. Je veux apprendre par des exemples, je ne pense pas être assez bon pour le faire à partir de zéro. Idéalement, j'aimerais me salir la main en bayésien.

Y a-t-il quelque chose comme ça? Le langage de programmation n'est pas un problème pour moi.

Réponses:


6

Vérifiez d' abord ce soin. Vous trouverez un jeu de données simple et quelques articles à examiner.

MAIS comme vous voulez démarrer un projet d'apprentissage simple, je recommande de ne pas passer par des articles (qui ne sont évidemment pas basiques ) mais essayez de construire votre propre apprenant bayésien qui n'est pas si difficile.

Je suggère personnellement les diapositives de la conférence d' Andrew Moore sur les modèles graphiques probabilistes qui sont disponibles gratuitement et vous pouvez en apprendre simplement et étape par étape.

Si vous avez besoin d'aide plus détaillée, commentez cette réponse et je serai heureux de vous aider :)

Profitez de l'apprentissage baysian!



2

Il y a une introduction de base à la méthode bayésienne pour la détection du spam dans le livre "Doing Data Science - Straight Talk from the Frontline" de Cathy O'Neil, Rachel Schutt.

Le chapitre est bon, car il explique pourquoi d'autres modèles courants de science des données ne fonctionnent pas pour les classificateurs de spam. Tout le livre utilise R tout au long, donc ne le ramassez que si vous êtes intéressé à travailler avec R.

Il utilise l'ensemble de messagerie Enron comme données de formation, car il contient déjà des e-mails en spam / pas spam.


2

Il s'agit en fait d'un problème vraiment approfondi sur lequel de nombreuses personnes et entreprises ont travaillé. Voici quelques notions de base:

Premièrement, nous devons bien représenter les données. Cela implique en quelque sorte de représenter chaque document comme un vecteur dansd-espace dimensionnel. Idéalement, dans cet espace, nous voulons que les échantillons qui ont le même label soient proches à distance euclidienne, et que les échantillons qui sont différents labels soient loin à distance euclidienne. Cette étape peut être très difficile, mais une représentation éprouvée est appelée terme fréquence-fréquence inverse du document (tf-idf). Ici, chaque dimension dans l'espace représente un mot particulier et la valeur dans cette dimension pour un échantillon particulier représente essentiellement le nombre normalisé de fois où ce mot apparaît dans le document. Vous pouvez en savoir plus ici . Il y a une assez bonne implémentation scikit-learn de cette représentation si vous voulez l'essayer.

Maintenant, les données sont dans un espace utile, mais dans un espace de très grande dimension. Je recommanderais de réduire cette dimensionnalité en quelque sorte, mais c'est tout un sujet pour un autre fil.

Enfin, vous pouvez former un algorithme pour classer les échantillons (c'est à cela que servent les autres réponses). Il existe de nombreux choix: les réseaux de neurones, adaboost, SVM, Naive Bayes et les modèles de classification graphique vous donneront tous de bons résultats. Beaucoup d'entre eux ont également des implémentations dans scikit-learn.

Mais les meilleurs algorithmes exploitent le fait que ce problème est en fait un transfert d'apprentissage. Autrement dit, les distributions dont proviennent les données de formation et de test peuvent ne pas être exactement les mêmes - car le genre de choses qu'une personne pense être du spam peut être différent du genre de choses qu'une autre personne pense être du spam.


Pouvez-vous développer votre dernier paragraphe ("transfert d'apprentissage")? Pourriez-vous fournir des liens ou des noms?
Valentas

1
Dans l'apprentissage automatique conventionnel, nous avons des données qui proviennent d'une distribution de probabilité particulière. Ensuite, nous apprenons une sorte de modèle sur ces données, en espérant que le modèle généralisera à des exemples non vus pendant la formation. Cela ne fonctionnera que si ces échantillons invisibles proviennent de la même distribution de probabilité, nous supposons donc que c'est le cas. Dans l'apprentissage par transfert, nous ne faisons pas cette hypothèse. Voici un document d'enquête sur le terrain.
Jordan A

Et comment trouvez-vous la dvariable? Est-ce un nombre fixe choisi par un scientifique?
Martin Vseticka

Une approche commune consiste à d mots, et chacun des dles éléments du vecteur représentent la fréquence à laquelle ce mot apparaît dans le texte. Il n'y a que tant de mots uniques utilisés dans tous les échantillons que vous envisagez, il y a donc une limite supérieure définie surd. Les chercheurs suppriment généralement également certains types de mots qui, selon eux, ne seront pas utiles pour la classification, comme «le», «et» «il», etc.
Jordan A
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.