Sunteți pe pagina 1din 17

Universitatea Politehnica București

Facultatea de Electronică, Telecomunicații, și Tehnologia Informației

RAPORT
Proiect ISIA: Masina cu Vectori Suport;
Tema: Autentificare validitate Banconte

Realizat de:
Anghel Alexandru-Dan,

Grupa 422B, ETTI


Supervizat de:
Prof. Univ. Corneliu Florea

1
CUPRINS

Noțiuni de bază
Raportul Bias-Varianță 3
Validare Încrucișată (Cross-Validation) 6
C6lasificatori cu Margine Maximă 7
Clasificatori cu Vector Suport 8
Mașini cu Vectori Suport 10
Cod Functional 10
Ce problemă rezolvăm 12
Explicarea Codului Funcțional 13
Librării Folosite 13
Împărțirea datelor Train & Test 13
Măsurarea Performanței 14
Variația Parametrilor 14
Concluzii 17

2
I. Noțiuni de bază

Raportul Bias-Varianță

În contextul de Machine Learning, prin BIAS putem înțelege o mulțime de erori


sistematice ce aparțin de predicțiile modelului, datorită asumpțiilor, simplificărilor respectiv
limitărilor acestuia în privința reprezentării distribuției de date.

Există două tipuri principale de Bias în învățarea automată:

Bias algoritmic:
Introdus prin alegerea algoritmilor, ipotezele acestora și limitările lor inerente.
Algoritmi diferiți pot face ipoteze diferite despre date, iar aceste ipoteze pot afecta
capacitatea modelului de a generaliza.
Bias de eșantionare:
Apare atunci când setul de date de antrenament nu reprezintă cu exactitate distribuția
reală a datelor. Dacă un model de autentificare de bancnote este instruit folosind doar
bancnote românești, acesta ar putea funcționa bine pentru aceste tipuri de bancnote, dar slab
pentru bancnote străine.
Acest lucru se poate întâmpla atunci când procesul de colectare a datelor este
denaturat sau când anumite grupuri sau caracteristici sunt suprareprezentate sau
subreprezentate în setul de date.

Exemplu:
3
Fie urmatorul set de date:

  set de antrenare

  set de test

Caz I: Regresie Liniară

Oricum am poziționa dreapta


de regresie liniară, aceasta nu va
putea captura in profunzime relația
dintre x și f(x).
Inabilitatea unei metode de
ML (Machine Learning) de a captura
relația corectă se numește Bias.

În acest caz, regresia liniară are un bias mare.

Caz II: Overfitting


Acest algoritm verifica integral
relația dintre x și f(x). Cu alte cuvinte,
este sensibil la orice modificare a
setului de antrenament, și are un bias
foarte mic, dar s-ar putea să nu se
descurce la fel de bine în etapa de test.

4
Calculând suma patratelor, putem compara randamentul celor doi algoritmi atât pentru
setul de antrenare cât și pentru setul de test.
k
SP(g ( x ) )=∑ (f ( x ) −g ( x ) )
2

x=0

S Ptrain ( ℜ g lin ) > S Ptrain ( overfit ) ≈ 0

S Ptest ( ℜ g lin ) < S Ptest ( overfit )

OBS: Diferența intre S Ptrain ( ℜ g lin )și S Ptest ( ℜ g lin ) se numește varianță.

5
Varianța

În învățarea automată, varianța se referă la variabilitatea sau sensibilitatea predicțiilor


unui model la modificările datelor de antrenament.
O varianță mare indică faptul că modelul este foarte receptiv la fluctuațiile setului de
date de antrenament, iar modificările mici ale datelor pot duce la schimbări semnificative în
predicțiile modelului.
O varianța scăzută implică faptul că predicțiile modelului sunt relativ stabile și mai
puțin afectate de modificările datelor de antrenament.
Putem spune despre regresia liniară că are Bias mare și Varianță redusă.
Pe de altă parte, funcția overfit are Bias mare și Varianță redusă.

Cross Validation
Prin Validare încrucișată, putem estima modul optim de împărțire a unei baze de
date în setul de antrenament respectiv de test, în proporția dorită. De asemenea, putem
compara diferite metode de Machine Learning (Random Forest, K-means, SVM) și observa
Bias-ul și Varianța lor pe același set de date.
Presupunem un split de 75%-25% între datele de antrenare respectiv test.
Validarea Încrucișată va împărți setul de date în 4 sectoare egale, și va efectua combinări
după următorul model:

Combinația optimă este determinată după numarul minin de clasificări greșite


respectiv dupa numărul maxim de observații obținute în urma antrenării și testării
algoritmului de învățare pe fiecare “fold”.
6
Același principiu poate fi folosit pentru a testa care metodă de învățare este optimă
pentru un set de date prezentat. Setul de date se segmentează in 4 subseturi egale, se
formeaza 4 “fold”-uri diferite, fiecare metodă de învățare este aplicată fiecărui “fold”, iar
rezultatul optim va fi determinat de un număr minim de misclasificări, respectiv de un
număr maxim de observații.

Maximal Margin Classifier


.
Clasificatorul cu Margini Maximale este un algoritm de clasificare ce urmărește să
găsească un hiperplan care maximizează distanța dintre clasele de puncte de date.

În general, Clasificatorul cu Margini Maximale este folosit în probleme de clasificare


pentru două clase pentru a găsi hiperplanul care separă cele două clase, menținând în
același timp cea mai mare margine posibilă între cele mai apropiate puncte ale celor două
clase.
Aceste puncte se numesc vectori suport. Marginea este distanța dintre hiperplan
și vectorii support.

Soft Margins

7
Marginile fine au apărut ca o măsură de a reduce Bias-ul și Varianța in seturile de
antrenare respectiv de testare. Acestea constau in acceptarea unui numar mic, in raport cu
setul de date, de misclasificari căt și un numar de observații in interiorul marginii.

Putem să ne dăm seama care margini sunt mai eficiente folosind


Validare Încrucișată

Un clasificator cu margini maximale care folosește validare încrucișată pentru a


determina distanța optimă a hiperplanului față de vectorii support se numește Clasificator
cu Vectori Suport. (Support Vector Classifier – SVC)
Observațiile din interiorul respectiv de la capătul marginilor fine se numesc Vectori
Suport.

 SVC pentru set de date


unidimensional
 hiperplan zero-dimensional

8
 SVC pentru set de date
bidimensional
 Hiperplan unidimensional

 SVC pentru set de date


tridimensional
 Hiperplan bidimensional

Pentru a delimita corect acest set de date, îl vom aduce Într-un spațiu superior.

2
Y =Dosag e

9
Un Clasificator cu Vectori Suport care folosește o funcție pentru a lucra cu o
formă a setului de date într-o dimensiune superioară (numite funcții “Kernel”) se
numește Mașină cu Vectori Suport (Support Vector Machine – SVM).
SVM este capabil să definească hiperplanuri în orice dimensiune.
Deși SVM a fost inițial conceput pentru clasificare liniară, acesta poate fi extins la
probleme de clasificare non-liniară prin utilizarea funcțiilor “kernel”. Kernelul transformă
datele într-un spațiu dimensional superior în care separarea liniară poate fi posibilă.
Kernelurile populare includ cel liniar, polinomial, funcția bază radială (RBF) și sigmoid.
Alegerea kernelului potrivit depinde de natura datelor și de complexitatea relațiilor dintre
caracteristici.

II. Cod Functional


# -*- coding: utf-8 -*-
"""
Created on Wed Aug 23 17:41:41 2023

@author: Master2
"""
"========= SETUP =============="

import numpy as np
import random

from sklearn import svm


from sklearn.preprocessing import StandardScaler
from sklearn.metrics import confusion_matrix, accuracy_score
from sklearn.model_selection import train_test_split
"================================"

"============= DATABASE & Shuffled database ==============="

data = np.genfromtxt('data_banknote_authentication.csv',delimiter=',')

# print(data)

L=len(data)
# print(L)
W=len(data[0])
# print(W)

shuf_data=np.zeros([L,W])
# print(len(shuf_data[0]))

X=np.arange(L)

for i in range (L):


r=int(random.choice(X))
shuf_data[i]=data[r]
X = np.delete(X , np.where(X==r))

"============================================"

10
"================================== APPLICATION FUNCTION ===================================="

def SVM_Classifier (dataset, CostVal):

"======= SPLIT LABELS FROM DATA ========="

X = dataset[:,:-1]
y = dataset[:,-1]

"========================================"

"===================================== CROSS VALIDATION ==============================="

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size =0.25 , random_state = 0)

"================================================================================="

"================== NORMALIZE DATA ==================="

sc = StandardScaler()
X_train = sc.fit_transform(X_train)
X_test = sc.transform(X_test)

"====================================================="

"========================= IMPLEMENT COST FUNCTION ========================="


for C in CostVal:

print(f"Cost Parameter: {C}")

"====================== TRAIN SVM MODEL ====================="

model = svm.SVC(kernel='linear', decision_function_shape='ovr',C=C)


model.fit (X_train, y_train)

y_pred = model.predict(X_test)

"============================================================"

"=========== CONFUSION MATRIX ==========="


cm = confusion_matrix(y_test, y_pred)
print("Confusion Matrix:")
print(cm)

ac=accuracy_score(y_test,y_pred)
print(f"Accuracy: {ac:.4f}")

"======================================="

print("===================")
print(" ")

"======================================================================="

print("======= END =======")


print(" ")

11
print(" ")

"=====================================================================================================
========="

C_val = [2**i for i in range(-5, 8)]

SVM_Classifier (data, C_val)

SVM_Classifier (shuf_data, C_val)

Ce problemă rezolvăm
Clasificăm autenticitatea bancnotelor folosind o bază de date formate din urmatoarele
clase:
 Varianța imaginii bancnotei transformate prin Wavelet
 Asimetria imaginii bancnotei transformate prin Wavelet
 Curtoza imaginii bancnotei transformate prin Wavelet
 Entropia imaginii bancnotei transformate prin Wavelet
 Clasa (autentic/fals)
Curtoza = parametru statistic folosit pentru caracterizarea curbelor granulometrice cumulative, coefficient
de ascuțime
Wavelet = oscilație asemănătoare unei unde cu o amplitudine care începe de la zero, crește sau scade și
apoi revine la zero de o dată sau de mai multe ori. Undatele sunt denumite „oscilatii scurte”. A fost stabilită
o taxonomie a waveletelor, bazată pe numărul și direcția impulsurilor sale. Waveletele sunt impregnate cu
proprietăți specifice care le fac utile pentru procesarea semnalului.

Ce librării am folosit
12
 Numpy
Folosit pentru a aranja un vector cu valori de la 0 la 1371

X=np.arange(L)

X Array of int32 (1371,)

 Sklearn
 svm
Folosit pentru realizarea modelului de predictie
model = svm.SVC(kernel='linear', decision_function_shape='ovr',C=C)
model.fit (X_train, y_train)

 model_selection  train_test_split
Folosit pentru împărțirea setului de date in date de
antrenament respectiv de test în raport 75%-25%
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size =0.25 , random_state = 0)

 preprocessing  StandardScaler
Folosit pentru standardizarea setului de antrenare & test
sc = StandardScaler()
X_train = sc.fit_transform(X_train)
X_test = sc.transform(X_test)
sc.fit_transform standardizează setul de date: media noilor valori
este 0, iar devierea este mai mica de 1.
sc.transform aplică transformarea deja computată de
sc.fit_transform de la setul de antrenament la setul de test

 metrics  confusion_matrix
13
Realizeaza o matrice de 2x2 ce prezinta numarul de pozitive,
negative, positive false respectiv negative false. Metrică folosită
pentru măsurarea performanței.

Predicted Predicted
Positive Negative

Actual TP FN
Positive
Actual FP TN
Negative
cm = confusion_matrix(y_test, y_pred)

 metrics  accuracy_score
Realizează acuratețea predicțiilor din matrice după urmatoarea
formula:
TP+TN
Accuracy=
TP+TN + FP+ FN

Folosită pentru măsurarea performanței.

Variația Parametrilor

I. C, CostVal, C_val

Parametru de cost. Influențează modul în care hiperplanul de separare pentru


datele de antrenament este optimizat.

C > 1  SVM va penaliza mai mult misclasificările, și va încearca să le minimizeze


numărul de apariții în margine. În consecință, marginea va fi mai mică, iar algoritmul de
învățare va deveni mai sensibil la schimbările setului de date de antrenament.

C < 1  SVM va permite clasificarea greșită a mai multor exemple pentru a


obține o margină mai mare.
14
II. Kernel

Fixat a fi ‘liniar’.
Este cel mai simplu kernel și utilizează o linie dreaptă pentru separarea datelor.

Alte tipuri de kernel:


Polinomial (kernel = ‘poly’)
Folosește o curbă polinomială pentru separare. Gradul polinomului poate varia.

Funcție de bază radială (kernel = ‘rbf’)


Utilizează o funcție radială pentru separare și este potrivit pentru cazuri mai
complexe. Variază prin parametrul ‘gamma’:
Pentru valori mari ale parametrului ‘gamma’, efectul fiecărui punct de antrenare se
extinde pe o zonă mai mică. Acest lucru face ca modelul să fie mai sensibil la variațiile din
setul de antrenament.
Pentru valori mici ale parametrului ‘gamma’, efectul fiecărui punct de antrenare se
extinde pe o zonă mai mare. Acest lucru face ca modelul să fie mai puțin sensibil la variații
din setul de antrenament și va avea o performanță mai bună pe setul de testare.

III. decision_function_shape
15
Fixat a fi ‘ovr’ (One vs. Rest)

Fie patru clase de date: A, B, C, D

‘ovr’ creează un clasificator binar separat pentru fiecare clasă:

A vs (B & C & D)
B vs (A & C & D)
C vs (A & B & D)
D vs (A & B & C)

Decizia finală se ia pe baza scorurilor furnizate de aceste clasificatoare.

Alt clasificator: ‘ovo’ (One vs. One)

‘ovo’ creează un clasificator binar pentru fiecare pereche de clase:

A vs B B vs C C vs D
A vs C B vs D
A vs D

Decizia finală se ia pe baza voturilor majorității dintre toate clasificatoarele


create.

Concluzii

16
Implementarea codului compară eficient performanța modelului SVM într-un
interval de valori de cost folosind validarea încrucișată. Analizând atât seturile de date
originale, cât și cele amestecate (shuf_data), codul oferă o evaluare cuprinzătoare a
capacității de generalizare a modelului de învățare. Variația parametrului de cost ne permite
să observăm modul în care regularizarea are impact asupra capacității de predicție a
modelului. Structura modulară a codului permite adaptarea și extinderea ușoară la alte
seturi de date și sarcini de clasificare. Extinderi posibile pot fi:
 Experimentarea cu mai multe tipuri de kernel & decision_function_shape în cadrul
SVM
 Ilustrarea grafică a efectului variației valorilor de cost asupra acurateții.
 Folosirea mai multor metrici de evaluare, cum ar fi scorul de precizie, de recall și
F1-score

TP
Precision=
TP+ FP
TP
Recall=
TP+ FN
2∗precision∗recall 2∗TP
F 1score = =
precision+recall 2∗TP+ FP+ FN

17

S-ar putea să vă placă și