curs 1- introducere în domeniul învățării automate · curs 1- introducere în domeniul...

21
1 Curs 1- Introducere în domeniul învățării automate Din momentul în care calculatoarele au fost inventate, s-a pus întrebarea dacă acestea ar putea fi făcut să învețe. Dacă am putea înțelege cum să le programăm să învețe - adică să se îmbunătățească în mod automat cu experiență - impactul ar fi dramatic. Să ne imaginăm cum calculatoarele învață pe baza înregistrărilor medicale care tratamente sunt cele mai eficiente pentru anumite boli, sau programe care învață din experiență să optimizeze costurile energiei unei case pe baza modelelor specifice de utilizare ale locuitorilor casei, sau învățarea de către personalului de asistență software a intereselor utilizatorilor săi astfel încât să poată evidenția aspectele relevante din ziarele online. O înțelegere a modului în care putem face calculatoarele să învețe ar deschide multe posibilităţi noi de utilizare ale computerelor. Mai mult. o înțelegere profundă a algoritmilor folosiţi pentru procesarea informațiilor folosiţi în învățarea automată ar putea duce la o mai bună înțelegere a abilitățile de învățare umane (și dizabilități). Încă nu știm cum să facem calculatoarele să învețe aproape la fel de bine cum oamenii învață. Cu toate acestea, au fost inventaţi algoritmi care sunt eficienți pentru anumite tipuri de probleme de învățare și o înțelegere teoretică a învățării începe să se contureze. Multe programe şi aplicaţii comerciale au fost dezvoltate astfel încât să conţină unele tipuri de învăţare. Pentru probleme precum recunoașterea vorbirii, algoritmi bazați pe învăţarea automată depășește toate celelalte abordări care au fost încercate până în prezent. În domeniul cunoscut sub numele de date mining, algoritmi de învățare mașină sunt utilizaţi în mod obișnuit pentru a descoperi cunoștințe valoroase din bazele de date comerciale mari care conțin diferite înregistrări cum ar fi date întreținere a echipamentelor, cereri de împrumut, tranzacții financiare, înregistrări medicale și altele asemenea. Pe măsură ce înțelegerea computerelor continuă să se maturizeze, pare inevitabil ca învățarea automată va juca un rol tot mai important în domeniul informaticii și a tehnologiei informaţiei. Câteva realizări specifice oferă o privire a stadiului actual al învăţării automate: au fost dezvoltate programe pentru recunoaşterea automată a vorbirii, pentru prezicerea ratei de recuperare a pacienților cu pneumonie, detectarea utilizării frauduloase a cardurilor de credit, conducerea autonomă a vehiculelor, sau să joace jocuri, cum ar fi tablele, la nivelul care se apropie de performanța campionilor mondiali umani. Au fost dezvoltate rezultate teoretice care caracterizează procesul de învăţare, astfel a fost analizat raportul dintre numărul de exemple de antrenare, numărul de ipoteze luate în considerare, și eroarea obţinută. Încep să apară modele ale învățării umane şi animale și să se înțeleagă relația lor cu algoritmii de învățare automată. Învăţarea automată este o ramură a inteligenţei artificiale care se ocupă cu proiectarea şi dezvoltarea de algoritmi şi metode care permit sistemelor informatice să înveţe. Pe baza observaţiilor şi a experienţei, sistemele informatice pot învăţa să facă previziuni exacte şi să ia decizii optime, așa cum ilustrează figura de mai jos.

Upload: others

Post on 18-Jan-2020

39 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: Curs 1- Introducere în domeniul învățării automate · Curs 1- Introducere în domeniul învățării automate Din momentul în care calculatoarele au fost inventate, s-a pus

1

Curs 1- Introducere în domeniul învățării automate

Din momentul în care calculatoarele au fost inventate, s-a pus întrebarea dacă acestea ar putea

fi făcut să învețe. Dacă am putea înțelege cum să le programăm să învețe - adică să se

îmbunătățească în mod automat cu experiență - impactul ar fi dramatic. Să ne imaginăm cum

calculatoarele învață pe baza înregistrărilor medicale care tratamente sunt cele mai eficiente pentru

anumite boli, sau programe care învață din experiență să optimizeze costurile energiei unei case

pe baza modelelor specifice de utilizare ale locuitorilor casei, sau învățarea de către personalului

de asistență software a intereselor utilizatorilor săi astfel încât să poată evidenția aspectele

relevante din ziarele online. O înțelegere a modului în care putem face calculatoarele să învețe ar

deschide multe posibilităţi noi de utilizare ale computerelor. Mai mult. o înțelegere profundă a

algoritmilor folosiţi pentru procesarea informațiilor folosiţi în învățarea automată ar putea duce la

o mai bună înțelegere a abilitățile de învățare umane (și dizabilități).

Încă nu știm cum să facem calculatoarele să învețe aproape la fel de bine cum oamenii învață.

Cu toate acestea, au fost inventaţi algoritmi care sunt eficienți pentru anumite tipuri de probleme

de învățare și o înțelegere teoretică a învățării începe să se contureze. Multe programe şi aplicaţii

comerciale au fost dezvoltate astfel încât să conţină unele tipuri de învăţare. Pentru probleme

precum recunoașterea vorbirii, algoritmi bazați pe învăţarea automată depășește toate celelalte

abordări care au fost încercate până în prezent. În domeniul cunoscut sub numele de date mining,

algoritmi de învățare mașină sunt utilizaţi în mod obișnuit pentru a descoperi cunoștințe valoroase

din bazele de date comerciale mari care conțin diferite înregistrări cum ar fi date întreținere a

echipamentelor, cereri de împrumut, tranzacții financiare, înregistrări medicale și altele asemenea.

Pe măsură ce înțelegerea computerelor continuă să se maturizeze, pare inevitabil ca învățarea

automată va juca un rol tot mai important în domeniul informaticii și a tehnologiei informaţiei.

Câteva realizări specifice oferă o privire a stadiului actual al învăţării automate: au fost

dezvoltate programe pentru recunoaşterea automată a vorbirii, pentru prezicerea ratei de

recuperare a pacienților cu pneumonie, detectarea utilizării frauduloase a cardurilor de credit,

conducerea autonomă a vehiculelor, sau să joace jocuri, cum ar fi tablele, la nivelul care se apropie

de performanța campionilor mondiali umani.

Au fost dezvoltate rezultate teoretice care caracterizează procesul de învăţare, astfel a fost

analizat raportul dintre numărul de exemple de antrenare, numărul de ipoteze luate în considerare,

și eroarea obţinută. Încep să apară modele ale învățării umane şi animale și să se înțeleagă relația

lor cu algoritmii de învățare automată.

Învăţarea automată este o ramură a inteligenţei artificiale care se ocupă cu proiectarea şi

dezvoltarea de algoritmi şi metode care permit sistemelor informatice să înveţe. Pe baza

observaţiilor şi a experienţei, sistemele informatice pot învăţa să facă previziuni exacte şi să ia

decizii optime, așa cum ilustrează figura de mai jos.

Page 2: Curs 1- Introducere în domeniul învățării automate · Curs 1- Introducere în domeniul învățării automate Din momentul în care calculatoarele au fost inventate, s-a pus

2

Figură 1. Repezentare schematică a unui sistem de învăţare automată.

Învăţarea automată este domeniul cel mai provocator al inteligenţei artificiale şi, în acelaşi timp,

cel mai rezistent încercărilor de automatizare completă. Învățarea automata este în mod inerent un

domeniu multidisciplinar. Se bazează pe rezultatele obținute în diverse domenii, cum ar fi:

inteligența artificială, probabilităţi și statistică, teoria complexității computaționale, teoria

controlului, teoria informației, filosofie, psihologie, neurobiologie, etc.

Terminologie

În limba engleză termenul folosit este: Machine learning. În limba română se folosesc mai mule

traduceri, următorii termeni fiind similari:

• Învățare automată

• Instruire automată

• Mașini instruibile si recunoașterea formelor (MIRF)

Ce este învăţarea automată?

S-au dat multe definiţii ale procesului de învăţare, una dintre cele mai adecvate definiţii din

punct de vedere al inteligenţei artificiale fiind următoarea:

"Orice schimbare într-un sistem, care permite sistemului îmbunătăţirea performanţelor în

rezolvarea ulterioară a aceleiaşi probleme sau a unei probleme similare, reprezintă un proces de

învăţare".

A învăţa înseamnă a câştiga cunoştinţe, înţelegere sau pricepere prin studiu, instruire sau

experienţă. Maşini instruibile sunt mașini care învață.

Învăţare = Îmbunătăţirea în raport cu o măsură a performanţei (P) a realizării unei sarcini (S)

odată cu experienţa (E)

Scopul învățării automate este de a construi sisteme de calcul care se pot adapta şi pot învăţa din

experienţa lor. De exemplu, un program de calculator care învață să joace dame-şah îşi poate

îmbunătăți performanța măsurată prin abilitatea de a câștiga, prin experiența obținută prin jocul

efectiv împotriva adversarilor umani.

Page 3: Curs 1- Introducere în domeniul învățării automate · Curs 1- Introducere în domeniul învățării automate Din momentul în care calculatoarele au fost inventate, s-a pus

3

În general, pentru a avea o problemă de învățare bine definită, trebuie să identificăm următoarele

trei caracteristici:

• Clasa de sarcini care urmează să se întreprindă

• Performanţa care urmează să se îmbunătăţească

• Sursa experienţei

Putem specifica mai multe probleme de învățare în acest mod, ca de exemplu, învățarea

recunoaşterii cuvintele scrise de mână, sau învățarea conducerii unui automobil robotizat în mod

autonom.

Exemple

Problema de învățare a jocului de dame-şah:

• Sarcina S: jocul de dame

• Măsurarea performanței P: procentul de jocuri câștigate împotriva adversarilor

• Experiența E: jocurile împotriva diverşilor adversari

Problema de recunoaștere a scrisului de mână:

• Sarcina S: recunoașterea și clasificarea cuvintelor scrise de mână în imagini

• Măsurarea performanței P: procentul cuvintelor clasificate corect

• Experiența folosită pentru instruire E: o bază de date cu cuvinte scrise de mână cu

clasificări date

Problema conducerii automate a unui autovehicul:

• Sarcina S: conducerea pe autostrăzi publice cu patru benzi, utilizând senzori de viziune

• Măsurarea performanței P: distanța medie parcursă înainte de face o eroare (așa cum este

evaluat de către supraveghetorul uman)

• Experiența folosită pentru instruire E: o secvență de imagini și comenzi de direcție

înregistrate observând un șofer uman

Tehnicile de învăţare automată sunt algoritmi ce permit maşinilor să-şi îmbunătăţească

performanţele în îndeplinirea unei anumite activităţi prin experienţă. Domeniul învăţării automate

se ocupă cu modul de construire a programelor de calculator care se autoperfecţionează prin

experienţă. Învăţarea automată învaţă structurile şi regulile existente şi descoperă noi înţelesuri şi

structuri.

Algoritmii de învăţare automată descoperă relaţiile dintre variabilele unui sistem (intrări, ieşiri,

variabile ascunse) direct din eşantioane ale sistemului

Page 4: Curs 1- Introducere în domeniul învățării automate · Curs 1- Introducere în domeniul învățării automate Din momentul în care calculatoarele au fost inventate, s-a pus

4

Figură 2. Reprezentare schematică a unui sistem de învăţare automată în care se evidenţieză intrările şi ieşirile sistemului.

Abordarea

Exemple de probleme pentru care scrierea de programe pentru a rezolva această problemă este

dificilă:

• Recunoașterea unui obiect tridimensional dintr-un punct de vedere nou în iluminat nou

deoarece nu știm modul în care s-a făcut această recunoaștere în creierul nostru și chiar

dacă am avea o idee despre cum să scriem un astfel de program, programul s-ar putea să

fie extrem de complex.

• Calcularea probabilităţii ca o tranzacție pe cartea de credit sa fie frauduloasă deoarece

nu exista reguli care să fie atât de simple și de încredere care să ne indice lucrul acesta.

Ar trebui să combinam un număr foarte mare de reguli slabe. Frauda este o țintă în

mișcare. Programul are nevoie sa se schimbe continuu.

În loc sa scriem un program pentru fiecare sarcină specifică, colectăm o mulțime de exemple

care specifică o ieșire corectă pentru o anumită intrare. Un algoritm de învățare automată ia aceste

exemple și produce un program care rezolvă problema. Programul elaborat de algoritmul de

învățare poate arăta foarte diferit de un program tipic scris de mână. Acesta poate conține milioane

de numere. Dacă o facem corect, programul merge bine pentru cazurile noi, precum și pentru cele

pe care l-am antrenat. În cazul în care datele se schimbă, programul se poate schimba şi el prin

antrenarea pe noi date. Capacități masive de calcul sunt acum mai ieftine decât costul necesar

pentru a scrie un program cu sarcini specifice.

Un sistem de învăţare automată poate fi văzut ca fiind format din cinci componente principale, așa

cum ilustrează figura de mai jos:

Figură 3. Reprezentare schematică a unui sistem de învăţare automată în care se evidenţează componentele acestuia.

Page 5: Curs 1- Introducere în domeniul învățării automate · Curs 1- Introducere în domeniul învățării automate Din momentul în care calculatoarele au fost inventate, s-a pus

5

Algoritmii de ML nu sunt necesari atunci când relaţiile dintre toate variabilele sistemului

(intrare, ieşire, variabile ascunse) sunt complet cunoscute, dar acest lucru nu e valabil pentru

aproape nici un sistem real.

Motivația învățării automate

Învățarea automată este motivată de existența unei cantitate impresionante de date disponibile

și de creșterea puterii de calcul. Acestea au dus la progrese în algoritmii dezvoltați și în teorie.

Învățarea automată mai este motivată de următoarele:

• Unele acţiuni (sarcini) pot fi specificate doar prin date sau exemple de antrenare. De

exemplu: recunoaşterea feţelor umane într-o poză.

• Expertiza umană poate fi rară şi/sau foarte scumpă.

• Cantitatea de cunoştinţe poate fi prea mare pentru o codificare explicită de către oameni.

• Este necesară modelarea şi estimarea unor parametri ascunşi.

• Adesea sunt disponibile doar date din măsurători.

• Puterea de calcul este în continuă creştere.

• Cantitatea de date disponibile şi capacitatea de stocare este tot mai mare.

Scurtă istorie a învăţării automate

• Anii 1950:

o Primul program de jucat dame-şah

• Anii 1960:

o Primele progrese în recunoaşterea formelor (Pattern recognition)

• Anii 1970:

o Reguli de prognoză bazate pe spectrometria de masă

o Reguli pentru încheierea jocului de şah

o Reguli de diagnostic

• Anii 1980: Progrese (câştiguri)

o Teoria învăţării

o Algoritmi de învăţare simbolică

o Algoritmi de învăţare conexionistă

o Grupare (Clustering)

Page 6: Curs 1- Introducere în domeniul învățării automate · Curs 1- Introducere în domeniul învățării automate Din momentul în care calculatoarele au fost inventate, s-a pus

6

o Învăţare bazată pe explicaţii

o Învăţare inductivă ghidată de cunoştinţe

o Algoritmi genetici

• Anii 1990: Maturitate

o Data mining

o Învăţare în grup (Ensemble learning: bagging, boosting, etc.)

o Învăţare cu întărire

o Analize teoretice

• Anii 2000

o Maşini cu suport vectorial (SVM)

o Metode kernel

o Modele grafice

o Învăţare statistică relaţională

o Învăţare prin transfer

o Clasificare colectivă şi ieşiri structurate

o Aplicaţii pentru sisteme de calcul

▪ Compilatoare

▪ Depanare

▪ Grafică

▪ Securitate (detecţia intruziunilor, viruşilor şi viermilor)

o Managementul email-ului

o Asistenţi personalizaţi care învaţă

o Învăţare în robotică şi vedere artificială

Aplicații

Nişe pentru învăţarea automată:

• Data Mining: se folosesc date istorice pentru îmbunătăţirea deciziilor. Înregistrări

medicale → cunoştinţe medicale

• Aplicaţii software pe care nu le putem programa direct: conducerea autonomă a

vehiculelor, recunoaşterea vorbirii

Page 7: Curs 1- Introducere în domeniul învățării automate · Curs 1- Introducere în domeniul învățării automate Din momentul în care calculatoarele au fost inventate, s-a pus

7

• Programe care se auto – personalizează: cititoare de ziare care învaţă domeniile de

interes ale utilizatorilor

În medicină aplicații sunt în:

- Analiza imaginilor

- Diagnostic și prognoză

- Descoperirea de noi medicamente

Diferite aplicații există în domeniul securității:

- Recunoașterea feței

- Verificarea semnăturii, a amprentelor, irisului, ADN-ului

Recunoașterea modelelor si a paternurilor:

- Obiecte în scene reale

- Identități faciale sau expresii faciale

- Cuvinte vorbite

Recunoașterea anomaliilor:

- Secvențe neobișnuite de tranzacții pe cărțile de credit

- Modele neobișnuite ale cititoarelor de senzori într-o centrală nucleară

Predicție:

- Prețurile acțiunilor viitoare sau ratele de schimb valutar

- Identificarea preferinţelor spectatorilor în domeniul cinematografiei

Exemple

Clasificarea emailurilor: spam vs non-spam

• Datele conțin 4601 emailuri primite de către o persoană.

• Fiecare email e clasificat ca fiind spam sau nu.

• Scop: crearea unui filtru automat pentru detectarea spam-urilor

• Date de intrare: frecvențele relative ale celor mai frecvente 57 de cuvinte și semne de

punctuație ce apar în aceste emailuri

Page 8: Curs 1- Introducere în domeniul învățării automate · Curs 1- Introducere în domeniul învățării automate Din momentul în care calculatoarele au fost inventate, s-a pus

8

Identificarea cifrelor scrise de mână din codurile poștale scrise pe scrisori.

Pentru acest exemplu se creează o bază de date conținând mai multe exemple pentru fiecare

cifră, așa cum este ilustrat și in figura de mai jos.

Este foarte greu de spus ce e un 2 așa cum reiese și din imaginile de mai jos:

Legătura dintre venit unei persoane și alte caracteristici, printre care nivelul de educație,

vârsta, etc

Așa cum reiese și din graficele de mai jos, cel mai mare venit se obține între 40-60 de ani, există

o tendință de creștere a venitului în cursul anilor 2003-2006 și venitul crește o dată cu creșterea

nivelului de educație.

Page 9: Curs 1- Introducere în domeniul învățării automate · Curs 1- Introducere în domeniul învățării automate Din momentul în care calculatoarele au fost inventate, s-a pus

9

(sursa: Gareth James, Daniela Witten, Trevor Hastie and Robert Tibshirani. An Introduction to

Statistical Learning with Applications in R. Springer-Verlag, 2013)

Netflix

• Competiție începută în oct. 2006. Datele de antrenare sunt formate din rating-uri pentru

18.000 de filme de la 400.000 de utilizatori. Fiecare rating este un număr între 1 și 5.

• Datele de antrenare sunt împrăștiate (aprox. 98% din rating-uri lipsesc)

• Obiectiv: predicții pe un set de date care nu apar în datele de antrenare (1 milion de perechi

(utilizator, film))

• Premiu de 1 milion de dolari pentru o îmbunătățire cu 10% față de metoda curentă folosită

de Netflix

Page 10: Curs 1- Introducere în domeniul învățării automate · Curs 1- Introducere în domeniul învățării automate Din momentul în care calculatoarele au fost inventate, s-a pus

10

Competiții Kaggle

Site-ul: www.kaggle.com găzduiește diferite competiții pentru rezolvarea unor probleme care

reprezintă aplicații ale învățării automate

Exemplu: Diagnosticarea bolilor cardiace

• Datele de antrenare conțin mai multe imagini care reprezintă RMN-uri ale inimii

• Obiectiv: dezvoltarea unui algoritm care pe baza RMN-ului cardiac determină automat și

cu precizie volumul de sânge dintr-un ciclu cardiac

Page 11: Curs 1- Introducere în domeniul învățării automate · Curs 1- Introducere în domeniul învățării automate Din momentul în care calculatoarele au fost inventate, s-a pus

11

Laborator

Primul proiect de învăţarea automată în Python – „Hello world-ul” învăţării automate

În acest laborator veţi testa pas cu pas următoarele:

1. Descărcați și instalați Python și obțineți pachetele cele mai utile pentru învățarea automată

în Python.

2. Încărcați un set de date și înțelegeți structura sa folosind rezumate statistice și vizualizarea

datelor.

3. Creați 6 modele de învățare automată, alegeți cele mai bune și construiți încrederea că

precizia este fiabilă.

1. Instalare Python

Python este un limbaj interpretat popular și puternic. Spre deosebire de Matlab, de

exemplu, Python este un limbaj și o platformă completă pe care le puteți utiliza atât pentru

cercetare și dezvoltare, cât și pentru dezvoltarea sistemelor de producție.

Există, de asemenea, o mulțime de module și biblioteci pe care puteți alege, fiecare oferind

mai multe funcţii şi proceduri.

Pachete Python utile pentru învăţarea automată:

• scipy

• numpy

• matplotlib

• pandas

• sklearn

Există multe modalități de a instala aceste biblioteci. O varianta este să alegeți o metodă,

apoi să fiți consecvenţi în instalarea fiecărei biblioteci.

Link-uri utile:

• www.python.org - versiunea: Python 3.3 sau Python 2.7

• www.anaconda.com - distribuţie de Python

• https://jupyter.org - o aplicație web open-source care vă permite să creați și să partajați

documente care conțin cod viu, ecuații, vizualizări și text narativ

1.2 Porniți Python și verificați versiunile pachetelor instalate

# Python version

import sys

print('Python: {}'.format(sys.version))

# scipy

Page 12: Curs 1- Introducere în domeniul învățării automate · Curs 1- Introducere în domeniul învățării automate Din momentul în care calculatoarele au fost inventate, s-a pus

12

import scipy

print('scipy: {}'.format(scipy.__version__))

# numpy

import numpy

print('numpy: {}'.format(numpy.__version__))

# matplotlib

import matplotlib

print('matplotlib: {}'.format(matplotlib.__version__))

# pandas

import pandas

print('pandas: {}'.format(pandas.__version__))

# scikit-learn

import sklearn

print('sklearn: {}'.format(sklearn.__version__))

Exemplu de afişare:

Comparați ceea ce e afişat mai sus cu versiunile dvs. În mod ideal, versiunile dvs. ar trebui să se

potrivească sau să fie mai recente. API-urile nu se schimbă repede, așa că nu e o problemă dacă

aveţi instalate câteva versiuni mai vechi.

2. Încărcarea setului de date

Vom folosi setul de date de Flori de iris. Acest set de date este renumit pentru că este folosit ca

set de date "hello world" în învățarea automată.

Link: https://archive.ics.uci.edu/ml/datasets/iris

Setul de date conține 150 de observații ale florilor de iris. Există patru coloane de măsurători

ale florilor în centimetri:

- Lungimea şi lăţimea petalei

- Lungimea şi lăţimea sepalei

A cincea coloană este specia de floare observată, una dintre cele 3 variante: Iris Versicolor, Iris

Setosa, Iris Verginica.

Page 13: Curs 1- Introducere în domeniul învățării automate · Curs 1- Introducere în domeniul învățării automate Din momentul în care calculatoarele au fost inventate, s-a pus

13

2.1 Importăm bibliotecile necesare

# Load libraries

import pandas

from pandas.plotting import scatter_matrix

import matplotlib.pyplot as plt

from sklearn import model_selection

from sklearn.metrics import classification_report

from sklearn.metrics import confusion_matrix

from sklearn.metrics import accuracy_score

from sklearn.linear_model import LogisticRegression

from sklearn.tree import DecisionTreeClassifier

from sklearn.neighbors import KNeighborsClassifier

from sklearn.discriminant_analysis import LinearDiscriminantAnalysis

from sklearn.naive_bayes import GaussianNB

from sklearn.svm import SVC

Totul ar trebui să se încarce fără eroare. Dacă aveți o eroare, opriți-vă.

2.2 Importarea setului de date

Putem încărca datele direct din depozitul UCI Machine Learning.

Folosim biblioteca panda pentru a încărca datele. Vom utiliza, de asemenea, panda pentru

explora datele atât cu statistici descriptive, cât și cu vizualizarea datelor.

Specificăm numele fiecărei coloane la încărcarea datelor. Acest lucru ne va ajuta mai târziu

când vom explora datele.

# Load dataset

url=

"https://raw.githubusercontent.com/jbrownlee/Datasets/master/iris.csv"

names = ['sepal-length', 'sepal-width', 'petal-length', 'petal-width',

Page 14: Curs 1- Introducere în domeniul învățării automate · Curs 1- Introducere în domeniul învățării automate Din momentul în care calculatoarele au fost inventate, s-a pus

14

'class']

dataset = pandas.read_csv(url, names=names)

Dacă nu aveți probleme de rețea, puteți descărca fișierul iris.csv în directorul dvs. de lucru și

îl puteți încărca utilizând aceeași metodă, schimbând adresa URL în numele fișierului local.

3. Rezumaţi setul de date

În acest pas, vom examina datele în câteva moduri diferite:

- Dimensiunile setului de date.

- Ne vom uita la datele in sine.

- Rezumatul statistic al tuturor atributelor.

- Defalcarea datelor în funcţie de variabila de clasă.

3.1 Dimensiunea setului de date.

Putem afla rapid despre câte instanțe (rânduri) și câte atribute (coloane) conțin datele cu

comanda shape.

# shape

print(dataset.shape)

Obţinem 150 de instanţe şi 5 atribute.

3.2 Vizualizarea setului de date

# head

print(dataset.head(20))

Vizualizăm primele 20 de rânduri din setul de date

Page 15: Curs 1- Introducere în domeniul învățării automate · Curs 1- Introducere în domeniul învățării automate Din momentul în care calculatoarele au fost inventate, s-a pus

15

3.3 Rezumatul statistic al datelor

# descriptions

print(dataset.describe())

Putem vedea că toate valorile numerice au aceeași scală (centimetri) și intervale similare între 0

și 8 centimetri.

3.4 Distribuţia de clasă

Să aruncăm o privire asupra numărului de instanțe (rânduri) care aparțin fiecărei clase. Putem

vedea acest lucru ca un număr absolut.

# class distribution

print(dataset.groupby('class').size())

Page 16: Curs 1- Introducere în domeniul învățării automate · Curs 1- Introducere în domeniul învățării automate Din momentul în care calculatoarele au fost inventate, s-a pus

16

4. Vizualizarea grafică a datelor

Avem acum o idee generală despre date. Trebuie să extindem acest lucru cu câteva vizualizări

grafice.

Vom analiza două tipuri de grafice:

- Grafice univariate pentru a înțelege mai bine fiecare atribut.

- Grafice multivariate pentru a înțelege mai bine relațiile dintre atribute.

4.1 Grafice univariate

# box and whisker plots

dataset.plot(kind='box', subplots=True, layout=(2,2), sharex=False,

sharey=False)

plt.show()

Acest grafic ne oferă o idee mult mai clară despre distribuția atributelor:

De asemenea, putem crea o histogramă a fiecărei variabile de intrare pentru a obține o

idee despre distribuția acesteia.

# histograms

dataset.hist()

plt.show()

Page 17: Curs 1- Introducere în domeniul învățării automate · Curs 1- Introducere în domeniul învățării automate Din momentul în care calculatoarele au fost inventate, s-a pus

17

Se pare că două dintre variabilele de intrare au o distribuție Gaussiană. Este util să ştim

lucrul acesta pentru că putem folosi algoritmi care pot exploata această ipoteză.

4.2 Grafice multivariate

Acum ne putem uita la interacțiunile dintre variabile.

În primul rând, să aruncăm o privire la scatterploturile tuturor perechilor de atribute. Acest lucru

poate fi util pentru a identifica relațiile structurate între variabilele de intrare.

# scatter plot matrix

scatter_matrix(dataset)

plt.show()

Page 18: Curs 1- Introducere în domeniul învățării automate · Curs 1- Introducere în domeniul învățării automate Din momentul în care calculatoarele au fost inventate, s-a pus

18

Observăm gruparea diagonală a unor perechi de atribute. Acest lucru sugerează o

corelație înaltă și o relație previzibilă.

5. Evaluarea unor algoritmi de învăţare automata

Acum vom crea câteva modele de date și vom estima precizia acestora pe date nevăzute.

Pentru aceasta vom face următoarele:

- Separăm un set de date de validare.

- Utilizăm validarea încrucișată de 10 ori.

- Construim 5 modele diferite pentru a prezice speciile din măsurătorile de flori

- Selectăm cel mai bun model.

5.1 Crearea unui set de date de validare

Vrem să știm cât de bun este modelul pe care l-am creat.

Mai târziu, vom folosi metode statistice pentru a estima corectitudinea modelelor pe care le

creăm pe date nevăzute. De asemenea, dorim o estimare mai concretă a preciziei celui mai bun

model privind datele nevăzute, evaluându-l pe date reale nevăzute.

Asta înseamnă că vom reține câteva date pe care algoritmii nu le vor vedea și vom folosi aceste

date pentru a obține o idee independentă despre cât de corect este cel mai bun model.

Vom împărți setul de date încărcate în două, din care 80% vom folosi pentru a instrui modelele

noastre și 20% pe care le vom reține ca set de date de validare.

# Split-out validation dataset

array = dataset.values

X = array[:,0:4] Y = array[:,4]

Page 19: Curs 1- Introducere în domeniul învățării automate · Curs 1- Introducere în domeniul învățării automate Din momentul în care calculatoarele au fost inventate, s-a pus

19

validation_size = 0.20

seed = 7

X_train, X_validation, Y_train, Y_validation =

model_selection.train_test_split(X, Y, test_size=validation_size,

random_state=seed)

Datele de antrenare sunt acum în variabilele: X_train, y_test

Datele de validare sunt acum în variabilele: X_validation, y_validation

5.2 Validarea încrucişată

Vom folosi validarea încrucișată de 10 ori pentru a estima precizia.

Aceasta înseamnă că vom împărți setul nostru de date în 10 părți, 9 părţi le folosim pentru

antrenare şi 1 parte pentru testare, după care repetăm de 10 ori, schimbând de fiecare data setul

folosit pentru testare şi deci cele 9 pentru antrenare.

Folosim metrica de "precizie" pentru a evalua modelele. Acesta este un raport al numărului de

instanțe corect prezise în împărțit la numărul total de instanțe din setul de date înmulțit cu 100

pentru a da un procent (de exemplu, 95% exacte). Vom folosi variabila de scoring cand vom rula

construi si evalua fiecare model urmator.

# Test options and evaluation metric

seed = 7

scoring = 'accuracy'

5.3 Construirea modelelor

Nu știm care algoritm este mai bun în această problemă sau ce configurații să fie utilizate. Avem

o idee din grafice că unele clase sunt parțial liniar separabile în unele dimensiuni, deci așteptăm

în general rezultate bune.

Evaluăm 6 algoritmi diferiți:

- Logistic Regression (LR)

- Linear Discriminant Analysis (LDA)

- K-Nearest Neighbors (KNN).

- Classification and Regression Trees (CART).

- Gaussian Naive Bayes (NB).

- Support Vector Machines (SVM).

models = []

models.append(('LR', LogisticRegression(solver='liblinear',

multi_class='ovr')))

models.append(('LDA', LinearDiscriminantAnalysis()))

models.append(('KNN', KNeighborsClassifier()))

models.append(('CART', DecisionTreeClassifier()))

models.append(('NB', GaussianNB()))

models.append(('SVM', SVC(gamma='auto')))

Page 20: Curs 1- Introducere în domeniul învățării automate · Curs 1- Introducere în domeniul învățării automate Din momentul în care calculatoarele au fost inventate, s-a pus

20

# evaluate each model in turn

results = []

names = []

for name, model in models:

kfold = model_selection.KFold(n_splits=10, random_state=seed)

cv_results = model_selection.cross_val_score(model, X_train, Y_train,

cv=kfold, scoring=scoring)

results.append(cv_results)

names.append(name)

msg = "%s: %f (%f)" % (name, cv_results.mean(), cv_results.std())

print(msg)

5.4 Selectarea celui mai bun model

Acum avem 6 modele și estimări ale precizie pentru fiecare. Trebuie să comparăm modelele

cu și să le alegem cele mai bune.

Aplicând codul de mai sus, obținem următoarele rezultate:

Rețineți că este posibil să obţineţi rezultate diferite.

În acest caz, putem vedea că Maşinile cu Suport Vectorial (SVM) au obţinut cel mai mare scor.

Putem crea, de asemenea, un grafic al rezultatelor evaluării modelelor și să comparăm

media și abaterea medie a fiecărui model. Există o populație de scoruti pentru fiecare algoritm

deoarece fiecare algoritm a fost evaluat de 10 ori (validare încrucișată de 10 ori).

6. Predicţii

Algoritmul KNN este un algoritm simplu și a obţinut un rezultat bun pe testele noastre. Acum

vrem să obținem o idee despre exactitatea modelului pe setul nostru de validare.

Acesta va fi un control final independent privind precizia celui mai bun model. Este important să

păstrați un set de validare doar în cazul în care ați făcut o supra-estimare în timpul

antrenamentului. Aceasta va avea ca rezultat un rezultat prea optimist.

Page 21: Curs 1- Introducere în domeniul învățării automate · Curs 1- Introducere în domeniul învățării automate Din momentul în care calculatoarele au fost inventate, s-a pus

21

Putem rula modelul KNN direct pe setul de validare și vom rezuma rezultatele ca punct final de

precizie, o matrice de confuzie și un raport de clasificare.