Ma petite expérience : ajoute un maximum de features. L'algo d'apprentissage se débrouillera tout seul pour donner de l'importance où non à la feature. Si ça commence à ramer, il existe plusieurs méthodes pour enlever les features inutiles (ou qui donne peu d'information) (va voir la doc de scikit :).
Sois imaginatif pour les features. Tu peux partir sur des features que tu penses rentrer en compte dans la qualité d'un Troll. Mes idées, à la volée : % du nombre de retours à la ligne par rapport au nombre de mots (aération du texte), nombre d'images, le jour de la semaine de la publication...
Je suis convaincu que tu pourrais obtenir une assez bonne qualité de classification avec uniquement les métadonnées.
SGDClassifier est basé sur un classificateur linéaire et un algorithme du gradient stochastique (abréviation SGD). Je vous avoue ne pas encore maîtriser ces subtilités.
Tu trouveras de super explications un peu partout sur le net, voici la mienne en quelques lignes.
Comme dans tout algo de Machine Learning, tu part d'un modèle construit à partir des features. Ce modèle est composé de plein de paramètres. Tu utilises ensuite un algorithme d'optimisation pour trouver les paramètres qui colle le mieux aux observations.
Dans les SVM, le modèle est super simple. Pour chaque feature "A", tu lui attribues un paramètres "a". Ensuite tu les combines linéairement:
valeur finale = a*A + b*B + c*C + d*D...
Lorsque tu fais de la classification, la valeur finale te donne un pourcentage : la confiance en l'appartenance à une catégorie donnée. Si tu fais de la régression la valeur finale est la valeur que tu chercheras à prédire (le score du journal pour nous).
En phase d'apprentissage, l'algo d'optimisation va chercher les valeurs des a,b,c,d... qui vont faire en sorte que les valeurs finales prédites soit la plus proche des valeurs finales observées.
Une fois l'apprentissage fini, tu connais les a,b,c,d... Pour prédire une valeur il te suffit d’effectuer l'opération et de récupérer le résultat.
Pour l'optimisation, on utilise une descente de gradient stochastique. Nous avons vu juste avant que l'algo d'optimisation cherche les meilleures valeurs des a,b,c,d... par rapport aux donnés que l'on connaît. Cet algo va donc chercher à minimiser l'erreur de prédiction commise. Elle va donc cherche à diminuer ("descente") l'erreur de prédiction, en faisant varier les paramètres. Ces paramètres, on ne le fait pas changer au hasard, mais en se rapprochant doucement ("gradient") des points les plus bas, en faisant des sauts de temps en temps ("stochastique").
C'est très souvent ce genre d'algo d'optimisation utilisé, car ils fonctionnent super bien si le modèle à les bonnes propriétés mathématiques. Si tu n'as pas ces propriétés, il faut bourriner avec des variantes de recuit simulés (algo génétique, Monte Carlo...).
# Prédictions
Posté par davandg (site web personnel, Mastodon) . En réponse à la dépêche Prédire la note d’un journal sur LinuxFr.org. Évalué à 10.
Je ne suis pas un pro, mais voici mes 2c.
Ma petite expérience : ajoute un maximum de features. L'algo d'apprentissage se débrouillera tout seul pour donner de l'importance où non à la feature. Si ça commence à ramer, il existe plusieurs méthodes pour enlever les features inutiles (ou qui donne peu d'information) (va voir la doc de scikit :).
Sois imaginatif pour les features. Tu peux partir sur des features que tu penses rentrer en compte dans la qualité d'un Troll. Mes idées, à la volée : % du nombre de retours à la ligne par rapport au nombre de mots (aération du texte), nombre d'images, le jour de la semaine de la publication...
Je suis convaincu que tu pourrais obtenir une assez bonne qualité de classification avec uniquement les métadonnées.
Tu trouveras de super explications un peu partout sur le net, voici la mienne en quelques lignes.
Comme dans tout algo de Machine Learning, tu part d'un modèle construit à partir des features. Ce modèle est composé de plein de paramètres. Tu utilises ensuite un algorithme d'optimisation pour trouver les paramètres qui colle le mieux aux observations.
Dans les SVM, le modèle est super simple. Pour chaque feature "A", tu lui attribues un paramètres "a". Ensuite tu les combines linéairement:
valeur finale = a*A + b*B + c*C + d*D...
Lorsque tu fais de la classification, la valeur finale te donne un pourcentage : la confiance en l'appartenance à une catégorie donnée. Si tu fais de la régression la valeur finale est la valeur que tu chercheras à prédire (le score du journal pour nous).
En phase d'apprentissage, l'algo d'optimisation va chercher les valeurs des a,b,c,d... qui vont faire en sorte que les valeurs finales prédites soit la plus proche des valeurs finales observées.
Une fois l'apprentissage fini, tu connais les a,b,c,d... Pour prédire une valeur il te suffit d’effectuer l'opération et de récupérer le résultat.
Pour l'optimisation, on utilise une descente de gradient stochastique. Nous avons vu juste avant que l'algo d'optimisation cherche les meilleures valeurs des a,b,c,d... par rapport aux donnés que l'on connaît. Cet algo va donc chercher à minimiser l'erreur de prédiction commise. Elle va donc cherche à diminuer ("descente") l'erreur de prédiction, en faisant varier les paramètres. Ces paramètres, on ne le fait pas changer au hasard, mais en se rapprochant doucement ("gradient") des points les plus bas, en faisant des sauts de temps en temps ("stochastique").
C'est très souvent ce genre d'algo d'optimisation utilisé, car ils fonctionnent super bien si le modèle à les bonnes propriétés mathématiques. Si tu n'as pas ces propriétés, il faut bourriner avec des variantes de recuit simulés (algo génétique, Monte Carlo...).