Open didier-devel opened 4 years ago
Chers, J'ai utilisé le document de Xavier. Très intéressant. Pour des besoins de TP (enseignements), j'ai ajouté une méthode k-folds avec MNB et j'ai atteint un peut mieux que 85%. Je vais utiliser le fichier de didier (.py) et ferais un retour. Merci encore pour c ejob.
Alex
AU fait : le qq lignes de code
import numpy as np mnb2 = MultinomialNB() Scores=[]
for i in range(Nb_folds) : res=next(k_fold.split(feattrain2), None) xtrain = feattrain2[res[0]] xtest = feattrain2[res[1]] ytrain = y_all.iloc[res[0]] ytest = y_all.iloc[res[1]] model__ = mnb2.fit(xtrain, ytrain) predictions_ = mnb2.predict(xtest) Scores.append(model__.score(xtest, ytest)) print('TRACE : Scores de chaque itération : ', Scores) print('La moyenn : ', np.mean(Scores))
Bien à vous
Bonjour. J'ai utilisé votre Notebook http://www.xavierdupre.fr/app/papierstat/helpsphinx/notebooks/text_sentiment_wordvec.html comme point d'entrée pour découvrir les possibilités de traitement de texte en machine learning. Je l'ai trouvé très instructif et pédagogique et rempli de pointeurs très intéressants. Merci pour ça. Voici en retour quelques remarques, au cas ou vous les trouvez utiles. Je n'ai pas trouvé d'autre moyen pour vous les communiquer, alors j'utilise une issue github pour cela.
Les remarques couvrent:
Choix du classificateur: Le randomforest ne semble pas le meilleur classificateur possible. Intuitivement, il y a un grand risque d'overfitting dans une espace à plusieurs centaines de dimensions, et donc quasiment vide d'échantillons. Des classificateurs linéaires semblent mieux marcher, notamment le Multinomial Naive Bayes (utilisé pour la détection de spam je crois), qui marche très bien sur les sacs de mots, et dans tous les cas la régression logistique. LinearSVM est assez efficace aussi sur ce modèle.
Ces classificateurs améliorent sensiblement les performance des modèles (voir table ci-dessous et exemple de code Python 2.7 attaché), sans toutefois changer les conclusions de votre notebook, à savoir que les n-grammes n'améliorent pas significativement les performances, TSVD, appris avec ce petit corpus, détériore les performances, et word2vect améliore légèrement les performances.
Dérivation de features utilisant word2vect avec classificateur classiques.
Démontrer l'intérêt de word2vect:
Voici pour information un résumé (produit par le code python 2.7 / tensorflow 2 en attachement) des différentes expériences. Les résultat varient de quelques % d'une exécution à l'autre, en fonction su split train/test et autres paramètres aléatoires des modèles, mais la hiérarchie suivante est respectée la plupart du temps:
RandomForest < autres classificateurs Word2Vect legerement > sac de mots pour classificateurs classiques Word2Vect + moyenne legerement > Word2Vect + somme Word2Vect + réseaux de neurone > tout le reste.
0 Sac de mots simple RandomForest 0.79 1 Sac de mots simple Logit 0.83 2 Sac de mots simple Multinomial Naive Bayes 0.84 3 Sac de mots simple Linear SVC 0.85 4 Sac de N-grammes (1,2) RandomForest 0.77 5 Sac de N-grammes (1,2) Logit 0.82 6 Sac de N-grammes (1,2) Multinomial Naive Bayes 0.85 7 Sac de N-grammes (1,2) Linear SVC 0.84 8 Truncated SVD (300 dim) RandomForest 0.71 9 Truncated SVD (300 dim) Logit 0.79 10 Truncated SVD (300 dim) Linear SVC 0.80 11 Vecteurs word2vect (somme par phrase) RandomForest 0.79 12 Vecteurs word2vect (somme par phrase) Logit 0.82 13 Vecteurs word2vect (somme par phrase) Linear SVC 0.70 14 Vecteurs word2vect (moyenne par phrase) RandomForest 0.79 15 Vecteurs word2vect (moyenne par phrase) Logit 0.86 16 Vecteurs word2vect (moyenne par phrase) Linear SVC 0.84 17 Token sequence RN Embedding + GRU 0.83 18 Vector sequence from Word2Vect GRU 0.90
summary.py.gz