Bonjour,
j'ai des données dont les attributs sont binaires. Puis-je appliquer des techniques de classification classiques telles que
KNN, SVM etc? (j'utilise les fonctions de sklearn)
merci
Bonjour,
j'ai des données dont les attributs sont binaires. Puis-je appliquer des techniques de classification classiques telles que
KNN, SVM etc? (j'utilise les fonctions de sklearn)
merci
Bonjour,
Il me semble que le cadre générale pour appliquer sur un jeu de données des algorithmes comme SVM ou régression logistique par exemple, il faut que les données soient binaires. Dans le cas de données non binaires, il est nécessaire de s'y ramener en transformant les données qualitatives en autant de données binaires que de facteurs.
Au plaisir de te lire.
Non, pas besoin de transformer en discret pour du kNN (il suffit d'utiliser une distance euclidienne ou quelque chose de classique du genre) ou en SVM (c'est une régression linéaire un peu améliorée, en gros). Ces mêmes algos fonctionnent aussi bien en discret qu'en continu, ils ne tiendront juste pas compte de la spécificité des données discrètes. Pour ça, regarde plutôt des arbres de décision ou des forêts d'arbres, mais tu n'auras pas forcément de meilleurs résultats.
Merci pour vos réponses.
Précisément j'ai fait des tests avec les algorihtmes tels que:
KNeighborsClassifier
GaussianNB
svm.SVC
DecisionTreeClassifier
disponibles sous skleran et ça fonctionne bien mais comme vous me l'avez dit ça ne tient pas nécessairement compte de la spécifié des données et c'est ce point là qui me dérange. Est-ce que je peux considérer donc que e résultat est fiable?
merci![]()
oui c'est ce que j'ai fait. Je calcule le score de classification avec une validation croisée mais malgré çà je doute de la fiabilité du résultat tant que l'algo ne prends pas en considération la nature de mes données!!!
Pourtant, cette erreur te donne tout ce que tu dois savoir pour dire si un algo fonctionne bien ou pas.
Il y a 2 questions qu'il ne faut pas confondre :
- Est-ce que'un algorithme marche dans tel ou tel environnement ?
- Est-ce que avec tel jeu de données, mon algorithme permet de donner de bons résultats ?
Si un algorithme sait traiter des textes, ou des variables numériques continues, alors a fortiori, il sait traiter des données binaires. Il peut y avoir des exceptions, mais normalement, un algorithme qui marche avec des données compliquées marche aussi avec des données simples.
Mais prenons 2 exemples de problèmes de classification, avec des données binaires :
exemple 1 :
Pour chaque individu, je lui demande :
- Etes-vous né en janvier ?
- Etes-vous né en février ?
- Etc
- Etes-vous né en décembre ?
Et à partir de là, j'essaie de déduire le signe du zodiaque de l'individu. Globalement, avec un algorithme X, je vais obtenir des résultats pas ridicules.
Exemple 2
Pour chaque individu, je lui demande :
- Etes-vous Homme u femme
- Avez-vous le Bac
- Vivez-vous en province ?
- Etes-vous marié ?
- etc , une dizaine de questions du même genre.
Et, à partir de là, même exercice, j'essaie de déduire le signe du zodiaque de chaque individu.
Le même algorithme, qui marchait biens dans l'exemple 1 ne marche plus dans l'exemple 2. Ce n'est pas l'algorithme qui est en cause, ce sont les données.
Dans ton cas, il faut pousser l'analyse plus loin, mais a priori, si tu n'obtiens pas des résultats satisfaisants, c'est peut-être à cause de l'algo, mais c'est plus probablement à cause des données.
On t'a dit qu'il suffit de calculer une distance (euclidienne par exemple) pour utiliser knn ou autre... Bon en fait c'est quand même beaucoup plus compliqué que ça.
Tu as des données vectorielles, binaires. Ok. Et tu as une décision à prendre par rapport à la classe de chacun des objets que tu considères. Le truc c'est que si tu prends une distance euclidienne "toute bête", tu considères que chaque composante de ton vecteur a la même importance.
Par exemple, imaginons que tes données sont des gens et que ta décision est de savoir s'ils sont malades ou non et qu'elle maladie ils ont. Ensuite dans ton vecteur disons qu'il ya une composante qui indique qu'elle est la couleur de leur voiture. Dans le cas d'une distance euclidienne toute bête, la couleur de leur voiture aura autant d'importance que l'état de leur foie. Pour prédire les maladies c'est un peu con.
Bref. Les algos marchent bien. Mais il faut leur donner de bonnes données. Plutôt qu'une distance euclidienne, une distance de mahalanobis est plus intéressante. Ça implique que tu douces commencer par trouver une transformation de tes données qui permette de faire le boulot correctement. Et ça c'est un sujet de recherche en soi.
Ceci dit tu as beaucoup de littérature sur le sujet. Regarde tout ce qui est classification et clustering semi supervisé.
Merci bien pour vos commentaires pertinents.
Vous me confirmez mes doutes: un algo tourne à 90% des cas et donne un résultat et la conclusion si le résultat n'est pas bon, ce n'est pas forcément que l'algo n'est pas fiable, c'est probablement les données ne sont pas adéquates !!!
Merci encore
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager