% TP Apprentissage Statistique
% telecharger http://lipn.univ-paris13.fr/~chevaleyre/q1x.dat et q1y.dat
% Pour octave sur Mac os x, faire graphics_toolkit ("fltk")
%
%
% A faire :
%
% - Afficher la courbe de la hinge loss en fonction de b pour (w1,w2)=(0.5,0.5)
% - Afficher la courbe de la hinge loss en fonction de b pour (w1,w2)=(2,2)
% - qu'en concluez-vous ?
% - definir une fonction de perte 0/1
% - definir une fonction de perte quadratique
% - Afficher la courbe de la perte 0/1 en fonction de b pour (w1,w2)=(1,1)
% - Faites un programme qui genere des tas de valeurs aleatoires pour (w1,w2,b), et qui renvoie le meilleur triplet, en terme de hinge loss. Idem pour la perte 0/1. Comparez
%
% - Afficher les courbe en 3D (par exemple avec la fonction surf) de la hinge loss, de la  0/1 loss et de la perte quadratique en fonction de (w1,w2) pour b = 1


global x y m
x = load ("q1x.dat")
y = load ("q1y.dat")
m = size(y)(1,1)

scatter(x(:,1),x(:,2),8,y,'filled')

function [r] = valex(w1,w2,b,i)
	global x y
	r = y(i)*(x(1,:)*[w1 w2]' - b)
end

function [r] = hinge(w1,w2,b,i)
	global x y
	r = max(0,1-valex(w1,w2,b,i))
end

function [r] = total_hinge(w1,w2,b)
	global x y m
	r = 0
	for i = 1:m
		r = r + hinge(w1,w2,b,i)
	end
end

