Figura 1. Neuronul biologic [607869]
1 Stadiu actual 1.1 Folosirea RNA Rețelele neuronale sunt folosite în prezent pentru rezolvarea multor probleme în sectorul de „business”, cum ar fi previziuni financiare, cercetări de piață, management de risc, validări de date pe bază de clasificări și de tipare, previziuni de marketing. O altă branșă care beneficiază de ajutorul rețelelor neuronale este medicina și sistemele biomedicale. Două exemple de companii cunoscute care utilizează RNA sunt Google, care folosește un algoritm bazat pe RNA pentru returnarea unor imagini pe baza unor cuvinte date ca intrare la căutare, și Microsoft, care a dezvoltat un sistem de rețele neuronale ce ajută la convertirea limbii engleze în chineză. 1.1.1 RNA în marketing Rețelele neuronale se utilizează în marketing pentru a identifica consumatorii țintă. Ele pot fi de folos în acest sens, deoarece pot segmenta clienții cu ajutorul unor caracteristici, de exemplu statutul economic, locația, atitudinea față de un produs și tiparul de cumpărături. RNA-urile nesupravegheate pot grupa și segmenta un grup de consumatori cu ajutorul unor similarități de caracteristici. [1] 1.1.2 RNA în vânzări Rețelele neuronale au abilitatea de a lua în considerare simultan variabile multiple cum ar fi cererea pieței pentru un produs, venitul unui cumpărător, populația și prețul produsului. Preconizarea vânzărilor în supermarket-uri este benefică aici. Dacă există o relație între 2 produse de-a lungul timpului, estimativ pe parcursul a 3-4 luni de cumpărare a unei imprimante, consumatorul se întoarce să cumpere un nou cartuș, atunci vânzătorul poate să folosească această informație să contacteze clientul, diminuând șansele ca acesta să achiziționeze produsul de la concurență. [1] 1.1.3 RNA în banking și finance Rețelele neuronale au fost aplicate cu succes în probleme de stabilire a prețurilor, preconizarea prețurilor viitoare, prezicerea cursului de schimb și performanța stocurilor. În prezent, rețelele neuronale sunt tehnica care stă la baza luării deciziilor. [1] 1.1.4 RNA în medicină Este un domeniu de cercetare în medicină. În următorii ani, este posibilă o aplicație vastă în sistemele biomedicale, însă în acest moment, cercetarea se bazează mai ales pe modelarea parților corpului uman și recunoașterea bolilor din diferite scanări. 1.1.5 Identificarea fețelor În identificarea fețelor se folosește un detector care evaluează imaginea de intrare la rezoluție scăzută, pentru a respinge rapid regiunile fără față și a procesa cu atenție regiunile dificile la o rezoluție mai mare pentru o detectare mai precisă. [1]
1.1.6 Mașini care se conduc singure În proiectul mașinilor care se conduc singure, o considerație importantă este obținerea unei măsuri de distanță, in mod ideal, a fiecărui punct al scenei văzute, deoarece asigură siguranța pasagerilor și a altor vehicule. Straturile RNA-urilor le permite să fie extrem de versatile, pentru a putea prelucra intrări prin parametrii multipli. [1] 1.1.7 Predicție O rețea neuronală poate fi instruită să producă rezultate care sunt așteptate, având în vedere o anumită intrare. Dacă avem o rețea care se potrivește în modelarea unei secvențe cunoscute de valori, o putem folosi pentru a prezice rezultate viitoare. Un exemplu evident este predicția pieței bursiere. [1] 1.1.8 Aplicații comerciale De obicei RNA folosesc date în secțiune transversală. Rezolvarea acestor probleme presupune „învățarea” tiparelor într-un set de date și construirea unui model care să poată recunoaște aceste tipare. Aplicații comerciale RNA de această natură includ : • Detectarea fraudei cu cardul de credit a fost raportată ca fiind folosită de Eurocard Nederland, Mellon Bank, First USA Bank, etc. ; • Recunoașterea scrisului de mână folosită de programul Lexicus2 al corporației Longhand care rulează pe aplicații cum ar fi NEC Versapad, Toshiba Dynapad etc. ; • Sistemul de ecranizare a frotiului colului uterin (Papanicolau) numit Papnet 3 a fost dezvoltat de Neuromedical Systems Inc. și este utilizat în prezent de către Administrarea americană „Food and Drug” pentru a ajuta citotehnologii să detecteze celulele canceroase ; • Explorarea petrolului fiind utilizată de Texaco și Arco pentru a determina locațiile depozitelor subterane de petrol și gaze; • Detectarea bombelor din valize folosind o abordare a rețelelor neuronale numită Thermal Neutron Analysis (TNA), sau, mai frecvent, SNOOPE, dezvoltată de Corporația Internațională de Aplicații Științifice (SAIC). [2] 1.1.9 Probleme de serii cronologice În problemele din seriile de timp, RNA trebuie să construiască un model de prognoză din istoricul setului de date pentru a prezice viitoare puncte de date. În consecință, ele necesita tehnici RNA relativ sofisticate, deoarece secvența datelor de intrare în acest tip de problemă este importantă în determinarea relației unui model de date cu următorul. Acesta este cunoscut ca efectul temporal, iar tehnici mai avansate cum ar fi tipuri de răspunsuri impulsive finite ale RNA-urilor și RNA-uri recurente sunt dezvoltate și explorate pentru a trata in mod specific acest tip de problemă. Exemple de astfel de probleme din lumea reală care folosesc RNA sunt: • Sisteme de tranzacționare valutară: Citibank London, HongKong Bank of Australia; • Selectarea și gestionarea portofoliului: LBS Capital Management, fondul pensiei Deere & Co. ; • Prezicerea tiparelor de vreme; • Rețeaua de recunoaștere a vorbirii fiind comercializată de Asahi Chemical; • Prezicerea/confirmarea infarctului miocardic, atac de cord, din undele de ieșire ale unei electrocardiograme (ECG); • Identificarea demenței din analiza modelelor de electrod-electroencefalograma. [2]
1.1.10 Probleme de optimizare Ele implică găsirea unei soluții pentru un set foarte complicat de probleme. Exemple de astfel de probleme includ călătoria vânzătorului, programarea locurilor de muncă în fabricarea și eficientizarea rutelor implicând vehicule sau telecomunicații. RNA-urile folosite pentru rezolvarea acestui tip de probleme sunt diferite de cele 2 tipuri anterioare, în ideea în care ele necesită rețele nesupravegheate, prin care RNA nu sunt furnizate cu soluții anterioare și, prin urmare, trebuie să „învețe” de la sine, fără a beneficia de tiparele cunoscute. [2] 1.2 Învățare profundă Învățarea profunda este o tehnică din domeniul inteligenței artificiale care imită funcționarea creierului uman în procesarea de date diferite, crearea de modele și interpretarea informației folosită în luarea de decizii. Aplicațiile de învățare profundă folosesc rețele neuronale artificiale deseori numite rețele neuronale profunde. Termenul „profunde” se referă la numărul de straturi ascunse din rețea. O rețea tradițională conține 2-3 straturi ascunse, în timp ce una profundă poate să conțină chiar și 150 de straturi ascunse. 1.2.1 Traducere automată Cu ajutorul învățării profunde avem acces la diferite servicii de traducere. Unul dintre cele mai populare fiind Google Translate. RNA a îmbunătățit această aplicație enorm, de la a scrie un cuvânt pana la a-l pronunța. [3] 1.2.2 Asistenți virtuali Cea mai populară aplicație a învățării profunde este asistentul virtual, ca de exemplu Siri, Alexa și Google Assistant. Acești asistenți digitali se bazează în profunzime pe învățare profundă pentru a înțelege utilizatorul lor și în același timp să dea răspunsul potrivit într-o manieră naturală. Fiecare interacțiune îi permite asistentului să înțeleagă vocea și accentul utilizatorului și să studieze comportamentul acestuia. Învățarea profundă este folosită în acest caz pentru a învăța mai multe despre subiecții lor, de la muzică la locurile preferate. [3] 1.2.3 Redarea culorii pozelor și videoclipurilor Există și o parte creativă a mașinăriilor. Cu ajutorul învățării profunde, acestea pot reda culoarea pozelor și videoclipurilor vechi, alb negru. Această aplicație a colorat înregistrări din Primul Război Mondial. Chiar dacă aceste imagini nu au fost semnificative, acest fapt poate dezvălui informații noi. [3] 1.2.4 Divertisment Recomandările aplicațiilor ca Netflix sau Spotify sunt bazate pe învățarea profundă. Acesta joacă un rol foarte important în înțelegerea comportamentului consumatorului și generarea recomandărilor. Cu cât se interacționează mai mult cu aceste aplicații, cu atât ele adună informație care sugerează opțiuni mai bune pentru utilizator. [3]
1.2.5 Detectarea întârzierii dezvoltării copiilor Autismul, tulburările de vorbire și dezvoltare pot afecta calitatea vieții copiilor care suferă de aceste probleme. În aceste situații, un diagnostic timpuriu și un tratament pot avea un efect bun asupra psihicului și sănătății mentale ale acestor copii. Cu ajutorul aplicațiilor de învățare profundă, aceste tulburări pot fi detectate cu ușurință chiar înainte de Grădiniță, când majoritatea cazurilor tradiționale încep să se manifeste. [3] 1.2.6 Prezicerea dezastrelor naturale Una dintre cele mai folositoare aplicații este prezicerea de cutremure. Acestea au reușit să îmbunătățească timpul de calculare cu 50,000%. De asemenea, când vine vorba de calcularea unui cutremur, sincronizarea este foarte importantă și joacă un rol vital în salvarea vieților. [3]
2 Fundamentare teoretică Rețelele neuronale fac parte din știința inteligenței artificiale. Nu există o definiție general acceptată ale RNA-urilor, dar ele sunt un “calculator distribuit, masiv paralel, care achiziționează̆ noi cunoștințe pe baza experienței anterioare și le face disponibile pentru utilizarea ulterioară” (S.Haykin, 1994). [4] Una dintre cele mai importante calități a rețelelor este ca se pot îmbunătăți prin învățare. 2.1 Sistemul nervos Sistemul nervos este alcătuit din : Sistemul Nervos Central și Sistemul Nervos Periferic. Sistemul nervos central, la rândul lui este format din encefal, adică creierul mic, mare și trunchiul cerebral, și măduva spinarii. Sistemul Nervos Central este responsabil de prelucrarea informației primită de la receptori și generearea unui raspuns. [5] Creierul este alcătuit din 2 emisfere: cea stângă care controlează mâna dreaptă, iar cea dreaptă care controleaza mâna stângă. Ipotetic, se spune că emisfera stânga se ocupă de vorbire și gândirea științifică, iar cea dreaptă este opusul, fiind responsabilă de imaginație și capacitățile artistice. [6] Aflat în cutia craniană, controlează toate funcțiile corpului și interpretează informațiile primite din exterior. Inteligența, creativitatea, emoțiile și memoria sunt câteva dintre responsabilitățile creierului. 2.2 Neuronul biologic Sistemul nervos are ca element principal țesutul nervos, format din neuroni interconectați prin axoni și drendite. Un neuron este ilustrat în Figura 1. Există aproximativ 100 de miliarde de neuroni în corpul uman. Ei funcționează similar cu porțile logice dintr-un calculator. Au proprietatea de a propaga semnale extrem de rapid pe distanțe mari, chiar și de câțiva metri. [7]
Figura 1. Neuronul biologic
Conceptul de neuroni, ca unitate principală a sistemului nervos, a fost introdus de anatomistul spaniol Santiago Ramón y Cajal. El a arătat că neuronii sunt celule individuale care comunică între ele. [7] Neuronii sunt formați din trei regiuni: una receptoare, una conducătoare, și una efectoare. Regiunea receptoare recepționează și procesează informația. Aceasta este formată din dentrite și soma. Regiunea conductoare leagă regiunea receptoare de cea efectoare și este formată din porțiunea axonului de la locul în care acesta iese din corpul celular. Aici au loc și potențialele de acțiune prin sumarea potențialelor locale. Și în final, regiunea efectuare, informația, sau potențialul de acțiune, este recodificată aici sub formă chimică prin neurotransmițători și transmisă prin sinapsa regiunii receptoare a următorului neuron. [7] Neuronii comunică între ei prin sinapse, putând avea peste 1000 de ramificații, făcând conexiuni cu alte zeci de mii de celule. [7] Un neuron stimulează un alt neuron prin sinapse, în timp ce semnalele sunt transmise prin procese complexe chimice și electrice. [6] 2.3 Structura neuronului artificial Modelul de bază McCulloch-Pitts (1943) al unui neuron artificial este ilustrat în Figura 2. Modelul derivat poate fi observat în Figura 3.
Figura 2. Modelul McCulloch-Pitts
Figura 3. Modelul derivat
În Figura 2 și Figura 3 există următoarele notații: x1,…,xn – semnalele de intrare, w1,…,wn – ponderi sinaptice, f – funcție de integrare/agregare/activare, θ- bias (polarizare). 𝒖=$𝒘𝒊×𝒙𝒊𝒊"𝟏..𝑵 (𝟏) 𝑦=𝑓(𝑢−𝜃) (2) Formulele (1) și (2) descriu neuronul prezentat în Figura 2. 𝒖=$𝒘𝒊×𝒙𝒊𝒊"𝟎..𝑵 (𝟑) 𝑦=𝑓(𝑢) (4) Formulele (3) și (4) descriu neuronul prezentat în Figura 3. 2.4 Funcționarea neuronului artificial După cum se poate observa din formulele prezentate mai sus, funcționarea neuronului este simplă. În primul rând, intrările xi sunt multiplicate de ponderile wi. Valorile obținute trebuie însumate. Rezultatul este semnalul „u” care reflectă funcționarea părții lineare a neuronului. Acest semnal este subiectul operației de activare, funcția „f”, care în cele mai dese cazuri nu este una lineară. 2.5 Arhitectura rețelelor neuronale 2.5.1 Rețea cu unistrat
Figura 4. RNA cu unistrat
În Figura 4 se poate observa o rețea neuronala cu un singur nivel de neuroni. Răspunsul Y se calculează cu formula (5). 𝑦=𝑓(𝑊'×𝑋+𝐵) (5) unde : X = 9𝑥(𝑥)…𝑥*< ; W = 9𝑤((…𝑤(+𝑤)(…𝑤*(…𝑊*+< ; B = 9𝑏(𝑏)…𝑏+< 2.5.2 Rețea cu multistrat
Figura 5. RNA multistrat Figura 5 ilustrează o rețea cu straturi multiple. Acestea pot implementa funcții mai complexe. Răspunsul Y se calculează cu formula (6). 𝑦=𝑓(𝑊'×𝑋+𝐵) (6) Unde : X = 9𝑥(𝑥)…𝑥*< ; W = 9𝑤((…𝑤(+𝑤)(…𝑤*(…𝑊*+< ; B = 9𝑏(𝑏)…𝑏+<
2.5.3 Schema bloc
Figura 6. Schema bloc RNA Figura 6 ilustrează cele 3 straturi dintr-o rețea neuronală. Aceasta este alcătuită din N intrări și K ieșiri. Pe stratul ascuns sunt H neuroni. Calculele făcute în stratul ascuns sunt următoarele : 𝑤, = ⎣⎢⎢⎡𝑤((,…𝑤(*,𝑤)(,…𝑤)*,…𝑤-(,…𝑤-*,⎦⎥⎥⎤ 𝑏. = 9𝑏(.𝑏)….𝑏-.< Calculele făcute în stratul de ieșire sunt următoarele : 𝑤/ = 9𝑤((/…𝑤(-/𝑤)(/…𝑤)-/…𝑤0(/…𝑤0-/< 𝑏/ = 9𝑏(/𝑏)/…𝑏0/< Răspunsul yh se calculează cu ajutorul formulelor (7) și (8). 𝑦,=𝑓,(𝑤,𝑥+𝑏,) (7) 𝑦,=[𝑦(, 𝑦), …𝑦-,] 1 (8) Funcția de transfer se calculează cu ajutorul formulelor (9) și (10). 𝑂=𝑓/(𝑤/𝑦,+𝑏/) (9) 𝑂=𝑓/(𝑤/𝑓,(𝑤,𝑥+𝑏,)+𝑏/) (10)
2.5.4 Rețele neuronale profunde O rețea neuronală profundă este alcătuită din neuroni grupați în 3 straturi diferite: de intrare, ascuns și de ieșire. Stratul de intrare primește datele de intrare și le transmite mai departe stratului sau straturilor ascunse. În aceste straturi se efectuează toate calculele matematice pe datele de intrare. Calculul depinde de greutatea fiecărei date. Odată calculat, stratul de ieșire returnează datele de ieșire. O rețea neuronale profundă este ilustrată în Figura 7.
Figura 7. Rețea neuronală profundă 2.5.5 Rețele neuronale convoluționale Rețelele neuronale convoluționale sunt o structură neuronală ierarhică multistrat capabilă să recunoască tipare vizuale prin învățare, prin analogie cu ceea ce se întâmplă în cortexul vizual uman. Această structură este compusă din straturi alternative de celule primare, antrenate să răspundă selectiv la o anumită caracteristică locală prezentă în câmpul lor receptor și straturi de celule complexe, care permit abateri în poziționarea caracteristicilor. [8]
Figura 8. Schema unei rețele convoluționale [10] Figura 8 ilustrează cele două zone principale : zona alcătuită din straturile de tip Convolution și Pooling și cea din straturile Fully Connected. Prima zonă are rolul de extractor de trăsături. Primele straturi convoluționale extrag informații de tip contururi, iar acestea devin mai complexe odată cu parcurgerea rețelei. A doua zonă, cu straturile Fully Connected este o rețea aplicată trăsăturilor extrase din zona convoluționala a rețelei. Toate straturile convoluționale sunt urmate de o funcție de activare, în general Rectified Linear Unit, ReLu. [9] 2.6 Funcții de activare 2.6.1 Prag Funcția prag se calculează cu formula (11) și este ilustrată în Figura 9. 𝑓(𝑢)=&0,𝑢≤01,𝑢>0 (11)
Figura 9. Funcția prag
2.6.2 Rampă Funcția rampă se calculează cu formula (12) și este ilustrată în Figura 10. 𝑓(𝑢)=N0,𝑢≤0𝑢𝑘,0<𝑢≤𝑘1,𝑘<𝑢 (12)
Figura 10. Funcția rampă 2.6.3 Sigmoidală Funcția sigmoidală se calculează cu formula (13) și este ilustrată în Figura 11. 𝑓(𝑢)=11+𝑒234 (13)
Figura 11. Funcția sigmoidală
2.6.4 Liniară Funcția liniară se calculează cu formula (14) și este ilustrată în Figura 12. 𝑓(𝑢)=𝑘𝑢 (14)
Figura 12. Funcția liniară 2.6.5 ReLu Funcția ReLu se calculează cu formula (15) și este ilustrată în Figura 13. 𝑓=𝑚𝑎𝑥(0,𝑥) (15)
Figura 13. Funcția ReLu
2.7 Tipuri de rețele După tipul conexiunilor făcute de neuroni sunt : Monolayer și Multilayer. După direcția semnalului: rețele feedforward, sunt multilayer și informația se duce într-o singură direcție, și feedback, unde există legături dintr-un strat superior la altele anterioare. Rețelele feedback sunt cele mai complexe, dinamice, iar pentru fiecare strat de intrare, se caută starea de echilibru. 2.8 Instruirea rețelelor neuronale artificiale Instruirea RNA reprezintă procesul adaptării ponderilor, printr-o simulare din partea unui expert sau na mediului, sau nesupervizat, prin analiza statistică a vectorilor de intrare. [4] Algoritmul de instruire, adică modul prin care se modifică ponderile, se rezolvă cu ajutorul ecuației (16). 𝑤35(𝑛+1)=𝑤35(𝑛)+∆𝑤35(𝑛) (16) unde: k – neuronul de la care „pleacă” ponderea; j – neuron spre care „vine” ponderea; n – momentul de timp; Dwkj(n) – algoritm de instruire. 2.8.1 Tehnici de instruire După modul în care se face instruirea exista 3 tipuri: supervizată, cu întărire, nesupervizată. Instruirea supervizată are perechi, intrare și ieșire dorită, iar epoca de instruire se face cu ajutorul prezentării întregului set de instruire. Instruirea cu întărire se face online și cu un semnal de întărire extern, care poate să fie binar. Instruirea nesupervizată este posibilă atât online, cât și offline. Aceasta este cea mai rapidă, iar intrările se clasifica statistic, prin distanță euclidiană. 2.8.2 Reguli și algoritmi de instruire Regula de instruire este o formulă matematică care specifică cum se modifică parametrii RNA, pentru a atinge obiectivul dorit. Există 4 tipuri : regula de corecție a erorii, hebbiană, de instruire competitivă și cea de tip Boltzmann. Algoritmul de instruire este un proces iterativ bazat pe o regulă de instruire. Etapele sunt: – Inițializare ponderi – Calcul ieșire neuroni – Calcul cantitate Dw cu care se modifica fiecare pondere – Modificare ponderi – Salt la etapa 2 – recalcularea ieșirilor neuronilor 2.8.3 Instruire prin minimalizarea erorii Se face cu ajutorul ecuației (17). 𝐸(𝑛)=1𝑀$𝑒3)(𝑛)3"(..+ (17)
unde: n – momentul de timp; M – numărul de neuroni pe stratul de ieșire; k – indicele neuronului de pe strat; ek(n) – eroarea neuronului k la momentul n. Pentru neuronul k, eroarea la momentul n se calculează după formula (18). 𝑒3(𝑛)=𝑑3(𝑛)−𝑦3(𝑛) (18) unde: dk(n) – ieșirea dorită pentru neuronul k la momentul n; yk(n) – ieșirea neuronului k calculată de către rețeaua neuronală, la momentul n. 2.8.4 Instruire bazată pe gradient Regula de instruire se calculează cu ajutorul formulei (19). ∆𝑤3(𝑛)=−𝜂∇𝐸(𝑛)=−𝜂𝜕𝐸(𝑛)𝜕𝑤3(𝑛) (19) unde: h – pas de instruire, subunitar. Regula Widrow-Hoff (regula Delta) se afla cu ajutorul ecuației (20). ∆𝑤3(𝑛)=−𝜂×𝑥3×𝑒3 (20) Algoritmul de gradient este: – Inițializare ponderi wkj și bias cu valori mici, subunitare; – Calcul ieșire neuroni; – Calcul eroare ek; – Calcul cantitate Dwkj cu care se modifică fiecare pondere; – Modificare ponderi w67(n+1)=w67(n)+∆w67(n); – Salt la etapa a doua – recalcularea ieșirilor neuronilor n:=n+1. 2.9 Tipuri de probleme rezolvabile cu RNA Trei tipuri de probleme rezolvabile cu RNA sunt: clasificare, aproximare de funcții, respectiv optimizare. Clasificarea reprezintă gruparea vectorilor de intrare în clase. Are un domeniu de ieșire discret. Exemple de astfel de probleme sunt recunoașterea formelor, decizie, operații de telecom, adică decodare, denomdulare, regenerare semnale. Aproximarea de funcții se face prin interpolarea perechilor ieșire-intrare, cu domeniul de ieșire continuu. Două exemple ar fi modelarea directă/inversă a unui sistem necunoscut și predicția. Optimizarea este găsirea punctului minim/maxim al unei funcții. Conține un set de ponderi pentru care diferența dintre ieșirea dorită și ieșirea rețelei este minimă, în sens statistic. Un exemplu este problema comis-voiajorului.
2.9.1 Avantaje și dezavantaje ale RNA Avantajele sunt : – Instrumente robuste de calcul; – Capabile de generalizare; – Pot modela funcții liniare/neliniare; – Realizează mapare intrări/ieșiri fără a beneficia de un model cunoscut apriori (free estimation, blind processing); – Adaptabile online/offline; – Toleranță la erori/date imprecise; – Pot rezolva sarcini complexe. Dezavantajele sunt : – Problema scalabilității : numărul mare de conexiuni reduce viteza de procesare; se preferă implementare hardware; – Abordare de tip back-box : nu pot explica rezultatul furnizat; – Instrumente sub-optimale; – Pentru rețelele recurente nu s-a demonstrat stabilitatea.
3 Implementarea soluției adoptate Această cercetare a fost concepută pentru a prezice comportamentul clienților unei bănci, caracterizat de setul de date economico-financiare introdus. Aplicația are ca scop predicția rămânerii sau nu în calitate de client al băncii, cu ajutorul unor rețelelor neuronale. Datele au fost extrase din baza de date a băncii și împărțite în trei seturi : de instruire, test si validare. La baza lucrării este aplicația de recunoaștere a modelului (Pattern recognition) din cadrul programului MATLAB. 3.1 Date Datele folosite în lucrare sunt urmatoarele : Sexul (Gender), Vârsta (Age), Regiunea (Region), Scorul de credit (Credit Score), Posesiune (Tenure), Soldul (Balance), Numărul Produselor (Product Number), Card de credit (Credit Card), Membri activi (Active Members), Salar Estimat (Estimated Salary) și Statusul final (Exited). Acestea sunt ilustrate în Figura 14.
Figura 14. Datele numerice Coloana „Gender” este alcătuită din date numerice, notația fiind „0” pentru bărbați și „1” pentru femei. Coloana „Regiuni” este alcătuită din 3 regiuni : Regiunea 1 , Regiunea 2 și Regiunea 3. Datorită faptului că programul citește 1 < 2 < 3, iar regiunile nu au o relație crescătoare sau descrescătoare, aceste date nu sunt folositoare față de rezultatul final. Din această cauză am folosit metoda One-Hot Encoding, ilustrată în Figura 15. Acest tip de convertire schimbă variabila din număr întreg în binar.
Figura 15. One Hot Encoding Liniile 3-5 ajută la „curățarea” programului. Linia 8 citește documentul Excel și returnează datele numerice în matricea „dateIni”. Metoda One Hot Encoder este scrisă în liniile 14-19. Linia 14 returnează dimensiunea matricei „dateIni” în variabile separate m și n. Linia 15 returnează o matrice „OneHotRegion” de m rânduri și 3 coloane de zerouri. Linia 16 declară că fiecare „idx” este o valoare întreaga de la 1 la 3. Linia 17 caută în matricea „dateIni”, în coloana a treia valorile 1,2 sau 3. Cu ajutorul liniei 18 se returnează valoarea „1” dacă regiunea era 1,2 sau 3 pe poziția respectivă. Linia 22 extrage a 3 a coloană și o șterge. Linia 23 creează vectorul matrice „OneHotDate” format din „OneHotRegion” și „dateIni”. Linia 24 declară „Inputs” ca fiind o matrice formată din toate rândurile și toate coloanele, mai puțin ultima din „OneHotDate”. Linia 25 declară „Targets” ca fiind toate rândurile din ultima coloană din „OneHotDate”. Liniile 26 si 27 salvează cele două variabile în două fișiere cu același nume. Coloanele „Card de credit” , „Membri activi” și „Statusul final” sunt notate cu „1” pentru „DA” și „0” pentru „NU”. 3.2 MATLAB Pentru implementarea soluției am folosit funcția „nnstart” din programul MATLAB. Acest program creat de MathWorks este un mediu interactiv care oferă explorare repetată, design și rezolvarea problemelor. „Deep Learning Toolbox” oferă cadrul pentru design-ul și implementarea rețelelor neuronale cu algoritmi, modele antrenate și aplicații. Funcția „nnstart” deschide o nouă fereastră care conține butoanele pentru „Neural Network Fitting”, „Pattern Recognition app”, “Clustering app” și “Time Series app”, ilustrată de asemena în Figura 16.
Figura 16. nnstart Am folosit opțiunea de „Pattern Recignition app” , altfel numită „Neural Network Pattern Recognition app” cu funcția „nprtool”. Aceasta este descrisă în Figura 17.
Figura 17. nprtool
Figura 18. nprtool În Figura 18 aleg datele de intrare și ieșire, salvate în directorul MATLAB în liniile 26 și 27 din Figura 15.
Figura 19. nprtool
În Figura 19 se aleg Datele Test. Datele „Validation” și „Test” sunt setate la 15% din datele originale. Cu aceste setări, vectorii de intrare și iesire sunt impărțiți la intâmplare in 3 seturi : 70% pentru antrenare ; 15% sunt utilizate pentru a valida faptul că rețeaua se generalizează și pentru a opri antrenamentul înainte de supraîncadrarea acesteia ; ultimele 15% sunt folosite ca test, complet independent de generalizarea rețelei.
Figura 20. nprtool În Figura 20 se alege numărul de neuroni din stratul ascuns. Rețeaua standard folosită este una feedforward cu 2 straturi, cu o funcție de transfer sigmoidă în stratul ascuns și o funcție de transfer softmax în stratul de ieșire. Numărul implicit de neuroni ascunși este setat la 10. Numărul de neuroni de ieșire este setat la 2. Figura 21 conține opțiunea de antrenare a rețelei.
Figura 21. nprtool
Figura 22. nntraintool Din Figura 22 se pot observa primele rezultate. Antrenarea a durat 69 de epoci. Funcția plotperform, Performance, aranjează erori versus epoci pentru antrenare, validare și testarea perfomanței înregistrării de antrenament returnată de funcția „train”. Training state sau plottrainstate complotează starea de antrenare din înregistrarea returnată de antrenare. Error Histrogram sau ploterrhist formează o histrogramă de erori. Butonul Confusion sau plotconfusion prezintă o matrice de confuzie pentru adevaratele intrări și ieșirile preconizate. Figura 23 ilustrează această funcție și arată matricea de cunfuzie pentru antrenare, testare, validare și cele 3 tipuri de date combinate. Celulele verzi reprezintă numărul de cazuri corect clasificate. Celulele roșii arată cazurile clasificate greșit. În celulele albe se pot observa cu verde procentajul de cazuri corect clasificate, iar cu roșu este procentajul de cazuri incorect clasificate. În celula gri, scris cu verde este valoarea totala a procentajului cazurilor corect clasificate, iar cu roșu cea a cazurilor incorecte. În matricea de confuzie sunt 6975 de
eșantioane. Matricele de validare și test conțin 1500 de eșantioane. În matricea care conține toate datele se pot observa 1375 de cazuri incorect clasificate din 10000.
Figura 23. plotconfusion
Figura 24. plotroc Receiver Operating Characterisitc sau plotroc trasează caracteristica de funcționare pentru fiecare clasă de ieșire. Cu cât fiecare curbă „îmbrățișează” marginile din stânga si de sus a parcelei, cu atât este clasificarea mai bună. Aceasta este ilustrată in Figura 24. Liniile albastre reprezintă curbele ROC. Aceasta este o diagramă a adevăratei rate pozitive versus rata falsă pozitiva , deoarece pragul este variat.
Figura 25. nprtool Din Figura 25 se poate reantrena rețeaua, iar din Figura 26 se pot vedea rezultatele. Butonul „Advanced script” generează codul MATLAB care poate fi utilizat pentru a reproduce toate etapele anterioare din linia de comandă. Acesta este ilustrat în Figurile 27 si 28.
Figura 26. nprtool
Figura 27. Codul generat
Figura 28. Codul generat 3.2.1 Trainlm Am schimbat funcția de transfer și am ales ‘trainlm’, care este în general cea mai rapidă. Este o funție de instruire în rețea, care actualizează valorile de greutate și BIAS în funție de optimizarea Lavenberg-Marquardt. Metoda LM admite obținerea unor estimări care nu au proprietate de optimizare, dar în multe cazuri duc la rezolvări satisfăcătoare.
În stratul ascuns am mai adăugat un strat cu 10 neuroni. Primul strat ascuns are 10 neuroni care au funcția ReLu. Această funcție am adaugat-o cu ajutorul sintaxei “net.layers{i}.transferFcn = 'poslin';”. Neuronii de pe al doilea strat ascuns au funcția tan-sigmoid. Neuronul din stratul de ieșire are funcția log-sigmoid. Rețeaua neuronală rezultată este ilustrată în Figura 29. Figura 29. Rețeaua neuronală
Figura 30. Progresul rețelei din fig. 29 Din figura 30 se poate observa că antrenarea a durat 68 de epoci.
Figura 31. Validation checks Figura 31 reprezintă cei doi parametrii “max_fail” și “epochs”. Parametrul funcție “net.trainParam.max_fail” este un parametru de antrenare, essential pentru instruirea rețelei neuronale. Trebuie sa fie un scalar întreg pozitiv. “max_fail” este numărul maxim de verificări de validare înainte ca antrenamentul sa se incheie. Acest parametru este folosit în cazul acesta de “trainscg”, “trainlm” și “trainbr”. În acest caz max_fail este 50. Parametrul “net.trainParam.epochs” reprezintă numărul maxim de epoci de antrenare, adică 1000.
În figura 32 este ilustrată o altă rețea neuronală cu 3 straturi ascunse: unul de 10 neuroni cu funcția Relu, unul de 5 neuroni și de 10 neuroni cu funcția tan-sigmoid. Neuronul de pe stratul de ieșire are funcția log-sigmoid. Figura 32. Rețeaua neuronală
Figura 33. Progresul rețelei din fig. 32 În figura 33 se vede că antrenarea a durat 62 de epoci. În figura 34 se poate observa că parametrul „max_fail” este 50, iar „epochs” este 500.
Figura 34. Validation checks 3.2.2 Trainbr Funcția „trainbr” este una de antrenare care actualizează valorile de greutate și BIAS conform optimizării Levenberg-Marquardt. Aceasta minimalizează o combinație de erori și greutăți pătrate, iar apoi determină combinația corectă astfel încât să producă o rețea care să se generalizeze bine. Procesul se numește regularizare Bayesiană. Aceasta modifică, de asemenea,
combinația liniară astfel încât la sfârșitul antrenamentului rețeaua rezultată să aibă calități de generalizare bună. Rețeaua neuronala este ilustrată în figura 35. Sunt 2 straturi ascunse de 10 neuroni, primul are funcția ReLu, iar al doilea tan-sigmoid. Stratul de ieșire are un neuron cu funcția log-sigmoid. Figura 35. Rețeaua neuronală
Figura 36. Progresul rețelei din fig. 35 Din figura 36 se observa că antrenarea a durat 65 de epoci. Parametrul „max_fail” este 1000. Rețeaua neuronală din figura 37 are 3 straturi ascunse. Primul are 10 neuroni cu funcția ReLu, al doilea are 5, iar al treilea 10 neuroni, cu funcția tan-sigmoid. Pe stratul de ieșire este un neuron cu funcția log-sigmoid. Figura 37. Rețeaua neuronală
Figura 38. Progresul rețelei din fig. 37 Antrenarea a durat 64 de epoci. Parametrul „max_fail” are valoarea 500. Acestea sunt ilustrate în figura 38.
4 Rezultate experimentale 4.1 Rețele cu două straturi ascunse 4.1.1 Trainlm Rețeaua este ilustrată în figura 29. Rezultatele după instruire se pot observa în matricele de confuzie prezentate în figura 39. Pentru setul de antrenare, care conține 7000 de eșantioane, 6130 (5370 + 760), adică 87.6% au fost clasificate corect, iar 870 (186 + 684), adică 12.4% incorect. Reamintim că există două clase, având etichetele „0” și „1”. În clasa „0”, în setul de referință (target) sunt 5370 + 186 = 5556 de eșantioane. Dintre acestea 96.7% (5370 / 5556) sunt corect clasificate, pe când 3.3% (186 / 5556) sunt eronat clasificate. În clasa „1”, în setul de referință (target) sunt 760 + 684 = 1444 de eșantioane. Dintre acestea doar 52.6% (760 / 1444) sunt corect clasificate, pe când 47.4% (684 / 1444) sunt eronat clasificate. Din punct de vedere al predicției, un total de 5370 + 684 = 6054 de eșantioane sunt considerate a fi în clasa „0”, dar dintre acestea doar 5370 sunt corect clasificate (88.7%, adică 5370 din 6054). În clasa „1”, sunt în total 186 + 760 = 946 de eșantioane. Din acestea sunt corect clasificate 760 (80.3%, adică 760 din 946). Pentru setul de validare, care conține 1500 de eșantioane, 1281 (1144 + 137), adică 85.4% au fost clasificate corect, iar 219 (162 + 57), adică 14.6% incorect. În clasa „0”, în setul de referință (target) sunt 1144 + 57 = 1201 de eșantioane. Dintre acestea 95.3% (1144 / 1201) sunt corect clasificate, pe când 4.7% (57 / 1201) sunt eronat clasificate. În clasa „1”, în setul de referință (target) sunt 137 + 162 = 299 de eșantioane. Dintre acestea doar 45.8% (137 / 299) sunt corect clasificate, pe când 54.2% (162 / 299) sunt eronat clasificate. Din punct de vedere al predicției, un total de 1144 + 162 = 1206 de eșantioane sunt considerate a fi în clasa „0”, dar dintre acestea doar 1144 sunt corect clasificate (87.6%, adică 1144 din 1206). În clasa „1” este un total de 57 + 137 = 194 de eșantioane, dintre care 137 sunt corect clasificate (70.6%, adică 137 din 194). Pentru setul de test, care conține 1500 de eșantioane, 1305 (1155 + 150), adică 87.0% au fost clasificate corect, iar 195 (144 + 51), adică 13.0% incorect. În clasa „0”, în setul de referință (target) sunt 1155 + 51 = 1206 de eșantioane. Dintre acestea 95.8% (1155 / 1206) sunt corect clasificate, pe când 4.2% (51 / 1206) sunt eronat clasificate. În clasa „1”, în setul de referință (target) sunt 150 + 144 = 294 de eșantioane. Dintre acestea doar 51.0% (150 / 294) sunt corect clasificate, pe când 49.0% (144 / 294) sunt eronat clasificate. Din punct de vedere al predicției, un total de 1155 + 144 = 1299 de eșantioane sunt considerate a fi în clasa „0”, dar dintre acestea doar 1155 sunt corect clasificate (88.9%, adică 1155 din 1299). În clasa „1” este un total de 51 + 150 = 201 de eșantioane, dintre care 150 sunt corect clasificate (74.6%, adică 150 din 201). Pentru setul cu toate datele, care conține 10000 de eșantioane, 8716 (7669 + 1047), adică 87.2% au fost clasificate corect, iar 1284 (294 + 990), adică 12.8% incorect. În clasa „0”, în setul de referință (target) sunt 7669 + 294 = 7963 de eșantioane. Dintre acestea 96.3% (7669 / 7963) sunt corect clasificate, pe când 3.7% (294 / 7963) sunt eronat clasificate. În clasa „1”, în setul de referință (target) sunt 1047 + 990 = 2037 de eșantioane. Dintre acestea doar 51.4% (1047 / 2037) sunt corect clasificate, pe când 48.6% (990 / 2037) sunt eronat clasificate. Din punct de vedere al predicției, un total de 7669 + 990 = 8659 de eșantioane sunt considerate a fi în clasa „0”, dar dintre acestea doar 7669 sunt corect clasificate (88.6%, adică 7669 din 8659). În clasa „1” este un total de 294 + 1047 = 1341 de eșantioane, dintre care 1047 sunt corect clasificate (78.1%, adică 1047 din 1341). Această rețea prezice că din 10000 de clienți ai băncii, 87.2% vor rămâne, iar 12.8% vor renunța la serviciile acesteia.
Figura 39. plotconfusion Din graficul ilustrat în figura 40 se poate cunoaște starea actuală a procesului de instruire. Axa X reprezintă numărul de iterații (68 de epoci). Axa Y indică eroarea medie pătratică (MSE) apărută pentru fiecare iterație. Curba de culoare albastră reprezintă evoluția erorii MSE pentru datele din setul de instruire, cea verde pentru datele de validare, iar cu roșu pentru datele din setul de test. Valorile erorilor sunt calculate și afișate pentru fiecare iterație din procesul de instruire. Se observă o convergență rapidă a procesului de instruire în prima parte, eroarea scăzând destul de abrupt în primele 10 iterații pentru toate seturile de date. Urmează apoi o zonă de platou cu variații foarte mici ale erorilor. De la iterația 18 începe fenomenul de supra-instruire ilustrat prin faptul că deși eroarea din setul de date de instruire continuă să scadă ușor, eroarea pentru setul datelor de test nu mai scade, dimpotrivă are loc o ușoară creștere. Aceasta semnifică faptul că rețeaua începe să-și diminueze capacitatea de generalizare, așadar cea mai bună versiune a rețelei este cea din momentul începerii supra-potrivirii, adică cea de la iterația 18.
Figura 40. plotperform În figura 41 este reprezentată histograma erorilor, realizată pe un număr de 20 de intervale. Se remarcă o distribuție a erorilor, în toate cele trei seturi de date, care confirmă o instruire de succes, marea majoritate a erorilor fiind foarte apropiate de zero.
Figura 41. ploterrhist
4.1.2 Trainbr Rețeaua este ilustrată în figura 35. Rezultatele după instruire se pot observa în matricele de confuzie prezentate în figura 42. Pentru setul de antrenare, care conține 7000 de eșantioane, 6080 (5343 + 737), adică 86.9% au fost clasificate corect, iar 920 (233 + 687), adică 13.1% incorect. Reamintim că există două clase, având etichetele „0” și „1”. În clasa „0”, în setul de referință (target) sunt 5343 + 233 = 5576 de eșantioane. Dintre acestea 95.8% (5343 / 5576) sunt corect clasificate, pe când 4.2% (233 / 5576) sunt eronat clasificate. În clasa „1”, în setul de referință (target) sunt 687 + 737 = 1424 de eșantioane. Dintre acestea doar 51.8% (737 / 1424) sunt corect clasificate, pe când 48.2% (687 / 1424) sunt eronat clasificate. Din punct de vedere al predicției, un total de 5343 + 687 = 6030 de eșantioane sunt considerate a fi în clasa „0”, dar dintre acestea doar 5343 sunt corect clasificate (88.6%, adică 5343 din 6030). În clasa „1”, sunt în total 233 + 737 = 970 de eșantioane. Din acestea sunt corect clasificate 737 (76.0%, adică 737 din 970). Pentru setul de validare, care conține 1500 de eșantioane, 1300 (1155 + 145), adică 86.7% au fost clasificate corect, iar 200 (151 + 49), adică 13.3% incorect. În clasa „0”, în setul de referință (target) sunt 1155 + 49 = 1204 de eșantioane. Dintre acestea 95.9% (1155 / 1204) sunt corect clasificate, pe când 4.1% (49 / 1204) sunt eronat clasificate. În clasa „1”, în setul de referință (target) sunt 151 + 145 = 296 de eșantioane. Dintre acestea doar 49.0% (145 / 296) sunt corect clasificate, pe când 51.0% (151 / 296) sunt eronat clasificate. Din punct de vedere al predicției, un total de 1155 + 151 = 1306 de eșantioane sunt considerate a fi în clasa „0”, dar dintre acestea doar 1155 sunt corect clasificate (88.4%, adică 1155 din 1306). În clasa „1” este un total de 49 + 145 = 194 de eșantioane, dintre care 145 sunt corect clasificate (74.7%, adică 145 din 194). Pentru setul de test, care conține 1500 de eșantioane, 1302 (1138 + 164), adică 86.1% au fost clasificate corect, iar 209 (164 + 45), adică 13.9% incorect. În clasa „0”, în setul de referință (target) sunt 1138 + 45 = 1183 de eșantioane. Dintre acestea 96.2% (1138 / 1183) sunt corect clasificate, pe când 3.8% (45 / 1183) sunt eronat clasificate. În clasa „1”, în setul de referință (target) sunt 164 + 153 = 317 de eșantioane. Dintre acestea doar 48.3% (153 / 317) sunt corect clasificate, pe când 48.3% (164 / 317) sunt eronat clasificate. Din punct de vedere al predicției, un total de 1138 + 164 = 1302 de eșantioane sunt considerate a fi în clasa „0”, dar dintre acestea doar 1138 sunt corect clasificate (87.4%, adică 1138 din 1302). În clasa „1” este un total de 45 + 153 = 198 de eșantioane, dintre care 153 sunt corect clasificate (77.3%, adică 150 din 201). Pentru setul cu toate datele, care conține 10000 de eșantioane, 8671 (7636 + 1035), adică 86.7% au fost clasificate corect, iar 1329 (327 + 1002), adică 13.3% incorect. În clasa „0”, în setul de referință (target) sunt 7636 + 327 = 7963 de eșantioane. Dintre acestea 95.9% (7636 / 7963) sunt corect clasificate, pe când 4.1% (327 / 7963) sunt eronat clasificate. În clasa „1”, în setul de referință (target) sunt 1035 + 1002 = 2037 de eșantioane. Dintre acestea doar 50.8% (1035 / 2037) sunt corect clasificate, pe când 49.2% (1002 / 2037) sunt eronat clasificate. Din punct de vedere al predicției, un total de 7636 + 1002 = 8639 de eșantioane sunt considerate a fi în clasa „0”, dar dintre acestea doar 7636 sunt corect clasificate (88.4%, adică 7636 din 8639). În clasa „1” este un total de 327 + 1035 = 1362 de eșantioane, dintre care 1035 sunt corect clasificate (76.0%, adică 1035 din 1362). Această rețea prezice că din 10000 de clienți ai băncii, 86.7% vor rămâne, iar 13.3% vor renunța la serviciile acesteia.
Figura 42. plotconfusion 4.2 Rețele cu trei straturi ascunse 4.2.1 Trainlm Rețeaua este ilustrată în figura 32. Rezultatele după instruire se pot observa în matricele de confuzie prezentate în figura 43. Pentru setul de antrenare, care conține 7000 de eșantioane, 6091 (5395 + 696), adică 87.0% au fost clasificate corect, iar 909 (188 + 721), adică 13.0% incorect. Reamintim că există două clase, având etichetele „0” și „1”. În clasa „0”, în setul de referință (target) sunt 5395 + 188 = 5583 de eșantioane. Dintre acestea 96.6% (5395 / 5583) sunt corect clasificate, pe când 3.4% (188 / 5583) sunt eronat clasificate. În clasa „1”, în setul de referință (target) sunt 721 + 696 = 1417 de eșantioane. Dintre acestea doar 49.1% (696 / 1417) sunt corect clasificate, pe când 50.9% (721 / 1417) sunt eronat clasificate. Din punct de vedere al predicției, un total de 5395 + 721 = 6116 de eșantioane sunt considerate a fi în clasa „0”, dar dintre acestea
doar 5395 sunt corect clasificate (88.2%, adică 5395 din 6116). În clasa „1”, sunt în total 188 + 696 = 884 de eșantioane. Din acestea sunt corect clasificate 696 (78.7%, adică 696 din 884). Pentru setul de validare, care conține 1500 de eșantioane, 1271 (1132 + 139), adică 84.7% au fost clasificate corect, iar 229 (182 + 47), adică 15.3% incorect. În clasa „0”, în setul de referință (target) sunt 1132 + 47 = 1179 de eșantioane. Dintre acestea 96.0% (1132 / 1179) sunt corect clasificate, pe când 4.0% (47 / 1179) sunt eronat clasificate. În clasa „1”, în setul de referință (target) sunt 182 + 139 = 321 de eșantioane. Dintre acestea doar 43.3% (139 / 321) sunt corect clasificate, pe când 56.7% (182 / 321) sunt eronat clasificate. Din punct de vedere al predicției, un total de 1132 + 182 = 1314 de eșantioane sunt considerate a fi în clasa „0”, dar dintre acestea doar 1132 sunt corect clasificate (86.1%, adică 1132 din 1314). În clasa „1” este un total de 47 + 139 = 186 de eșantioane, dintre care 139 sunt corect clasificate (74.7%, adică 139 din 194). Pentru setul de test, care conține 1500 de eșantioane, 1281 (1145 + 136), adică 85.4% au fost clasificate corect, iar 219 (56 + 163), adică 14.6% incorect. În clasa „0”, în setul de referință (target) sunt 1145 + 56 = 1201 de eșantioane. Dintre acestea 95.3% (1145 / 1201) sunt corect clasificate, pe când 4.7% (56 / 1201) sunt eronat clasificate. În clasa „1”, în setul de referință (target) sunt 163 + 136 = 299 de eșantioane. Dintre acestea doar 45.5% (136 / 299) sunt corect clasificate, pe când 54.5% (163 / 299) sunt eronat clasificate. Din punct de vedere al predicției, un total de 1145 + 163 = 1308 de eșantioane sunt considerate a fi în clasa „0”, dar dintre acestea doar 1145 sunt corect clasificate (87.5%, adică 1145 din 1308). În clasa „1” este un total de 56 + 136 = 192 de eșantioane, dintre care 136 sunt corect clasificate (70.8%, adică 136 din 192). Pentru setul cu toate datele, care conține 10000 de eșantioane, 8643 (7672 + 971), adică 86.4% au fost clasificate corect, iar 1357 (291 + 1066), adică 13.6% incorect. În clasa „0”, în setul de referință (target) sunt 7672 + 291 = 7963 de eșantioane. Dintre acestea 96.3% (7672 / 7963) sunt corect clasificate, pe când 3.7% (291 / 7963) sunt eronat clasificate. În clasa „1”, în setul de referință (target) sunt 1066 + 971 = 2037 de eșantioane. Dintre acestea doar 47.7% (971 / 2037) sunt corect clasificate, pe când 52.3% (1066 / 2037) sunt eronat clasificate. Din punct de vedere al predicției, un total de 7672 + 1066 = 8738 de eșantioane sunt considerate a fi în clasa „0”, dar dintre acestea doar 7672 sunt corect clasificate (87.8%, adică 7672 din 8738). În clasa „1” este un total de 291 + 971 = 1262 de eșantioane, dintre care 971 sunt corect clasificate (76.9%, adică 971 din 1262). Această rețea prezice că din 10000 de clienți ai băncii, 86.4% vor rămâne, iar 13.6% vor renunța la serviciile acesteia.
Figura 43. plotconfusion În figura 44 se observă starea actuală a procesului de instruire. Pe axa X putem observa numărul de iterații, adică 62. Axa Y indică eroarea medie pătratică (MSE) apărută pentru fiecare iterație. Curba de culoare albastră reprezintă evoluția erorii MSE pentru datele din setul de instruire, cea verde pentru datele de validare, iar cu roșu pentru datele din setul de test. Valorile erorilor sunt calculate și afișate pentru fiecare iterație din procesul de instruire. Se observă o convergență rapidă a procesului de instruire în prima parte, eroarea scăzând destul de abrupt în primele 10 iterații pentru toate seturile de date. Urmează apoi o zonă de platou cu variații foarte mici ale erorilor. De la iterația 12 începe fenomenul de supra-instruire ilustrat prin faptul că deși eroarea din setul de date de instruire continuă să scadă ușor, eroarea pentru setul datelor de test nu mai scade, având chiar o ușoară creștere. Aceasta semnifică faptul că rețeaua începe să-și diminueze capacitatea de generalizare, așadar cea mai bună versiune a rețelei este cea din momentul începerii supra-potrivirii, adică cea de la iterația 12.
Figura 44. plotperform 4.2.2 Trainbr Rețeaua este ilustrată în figura 37. Rezultatele după instruire se pot observa în matricele de confuzie prezentate în figura 45. Pentru setul de antrenare, care conține 7000 de eșantioane, 6059 (5300 + 759), adică 86.6% au fost clasificate corect, iar 941 (238 + 703), adică 13.4% incorect. Reamintim că există două clase, având etichetele „0” și „1”. În clasa „0”, în setul de referință (target) sunt 5300 + 238 = 5538 de eșantioane. Dintre acestea 95.7% (5300 / 5538) sunt corect clasificate, pe când 4.3% (238 / 5538) sunt eronat clasificate. În clasa „1”, în setul de referință (target) sunt 703 + 759 = 1462 de eșantioane. Dintre acestea doar 51.9% (759 / 1462) sunt corect clasificate, pe când 48.1% (703 / 1462) sunt eronat clasificate. Din punct de vedere al predicției, un total de 5300 + 703 = 6003 de eșantioane sunt considerate a fi în clasa „0”, dar dintre acestea doar 5300 sunt corect clasificate (88.3%, adică 5300 din 6003). În clasa „1”, sunt în total 238 + 759 = 997 de eșantioane. Din acestea sunt corect clasificate 759 (76.1%, adică 759 din 997). Pentru setul de validare, care conține 1500 de eșantioane, 1292 (1156 + 136), adică 86.1% au fost clasificate corect, iar 208 (152 + 56), adică 13.9% incorect. În clasa „0”, în setul de referință (target) sunt 1156 + 56 = 1212 de eșantioane. Dintre acestea 95.4% (1156 / 1212) sunt corect clasificate, pe când 4.6% (56 / 1212) sunt eronat clasificate. În clasa „1”, în setul de referință (target) sunt 152 + 136 = 288 de eșantioane. Dintre acestea doar 47.2% (136 / 288) sunt corect clasificate, pe când 52.8% (152 / 288) sunt eronat clasificate. Din punct de vedere al predicției, un total de 1156 + 152 = 1308 de eșantioane sunt considerate a fi în clasa „0”, dar dintre acestea doar 1156 sunt corect clasificate (88.4%, adică 1156 din 1308). În clasa „1” este un total de 56 + 136 = 192 de eșantioane, dintre care 136 sunt corect clasificate (70.8%, adică 136 din 194). Pentru setul de test, care conține 1500 de eșantioane, 1300 (1158 + 142), adică 86.7% au fost clasificate corect, iar 200 (145 + 55), adică 13.3% incorect. În clasa „0”, în setul de referință (target) sunt 1158 + 55 = 1213 de eșantioane. Dintre acestea 95.5% (1158 / 1213) sunt corect clasificate, pe când 4.5% (55 / 1213) sunt eronat clasificate. În clasa „1”, în setul de referință (target) sunt 145 + 142 = 287 de eșantioane. Dintre acestea doar 49.5% (142 / 287) sunt corect clasificate, pe când
50.5% (145 / 287) sunt eronat clasificate. Din punct de vedere al predicției, un total de 1158 + 145 = 1303 de eșantioane sunt considerate a fi în clasa „0”, dar dintre acestea doar 1158 sunt corect clasificate (88.9%, adică 1158 din 1303). În clasa „1” este un total de 55 + 142 = 197 de eșantioane, dintre care 142 sunt corect clasificate (72.1%, adică 142 din 197). Pentru setul cu toate datele, care conține 10000 de eșantioane, 8651 (7614 + 1037), adică 86.5% au fost clasificate corect, iar 1349 (349 + 1000), adică 13.5% incorect. În clasa „0”, în setul de referință (target) sunt 7614 + 349 = 7963 de eșantioane. Dintre acestea 95.6% (7614 / 7963) sunt corect clasificate, pe când 4.4% (349 / 7963) sunt eronat clasificate. În clasa „1”, în setul de referință (target) sunt 1000 + 1037 = 2037 de eșantioane. Dintre acestea doar 50.9% (1037 / 2037) sunt corect clasificate, pe când 49.1% (1000 / 2037) sunt eronat clasificate. Din punct de vedere al predicției, un total de 7614 + 1000 = 8614 de eșantioane sunt considerate a fi în clasa „0”, dar dintre acestea doar 7614 sunt corect clasificate (88.4%, adică 7614 din 8614). În clasa „1” este un total de 349 + 1037 = 1386 de eșantioane, dintre care 1037 sunt corect clasificate (74.8%, adică 1037 din 1386). Această rețea prezice că din 10000 de clienți ai băncii, 86.5% vor rămâne, iar 13.5% vor renunța la serviciile acesteia.
Figura 45. plotconfusion
Se poate observa că cea mai eficientă rețea neuronala construită este cea cu două straturi ascunse, fiecare cu 10 neuroni, care are ca funcție de transfer „trainlm”. Aceasta este ilustrată în figura 29. Rețeaua cu cele mai slabe rezultate este prezentată în figura 32. Aceasta are 3 straturi ascunse, două cu 10 neuroni si unul cu 5, cu funcția de transfer „trainlm”. Tot odată este evident faptul că rezultatele nu au diferențe foarte mari între ele, performanțele rețelelor fiind foarte apropiate.
5 Concluzii În cadrul acestei lucrări au fost prezentate abilitățile de predicție ale unor rețele neuronale cu privire la comportamentul clienților unei bănci. Rețele neuronale se aplică în foarte multe domenii, zona de utilizare fiind foarte diversificată, de la medicină până la bănci, finanțe sau divertisment. Prin crearea și antrenarea corectă a rețelelor se pot efectua predicții foarte apropiate de realitate, cu ajutorul cărora se pot lua decizii importante. În urma rulării aplicației construite, studiul arată că este posibil ca un procent mare de clienți să nu renunțe la serviciile băncii.
Bibilografie [1] https://blog.statsbot.co/neural-networks-for-beginners-d99f2235efca [2] https://medium.com/@jayeshbahire/real-world-applications-of-artificial-neural-networks-a6a6bc17ad6a [3] https://robots.net/tech-reviews/deep-learning-applications/ [4] http://www.bel.utcluj.ro/dce/didactic/sisd/SISD_curs_6_Retele_Neuronale_Artificiale.pdf [5] https://ro.wikipedia.org/wiki/Sistem_nervos [6] Leszek Rutkowski, Computational Intelligence Methods and TechniqueS, Springer-Verlag Berlin Heidelberg, 2008 [7] https://www.descopera.org/cum-functioneaza-neuronul-biologic/ [8] https://www.researchgate.net/publication/332129835_Retele_neuronale_convolutionale_Big_Data_si_Deep_Learning_in_analiza_automata_de_imagini [9] http://www.master-taid.ro/Cursuri/MLAV_files/Retele%20Convolutionale%20-%20Convolutional%20Neural%20Networks%20(CNNs).html [10] Sursa imaginii : https://ujjwalkarn.me/2016/08/11/intuitive-explanation-convnets/
Copyright Notice
© Licențiada.org respectă drepturile de proprietate intelectuală și așteaptă ca toți utilizatorii să facă același lucru. Dacă consideri că un conținut de pe site încalcă drepturile tale de autor, te rugăm să trimiți o notificare DMCA.
Acest articol: Figura 1. Neuronul biologic [607869] (ID: 607869)
Dacă considerați că acest conținut vă încalcă drepturile de autor, vă rugăm să depuneți o cerere pe pagina noastră Copyright Takedown.
