2

Je viens de créer mon propre modèle Naive Bayes à partir de zéro et l'ai formé sur 776 documents. J'ai essayé de classer les documents, mais ils ont classé les documents erronés dans les trois documents d'essai. La catégorie qui aurait dû l'être avait la plus faible de toutes les probabilités par rapport aux autres catégories (c'est pour deux des trois documents de test).Combien de documents faut-il entraîner pour les bayes naïves?

Dois-je augmenter le nombre de documents de formation? Je ne pense pas que ce soit mon code parce que j'ai vérifié le calcul mais je ne sais pas, peut-être que la fonction compute_numerators est mal en quelque sorte ?? Pour la partie numérateur je les journaux en raison du problème underflow et a résumé les probabilités des termes et la probabilité de (number_of_documents_in_category/overall_number_of_documents) http://i.stack.imgur.com/GIwIp.png

super confus et découragé car cela m'a pris si longtemps et maintenant je me sens comme c'était pour rien parce qu'il n'a même pas classifié UN document correctement :(

@Bob Dillon, Salut, merci pour votre réponse complète.Ma plus grande question de ceci était ce que vous voulez dire par séparable. il y a une distinction claire des documents entre les classes? Je ne sais pas vraiment comment répondre à cela.Les données ont été classées par les humains donc la séparation est possible, mais peut-être ' s si proche d'autres types de catégories que ça devient flou? Peut-être que l'ordinateur ne reconnaît pas une différence dans les mots utilisés qui sont classés comme une chose par rapport à une autre catégorie? Je dois garder ces catégories, je ne peux pas réorganiser les catégories, elles doivent être telles quelles. Je ne sais pas comment prototyper en R, est-ce que je n'aurais pas encore besoin de saisir les données de texte et de les lancer? n'aurais-je pas encore besoin de créer une tokenisation, etc. Je vais regarder dans le gain d'information et SVM. Je vais probablement poster. Merci!

+0

Eh bien, que comparez-vous pour savoir que c'est faux? De plus, le nombre magique dans les statistiques est 30. Tant que vous avez plus de 30 observations, la taille de votre échantillon devrait être assez grande. – FirebladeDan

+0

Eh bien, le document de test est déjà classé, je veux juste voir si elle a été classée correctement. Et je compare le prédit avec le réel. Oui, j'ai 776 couvrant ainsi définitivement la base de 30, mais peut-être la classification de texte exige beaucoup plus ?? – hope288

+0

Alors ne vous inquiétez pas pour votre échantillon, vous êtes bon. Cela n'a toujours aucun sens quel moteur vous comparez. Est-ce que votre ensemble formé est différent de celui fait en R ou Matlab. Je ne comprends toujours pas comment tu sais que c'est faux. – FirebladeDan

Répondre

2

Je viens de créer mon propre modèle Naive Bayes à partir de zéro et formés sur 776 documents

Naive Bayes, aime son nom l'indique, est un algorithme naïf. C'est très mauvais par rapport aux méthodes modernes, comme les machines à vecteurs de support ou les réseaux de neurones (profonds). Vous devez garder cela à l'esprit lorsque vous l'utilisez: attendez-vous à de meilleurs résultats que de lancer une pièce de monnaie, mais pas de beaucoup.

essayé de classer les documents, mais il est classé les documents faux sur les trois documents de test

Seuls trois documents de test? C'est très peu, et ne vous dit rien. Si vous avez x documents au total, vous devez utiliser au moins 20% pour les tests. Pensez également à utiliser la validation croisée.

Dois-je augmenter le nombre de documents de formation?

Cela aidera, oui. Une règle d'or dans l'apprentissage automatique est que plus de données battra généralement un meilleur algorithme. Bien sûr, nous ne pouvons pas toujours obtenir plus de données, ou nous ne pouvons pas nous permettre la puissance de traitement pour utiliser plus de données, donc de meilleurs algorithmes sont importants.

Pour être en mesure de constater une amélioration, vous devrez également utiliser davantage de données de test. En conclusion: test sur plus de données. Si vous avez des documents 779, utilisez au moins 100 pour les tests ou faites cross validation.Si vous obtenez au-dessus de 50-60% précision, soyez heureux, c'est assez bon pour cette quantité de données et Naive Bayes.

+0

@lVlad, merci pour votre réponse. J'ai augmenté le test à environ 400 mais seulement 3 étaient corrects :(J'augmente le set d'entrainement à 6000 et je vais utiliser 1200 documents pour tester le jeu. Je regarde aussi SVM, je vais le mettre à jour bientôt. – hope288

2

Vous avez beaucoup de travail contre vous.

  1. réduction de dimensionnalité faible - arrêt filtrage de texte ne
  2. classification multi-classe
  3. classificateur faible
  4. données de formation Petits

Vous êtes en train de nous montrer le code que vous utilisez , mais si les données ne sont pas séparables, rien ne le triera. Êtes-vous sûr que les données peuvent être classées? Si oui, quelle performance espérez-vous?

Vous devriez essayer de prototyper votre système avant de passer à l'implémentation. Utiliser Octave, R ou MatLab est un bon point de départ. Assurez-vous que vos données sont séparables et que l'algorithme est efficace sur vos données. D'autres ont suggéré d'utiliser SVM et Neural Nets plutôt que la classification de Naive Bayes. C'est une bonne suggestion. Chacun prend un peu de peaufinage pour obtenir les meilleures performances. J'ai utilisé l'API Google Prediction comme premier contrôle des performances que je peux attendre d'un système, puis le remplacer par SVM ou un autre classificateur pour optimiser les performances et réduire les coûts/latence/etc. Il est bon d'avoir une ligne de base aussi rapidement et facilement que possible avant de plonger trop profondément. Si les données sont séparables, plus vous donnerez d'aide au système, meilleur sera le résultat. La réduction de fonctionnalité/dimensionnalité élimine le bruit et aide le classificateur à bien fonctionner. Il existe une analyse statistique que vous pouvez effectuer pour réduire l'ensemble de fonctionnalités. J'aime Gain d'information, mais il y en a d'autres.

J'ai trouvé this paper être un bon traitement théorique de la classification de texte, y compris la réduction de caractéristique.

J'ai réussi à utiliser le gain d'information pour la réduction des caractéristiques et trouvé this paper pour être un très bon guide pratique. En ce qui concerne la quantité de données d'entraînement, ce n'est pas si clair coupé. Plus est généralement meilleur, mais la qualité des données est également très importante. Si les données ne sont pas facilement séparables ou si la distribution de probabilité sous-jacente n'est pas similaire à vos données de test et sauvages, les performances seront médiocres, même avec davantage de données. En d'autres termes, la quantité de données d'entraînement est importante, mais la qualité compte au moins autant.

Bonne chance!