Академический Документы
Профессиональный Документы
Культура Документы
------------------ -------------------
Sapientia-Collativa-Cognitio Sapientia-Collativa-Cognitio
------------------------------ ------------------------------
DE YAOUNDE OF YAOUNDE
------------------------- ----------------------
TRAVAU
X
PRATIQU
ES DE
PROBABI
LITE ET
STATISTI
QUE :
EXERCIC
E5
samplePoints=function(n,beta,beta2){
La fonction simple permet de créer une liste de deux élément le premier est une matrice de taille
n ×2 et le second élément un vecteur colonne :
s=list()
Crée la liste S
s$x=matrix(runif(2*n),nrow=n);
runif(n) : génère aléatoirement entre 0 et 1 n nombre réel suivant une loi uniforme
s$y=2*(s$x%*%beta+beta2>0)-1 ;
s$x%*%beta+beta2 effectue le produit des matrices s$x et beta ajoute le réel beta2 à chaque
élément de la matrice obtenue.
s$x%*%beta+beta2>0 : renvoie 1 si (s$x%*%beta+beta2)[i]>0 et 0 sinon
n=100
tbeta=c(0.5,-1)
tbeta2=0.5;
s=samplePoints(n,tbeta,tbeta2)
beta=runif(2)-1/2;
beta2=-sum(beta)/2;
rho=0.002;
K=which((s$x%*%beta+beta2) *s$y<0)
1
it<-0;
while(length(K)>0&it<500){
it=it+1;
plot(s$x[,1],s$x[,2],col=c("blue","red")[(s$y+3)/2],pch=19);
Dessine le graphe (place les points, sans les reliés) de la première colonne de s$x en fonction de
sa deuxième colonne : les points (s$x[i,1] ;s$x[i,2]) vérifiant (s$y[i]=-1 seront représentés en bleu et les
points vérifiant s$y[i]=1 seront représentés en rouge.
lines(c(-1,1),(-tbeta2-tbeta[1]*c(-1,1))/tbeta[2],col="black");
lines(c(-1,1),(-beta2-beta[1]*c(-1,1))/beta[2],col="green");
points(s$x[K,1],s$x[K,2],pch=21,cex=2.5,lwd=5,col="green");
Entoures-en vert les points qui ne sont pas dans la bonne zone du plan par rapport à la droite te
la machine
if(length(K>1)){i=sample(K,1)}else{i=K;}
points(s$x[i,1],s$x[i,2],col="magenta",pch=20,cex=3);
beta=beta + rho*s$y[i]*s$x[i,];
beta2=beta2 + rho*s$y[i];
Rectifie beta2
plot(s$x[,1],s$x[,2],col=c("blue","red")[(s$y+3)/2],pch=19);
lines(c(-1,1),(-tbeta2-tbeta[1]*c(-1,1))/tbeta[2],col="black");
lines(c(-1,1),(-beta2-beta[1]*c(-1,1))/beta[2],col="green");
points(s$x[K,1],s$x[K,2],pch=21,cex=2.5,lwd=5,col="green");
2
cat("number of iterations: ",it,"\n") : affiche le nombre d’’itération
2) ROLE DE L’ALGORTHIME
Le but du programme est de trouver automatiquement la droite permettant de
diviser le plan du graphe en deux de tel sorte que d’un côté on a uniquement les points
bleus et de l’autre les points rouges).
3) INCONVENIENTS
Il n’est pas précis étant donné qu’il peut exister une infinité de droite de séparation.