Bonjour je travail sur les perceptrons multicouches sous R. Mes valeurs prédites sont trop grandes par rapport aux valeurs observées, j'utilise nnet(). Si quelqu'un a une idée
Bonjour je travail sur les perceptrons multicouches sous R. Mes valeurs prédites sont trop grandes par rapport aux valeurs observées, j'utilise nnet(). Si quelqu'un a une idée
Est ce que tu as déjà vérifié que ton PMC avait convergé correctement ? Comment sont les valeurs prédictives sur l'échantillon d'apprentissage ?
Consignes aux jeunes padawans : une image vaut 1000 mots !
- Dans ton message respecter tu dois : les règles de rédaction et du forum, prévisualiser, relire et corriger TOUTES les FAUTES (frappes, sms, d'aurteaugrafe, mettre les ACCENTS et les BALISES) => ECRIRE clairement et en Français tu DOIS.
- Le côté obscur je sens dans le MP => Tous tes MPs je détruirai et la réponse tu n'auras si en privé tu veux que je t'enseigne.(Lis donc ceci)
- ton poste tu dois marquer quand la bonne réponse tu as obtenu.
comment savoir si elles sont bien convergées. Voila ce que j'ai
BH adn aup ddn dmn dmx dup rrg rsd vav
1567 38.85714 139.1429 165.4286 87.28571 143.5714 121.4286 130.85714 41.42857 36.57143
446 45.85714 149.7143 166.5714 81.71429 139.2857 116.1429 104.00000 38.57143 37.85714
1192 45.85714 149.7143 166.5714 81.71429 139.2857 116.1429 104.00000 38.57143 37.85714
452 42.14286 151.1429 52.2857 79.14286 136.1429 128.0000 97.71429 30.00000 25.57143
984 45.00000 154.4286 172.0000 94.00000 150.5714 117.0000 125.71429 44.14286 45.28571
1195 43.42857 153.2857 159.5714 79.28571 139.4286 111.0000 129.28571 44.71429 47.28571
vmn vmx
1 4.000000 135.8571
2 5.571429 110.0000
3 5.571429 110.0000
4 5.142857 102.8571
5 7.000000 133.7143
6 9.142857 139.4286
je dois prédire BH et mes variables d'entrées sont "adn" jusqu'à "vmx"(11 variables) et le nombre total de mes données est n=263
le code que j'utilise est:
library(e1071)
tune.model=tune.nnet(BH~.,data=datappr,size=c(1:10),decay=c(1,2,3,4,5,6,7,8,9,10),maxit=700,linout=TRUE, skip=FALSE)
tune.model
nnet.BH=nnet(BH~.,data=datappr,size=10,decay=1.1,linout=TRUE,maxit=500)
fit.BH=predict(nnet.BH,data=datappr)
pred.BH=predict(nnet.BH,newdata=datatest)
j'ai pris le 2/3 de mes données pour l'apprentissage (datappr) et le 1/3 pour la validation (datatest)
Combien y a t-il de poids dans ton RdN ?
Vérifie la convergence de l'erreur. A chaque itération tu affiches l'erreur
Puis regarde la prédiction de ton RdN sur les données d'apprentissage.
Consignes aux jeunes padawans : une image vaut 1000 mots !
- Dans ton message respecter tu dois : les règles de rédaction et du forum, prévisualiser, relire et corriger TOUTES les FAUTES (frappes, sms, d'aurteaugrafe, mettre les ACCENTS et les BALISES) => ECRIRE clairement et en Français tu DOIS.
- Le côté obscur je sens dans le MP => Tous tes MPs je détruirai et la réponse tu n'auras si en privé tu veux que je t'enseigne.(Lis donc ceci)
- ton poste tu dois marquer quand la bonne réponse tu as obtenu.
j'ai obtenu le meilleur résultat avec le code suivant
nnet.BH=nnet(BH~.,data=datappr,size=7, decay=2.7, linout=TRUE, maxit=700, skip=FALSE)
le nombre de poids est 92
# weights: 92
initial value 434082398.305049
iter 10 value 102730984.905465
iter 20 value 88177113.166667
iter 30 value 79036493.459332
iter 40 value 65782813.864365
iter 50 value 49429014.486526
iter 60 value 48790958.393096
iter 70 value 46727838.984821
iter 80 value 46599966.575291
iter 90 value 46574367.708901
iter 100 value 46204357.680247
iter 110 value 46000104.917432
iter 120 value 45991553.541503
iter 130 value 45986089.241041
iter 140 value 45955230.122224
iter 150 value 44993893.854332
iter 160 value 44950894.119817
iter 170 value 44925477.017620
iter 180 value 44609298.124928
iter 190 value 44375671.550459
iter 200 value 43538582.346899
iter 210 value 43450005.147318
iter 220 value 41861691.496546
iter 230 value 41417209.217778
iter 240 value 40890616.766539
iter 250 value 40338418.313716
iter 260 value 40201814.617514
iter 270 value 40116678.534994
iter 280 value 39129036.880174
iter 290 value 38961019.741012
iter 300 value 38797477.103242
iter 310 value 38772485.612863
iter 320 value 38717675.044394
iter 330 value 38015539.677562
iter 340 value 37759470.528213
iter 350 value 37735124.556076
iter 360 value 37697295.296434
iter 370 value 37631903.065848
iter 380 value 37540608.792998
iter 390 value 37406635.021537
iter 400 value 37393364.111249
iter 410 value 37352390.514452
iter 420 value 37147246.147238
iter 430 value 37104504.140447
iter 440 value 37083512.591447
iter 450 value 37052473.373915
iter 460 value 36986988.101031
iter 470 value 36972010.615317
iter 480 value 36708912.984989
iter 490 value 36673578.067852
iter 500 value 36620574.218810
iter 510 value 36573757.685459
iter 520 value 36529068.774252
iter 530 value 36516367.109189
iter 540 value 36510651.859370
iter 550 value 36413166.998100
iter 560 value 36352188.122223
iter 570 value 36327005.934122
iter 580 value 36304138.264184
iter 590 value 36159534.333170
iter 600 value 36136591.361918
iter 610 value 36132486.478737
iter 620 value 36091131.234966
iter 630 value 35813171.229594
iter 640 value 35770382.196043
iter 650 value 35739529.577831
iter 660 value 35721226.813252
iter 670 value 35508253.122215
iter 680 value 35436809.326344
iter 690 value 35400937.119890
iter 700 value 35350841.118849
final value 35350841.118849
stopped after 700 iterations
l'erreur je l'ai calculé en faisant
erreur.rate=function(test.data,model){
pred=predict(model, newdata=test.data, type="raw")
mc=table(test.data$BH, pred)
erreur=1-sum(diag(mc))/sum(mc)
return(erreur)
}
#printing the error rate on the test set
print(erreur.rate(datatest,nnet.BH))
et j'obtient 0.97 pour l'apprentissage et 0.95 pour la validation
et quand je fais la régression entre valeurs prédites et observées, j'obtient R_carré=0.7 pour l'apprentissage et 0.6 pour la validation
Donc ton RdN converge, mais peut être pas de manière optimale. Peut être bloque tu dans un minimum local.
Je ne connais pas cette librairie, donc je ne sais pas à quoi ça correspond.
Ok.
Quelle est la taille de ton échantillon d'apprentissage ?
A quoi est ce que cela correspond ?
Consignes aux jeunes padawans : une image vaut 1000 mots !
- Dans ton message respecter tu dois : les règles de rédaction et du forum, prévisualiser, relire et corriger TOUTES les FAUTES (frappes, sms, d'aurteaugrafe, mettre les ACCENTS et les BALISES) => ECRIRE clairement et en Français tu DOIS.
- Le côté obscur je sens dans le MP => Tous tes MPs je détruirai et la réponse tu n'auras si en privé tu veux que je t'enseigne.(Lis donc ceci)
- ton poste tu dois marquer quand la bonne réponse tu as obtenu.
ma taille de mon échantillon d'apprentissage est 175 et celle du test ou de validation 88
Tu fais clairement du sur-apprentissage. Une des première règle avec un RdN c'est d'avoir au moins 3 ou 4 fois plus d'individus dans l'échantillon d'apprentissage que de poids.
Donc ton RdN apprend par coeur ton échantillon d'apprentissage et ne sait absolument pas quoi faire sur celui de test, ce qui expliquerait les valeurs trop grandes.
De plus, comment as tu déterminé quel individu appartient à quel échantillon ?
Consignes aux jeunes padawans : une image vaut 1000 mots !
- Dans ton message respecter tu dois : les règles de rédaction et du forum, prévisualiser, relire et corriger TOUTES les FAUTES (frappes, sms, d'aurteaugrafe, mettre les ACCENTS et les BALISES) => ECRIRE clairement et en Français tu DOIS.
- Le côté obscur je sens dans le MP => Tous tes MPs je détruirai et la réponse tu n'auras si en privé tu veux que je t'enseigne.(Lis donc ceci)
- ton poste tu dois marquer quand la bonne réponse tu as obtenu.
Pour le choix des individus dans les échantillon, j'ai utilisé un tirage aléatoire en prenant 2/3 des données pour l'apprentissage et le 1/3 pour le test.
Quel package de R connaissez-vous permettant de construire des RdN en gérant les poids ?
Je n'utilise pas R.
Mais à toi de décider le nombre de neurones dans ta couche cachée. Avec 175 individus cela veut dire que tu dois avoir autour de 35 poids. Comme tu as 11 entrées, je dirais donc 3 neurones dans la couche cachées, ce qui ferait un total de 36 poids (33 dans la couche cachée et un dans la couche de sortie). Tu aurais ainsi un peu moins de 5 individu par poids et c'est raisonnable. Tu peux essaye d'en mettre un quatrième, mais ça risque d'être dangereux... tu peux tester.
Maintenant, est ce que tu as testé tes entrées ?
Est ce qu'elles sont toutes pertinentes ?
Consignes aux jeunes padawans : une image vaut 1000 mots !
- Dans ton message respecter tu dois : les règles de rédaction et du forum, prévisualiser, relire et corriger TOUTES les FAUTES (frappes, sms, d'aurteaugrafe, mettre les ACCENTS et les BALISES) => ECRIRE clairement et en Français tu DOIS.
- Le côté obscur je sens dans le MP => Tous tes MPs je détruirai et la réponse tu n'auras si en privé tu veux que je t'enseigne.(Lis donc ceci)
- ton poste tu dois marquer quand la bonne réponse tu as obtenu.
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