Modélisation SVM : Problème Clinique et Pseudo-Code

Telechargé par wajdizanteni2003
Modélisation Algébrique et Algorithmique des SVM :
Du Problème Clinique au Pseudo-Code
Fondements et Implémentation du Primal et du Dual
4 juin 2026
1 Le Problème Clinique Fil Rouge de Référence
Pour comprendre la transition entre les équations et les algorithmes, nous définissons un
micro-dataset clinique de N= 2 patients décrit par d= 2 biomarqueurs :
—Patient 1 (x1) : Biomarqueurs x1=2
1, Étiquette y1= +1 (Patient Répondeur)
—Patient 2 (x2) : Biomarqueurs x2=1
2, Étiquette y2=−1(Patient Non-Répondeur)
On fixe la constante de pénalité à C= 10.0et le taux d’apprentissage à η= 0.1.
2 Modèle Primal : Descente de Sous-Gradient
2.1 Formulation de l’Objectif et Algèbre du Sous-Gradient
Le problème primal en marge souple cherche à minimiser la fonction de coût combinant la
régularisation de Tikhonov et la perte charnière (Hinge Loss) :
J(θ, b) = 1
2∥θ∥2+C
N
X
i=1
max 0,1−yi(θTxi+b)(1)
Pour un patient i, on définit sa marge fonctionnelle par γi=yi(θTxi+b). La fonction de perte
n’étant pas dérivable en γi= 1, on utilise le calcul des sous-gradients par rapport au vecteur de
poids θ∈Rdet au biais b∈R:
Si γi≥1 =⇒ ∇θJi=θ, ∇bJi= 0 (2)
Si γi<1 =⇒ ∇θJi=θ−Cyixi,∇bJi=−Cyi(3)
2.2 Résolution Algébrique Manuelle (Itération 1)
On initialise θ=0
0et b= 0.
1. Évaluation du Patient 1 :
γ1= 1 ·0 02
1+ 0= 0
Puisque γ1<1, la contrainte est violée. On calcule les sous-gradients et on met à jour les
paramètres :
∇θJ1=0
0−10 ·(1) ·2
1=−20
−10,∇bJ1=−10 ·(1) = −10
θ←θ−η∇θJ1=2
1, b ←b−η∇bJ1= 1
1
2. Éévaluation du Patient 2 (avec les nouveaux paramètres) :
γ2=−1·2 11
2+ 1=−1·(2 + 2 + 1) = −5
Puisque γ2<1, le second point viole également la marge :
∇θJ2=2
1−10 ·(−1) ·1
2=12
21,∇bJ2=−10 ·(−1) = 10
θ←2
1−0.112
21=0.8
−1.1, b ←1−0.1(10) = 0
2.3 Pseudo-Code Algébrique du SVM Primal
Le pseudo-code suivant traduit cette dynamique algébrique pour l’implémentation :
Entrées : X (N x d), y (N x 1), C, lr, n_iters
Initialisation : theta = vecteur_zero(d, 1), b = 0.0
Pour epoch allant de 1 à n_iters :
Pour chaque indice i de 0 à N-1 :
score_marge = y[i] * (produit_scalaire(X[i], theta) + b)
Si score_marge >= 1.0 :
theta = theta - lr * theta
Sinon :
theta = theta - lr * (theta - C * y[i] * X[i])
b = b - lr * (-C * y[i])
Retourner theta, b
3 Modèle Dual : Algorithme d’Uzawa / Gradient Projeté
3.1 Construction Algébrique des Matrices Spatiales
Dans le dual, nous n’utilisons plus θ. Le paysage géométrique est entièrement encodé par les
relations inter-patients via le noyau (ici linéaire K(xi, xj)=xT
ixj).
1. Matrice de Gram K(taille 2×2) :
K=xT
1x1xT
1x2
xT
2x1xT
2x2=2(2) + 1(1) 2(1) + 1(2)
1(2) + 2(1) 1(1) + 2(2)=5 4
4 5
2. Matrice Sandwich de Wolfe Q:
Q= (yyT)⊙K=(+1)(+1) ·5 (+1)(−1) ·4
(−1)(+1) ·4 (−1)(−1) ·5=5−4
−4 5
3.2 Mécanique d’Uzawa (Itération 1)
On initialise le vecteur d’influence α=0
0, le multiplicateur d’égalité λ= 0 et le multipli-
cateur de borne µ=0
0. Le gradient de l’objectif dual par rapport à αs’écrit :
∇αL=Qα −1+λy −µ=5−4
−4 5 0
0−1
1+0−0
0=−1
−1
2
On effectue le pas de descente de gradient suivi de la projection sur la boîte [0, C]:
α←clip(α−η∇αL,0, C) = clip 0
0−0.1−1
−1,0,10=0.1
0.1
Mise à jour de la contrainte d’égalité Pαiyi= 0 via son résidu :
résidu = 0.1(1) + 0.1(−1) = 0 =⇒λ←λ+η(0) = 0
3.3 Pseudo-Code Algébrique du SVM Dual
Ce pseudo-code montre comment l’algorithme d’Uzawa gère l’optimisation sous-jacente :
Entrées : X (N x d), y (N x 1), C, lr, n_iters, kernel_function
Initialisation :
K = calculer_matrice_de_gram(X, kernel_function) # Taille N x N
Q = (y @ y.T) * K # Produit element par element
alpha = vecteur_zero(N, 1)
lambda_eq = 0.0
mu_ineq = vecteur_zero(N, 1)
ones = vecteur_un(N, 1)
Pour itération allant de 1 à n_iters :
grad_alpha = (Q @ alpha) - ones + (lambda_eq * y) - mu_ineq
alpha = alpha - lr * grad_alpha
alpha = clip(alpha, 0.0, C)
residu_egalite = somme_elements(alpha * y)
lambda_eq = lambda_eq + lr * residu_egalite
mu_ineq = max(0.0, mu_ineq + lr * (-alpha))
# Extraction finale du biais dans l’espace Map
Masque_SV = (alpha > 1e-5) & (alpha < C - 1e-5)
K_partiel = K[Tous_les_points, Masque_SV]
f_brut_sv = K_partiel.T @ (alpha * y)
b = moyenne(y[Masque_SV] - f_brut_sv)
Retourner alpha, b
3
1 / 3 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans l'interface ou les textes ? Ou savez-vous comment améliorer l'interface utilisateur de StudyLib ? N'hésitez pas à envoyer vos suggestions. C'est très important pour nous!