Download presentation
Presentation is loading. Please wait.
1
Sissejuhatus masinõppesse
Raul Sirel
2
Masinõpe Masinõpe on algoritmide kogum, mille eesmärk on sisendandmete statistiline modelleerimine ning andmetel põhinevate ennustuste tegemine Näiteks ilma ennustamine: eelnevate ilmavaatluste põhjal luuakse statistiline mudel, mida kasutatakse ennustamaks, kas homme sajab vihma või on päikeseline Modelleerida ja ennustada saab ka keeleandmete põhjal
3
Tunnused Tunnus on objekti mõõdetav omadus – nt ilma ennustamise puhul õhutemperatuur, õhurõhk, sademete hulk jne. Keeleliste andmete puhul võib tunnuseks olla näiteks sõna esinemissagedus Masinõppe ülesannete lahendamisel esitatakse andmed tunnusvektoritena (ingl k feature vector) Levinud praktika on esitada tunnuseid ja nendest moodustuvaid vektoreid andmemassiividena
4
Tunnusvektorite esitamine
Tunnused Vaatlused
5
Play tennis?
6
Tunnuste tüübid Eristatakse kahte tüüpi tunnuseid:
diskreetsed (discrete) pidevad (continuous) Diskreetsed tunnused on tekstilised (sõned) ja kuuluvad mingisse lõplikku hulka (nt päikeseline/pilves/vihmane) Pidevad tunnused on arvulised (nt kaal, pikkus, aga ka sagedus või tõenäosus)
7
Binaarsed tunnused Tunnuseid saab kodeerida ka binaarsetena:
True/False 0/1 Ehk sisuliselt vaadeldakse, kas tunnus on vaatluses esindatud või mitte
8
Juhendatud ja juhendamata õppimine
Juhendatud õppimine (supervised learning) modelleeritavad andmed sisaldavad sisendit ja oodatavat väljundit (ingl k label) algoritmi eesmärk on õppida ennustama väljundit Juhendamata õppimine (unsupervised learning) modelleeritavad ei sisalda oodatavat väljundit algoritmi eesmärk on tuvastada andmestikus leiduvaid varjatud struktuure
9
Juhendatud õppimine Eristatakse kahte tüüpi juhendatud õppimise ülesandeid: klassifitseerimine regressioon Klassifitseerimise eesmärk on otsustada, millisesse etteantud klassi objekt kuulub – ehk ennustatav väärtus on diskreetne Regressiooni eesmärk on ennustada mõnda pidevat väärtust – nt järgmise päeva õhurõhk või -temperatuur Keelega seotud juhendatud õppe ülesanded on enamasti klassifitseerimisülesanded
10
Dimensionaalsuse needus
Andmestiku dimensionaalsus = andmestikus leiduvate unikaalsete tunnuste arv Curse of dimensionality Katustermin kirjeldamaks kõrgdimensionaalsete andmete analüüsimisega seotud probleeme Tunnuste arvu suurenemisega kaasnevad: hõredad maatriksid (enamik andmetest on nullid) suurenenud mälukasutus
11
Keeleandmete dimensionaalsus
Keeleandmed on loomult kõrgdimensionaalsed Zipf’i jaotus: suur leksikon (sõnavara tähenduses) suur osa leksikonis olevatest sõnadest esinevad tekstis harva Selle tulemusel tekib hõre maatriks Ignoreerida harvaesinevaid sõnu? Kas kõik sõnad on olulised?
13
Klassifitseerimine
16
Klassifitseerimisülesannete tüübid
Binaarne klassifitseerimine (binary classification) mees/naine haige/terve rämpspost/kasulik post Mitmeklassiline klassifitseerimine (multiclass classification): mootorratas/sõiduauto/veoauto/autorong/... luule/proosatekst/ajakirjandustekst/tarbetekst Mitmeklassilised probleemid on arusaadavalt keerulisemad
17
Strateegiad mitmeklassiliste probleemidee lahendamisel
Üks mitmele lähenemine: igale klassile treenitakse eraldi binaarne klassifitseerija klass vs kõik teised klassid eeldab reaalarvulist usaldusskoori Üks ühele lähenemine: klassidest leitakse kahesed kombinatsioonid iga paari treenitakse eristama eraldi klassifitseerija K klassi korral treenitakse 𝐾(𝐾−1) 2 klassifitseerijat (nt 5 klassi puhul 10) otsustamisel kasutatakse hääletusskeemi: võidab see, kes saab kõigi klassifitseerijate hulgast enim „hääli“
18
Klassifitseerijate treenimine
19
Naiivne Bayes Tõenäosuslik mudel: igale klassifitseeritavale juhtumile, mis on esitatud tunnusvektoriga 𝑥=(𝑥1,…,𝑥𝑛), leitakse tõenäosused 𝑝(𝐶𝑘|𝑥1,…,𝑥𝑛) kõigi k võimaliku klassi jaoks. Tunnused on sõltumatud (sestap ka naiivne) Töötab küllaltki adekvaatselt ka väheste treeningandmete puhul Töötab paremini väheste ennustatavate klassidega
20
Otsustuspuud Andmetest õpitakse lihtsad kui-siis stiilis otsustusreeglid Klassifitseerija on esitatav puuna: tippudeks on tunnused kaarteks tunnuste võimalikud väärtused
21
Play tennis?
23
Vektorruumidel põhinevad meetodid
Lisaks tõenäosuslikele mudelitele kasutatakse ka vektorruumil põhinevaid mudeleid Klassifitseeritavaid objekte kujutatakse objektidena n-dimensionaalses ruumis
24
Kahe- ja kolmemõõtmelised Eukleidilised ruumid
25
Kahe- ja kolmemõõtmelised Eukleidilised ruumid
26
Kahe- ja kolmemõõtmelised Eukleidilised ruumid
Sama idee laieneb ka n-dimensionaalsetele ruumidele
27
Objektide sarnasus n-mõõtmelises ruumis
Eukleidiline kaugus (Euclidean distance): Koosinussarnasus (cosine similarity):
28
Eukleidiline kaugus ja koosinussarnasus
29
k-Nearest Neighbours Põhineb vektorruumil
Sisendandmetest ei looda üldistatud mudelit Juhtumi klassifitseerimiseks: leitakse treeningandmete hulgast k lähimat objekti loetakse kokku objektide klassid enamushääletus: valituks osutub klass, mis saab enim “hääli” Kasutatakse pigem väiksema dimensionaalsusega andmete puhul
30
k-Nearest Neighbours
31
SVM Support vector machine
Mudel põhineb objekti kujutamisel vektorruumis Üritatakse leida parimat klasse eristavat lineaarset separaatorit N-mõõtmelises ruumis on separaatoriks hüpertasand (hyperplane) Sobib nii binaarsete kui mitmeklassiliste ülesannete lahendamiseks
32
Klassifitseerijate hindamine
Klassifitseerigem inimesi terveteks ja haigeteks: inimene on haige ja klassifitseeritakse haigeks: tõeselt positiivne (true positive, TP) inimene on haige, aga klassifitseeritakse terveks: valenegatiivne (false negative, FN) inimene ei ole haige ja klassifitseeritakse terveks: tõeselt negatiivne (true negative, TN) inimene ei ole haige, aga klassifitseeritakse haigeks: valepositiivne (false positive, FP)
33
Klassifitseerijate hindamine
Klassifitseerigem inimesi terveteks ja haigeteks: inimene on haige ja klassifitseeritakse haigeks: tõeselt positiivne (true positive, TP) inimene on haige, aga klassifitseeritakse terveks: valenegatiivne (false negative, FN) inimene ei ole haige ja klassifitseeritakse terveks: tõeselt negatiivne (true negative, TN) inimene ei ole haige, aga klassifitseeritakse haigeks: valepositiivne (false positive, FP) Tulemused saab esitada 2x2 maatriksina (confusion matrix, contingency table): Tegelik klass Positiivne Negatiivne Ennustatud klass TP FP FN TN
34
Meetrikud klassifitseerijate hindamiseks
Tabeli alusel saab arvutada erinevaid meetrikuid: tõeselt positiivsete määr (true positive rate), sensitiivsus (sensitivity), saagis (recall): tõeselt negatiivsete määr (true negative rate), spetsiifilisus (specificity) positiivne ennustusväärtus (positive predictive value), täpsus (precision) negatiivne ennustusväärtus (negative predictive value)
35
Meetrikud klassifitseerijate hindamiseks
Eelnevaid meetrikuid kasutatakse enamasti kombineerituna, nt: tõeselt positiivsete määr (sensitiivsus) ja tõeselt negatiivsete määr (spetsifiitsus) saagis ja täpsus positiivne ennustusväärtus ja negatiivne ennustusväärtus Lisaks veel paar üksikult kasutatavat meetrikut: Accuracy F1 skoor (keskmistab saagist ja täpsust)
36
ROC kõver Graafik, kus horisontaalsel teljel on tõeselt positiivsete määr ning vertikaalsel teljel valepositiivsete määr Juhusliku klassifitseerija poolt loodav kõver on enam-vähem diagonaalne joon – iga õige otsuse kohta tehakse üks vale otsus AUC/AUROC (Area Under the Curve)
37
Treening- ja testandmed
Klassifitseerija treenimiseks ja testimiseks jagatakse andmed kaheks: treeningandmed (klassifitseerija treenimiseks) testandmed (klassifitseerija hindamiseks) (vahel lisaks ka nö dev-test andmed, mida kasutatakse klassifitseerija tuunimiseks) Väikeste andmehulkade puhul rakendatakse n-kordset ristvalideerimist: andmed jagatakse n võrdseks alamhulgaks tehakse n katset, kus igal korral kasutatakse testimiseks erinevat alamhulka ülejäänud andmeid kasutatakse treenimiseks tulemused keskmistatakse tavapäraselt 5x või 10x ristvalideerimine
38
Loomuliku keele töötlusega seotud klassifitseerimisülesanded
Juhendatud õpet kasutatakse erinevate loomuliku keele töötlusega seotud ülesannete lahendamisel, nt: rämpsposti filtreerimine (spam filtering) tekstiliikide tuvastamine (genre identification) keeletuvastus (language identification) autorituvastus (author recognition) meelsusanalüüs (sentiment analysis) ...
39
scikit-learn
40
scikit-learn Vaba lähtekoodiga masinõppeteek Pythonile
Kasutatav erinevate ülesannete lahendamiseks: klassifitseerimine regressioon klasterdamine ...
41
Andmete ettevalmistamine klassifitseerimisülesannete lahendamiseks
Andmed esitatakse kahe massiivina: objektide vektorid objektide sildid (labels) Mänguandmestik Iris: from sklearn import datasets iris = datasets.load_iris() data,labels = iris.data,iris.target >>> data.shape (150L, 4L) >>> labels.shape (150L,)
42
Irise näide jätkub... >>> data array([[ 5.1, 3.5, 1.4, 0.2],
[ 4.9, 3. , 1.4, 0.2], [ 4.7, 3.2, 1.3, 0.2], [ 4.6, 3.1, 1.5, 0.2], ... >>> labels array([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2]) >>> iris.target_names array(['setosa', 'versicolor', 'virginica'], dtype='|S10')
43
Treening- ja testandmeteks jagamine
from sklearn import cross_validation as cv from sklearn import datasets iris = datasets.load_iris() data,labels = iris.data,iris.target data_train,data_test,labels_train,labels_test = cv.train_test_split(data, target, test_size=0.2) >>> data_train.shape (120L, 4L) >>> data_test.shape (30L, 4L) >>> labels_train.shape (120L,) >>> labels_test.shape (30L,)
44
Näide klassifitseerija treenimisest
from sklearn import cross_validation as cv from sklearn import datasets from sklearn.naive_bayes import GaussianNB iris = datasets.load_iris() data,labels = iris.data,iris.target data_train,data_test,labels_train,labels_test = cv.train_test_split(data, target, test_size=0.2) >>> nb = GaussianNB() >>> nb.fit(data_train,labels_train) GaussianNB() >>> nb.predict(data_test[0]) array([1]) >>> labels_test[0] 1
45
Näide klassifitseerija treenimisest
from sklearn import cross_validation as cv from sklearn import datasets from sklearn.naive_bayes import GaussianNB iris = datasets.load_iris() data,labels = iris.data,iris.target data_train,data_test,labels_train,labels_test = cv.train_test_split(data, target, test_size=0.2) >>> nb = GaussianNB() >>> nb.fit(data_train,labels_train) GaussianNB() >>> nb.predict(data_test[0]) array([1]) >>> labels_test[0] 1 Treenime klassifitseerija Klassifitseerime testandmestikust esimese näite Valideerime tulemuse
46
Klassifitseerija hindamine
from sklearn import cross_validation as cv from sklearn import datasets from sklearn.naive_bayes import GaussianNB from sklearn import metrics iris = datasets.load_iris() data,labels = iris.data,iris.target data_train,data_test,labels_train,labels_test = cv.train_test_split(data, target, test_size=0.2) >>> nb = GaussianNB() >>> nb.fit(data_train,labels_train) GaussianNB() labels_predicted = nb.predict(data_test) >>> metrics.f1_score(labels_test, labels_predicted, average="weighted")
47
sklearn.metrics metrics.accuracy_score(y_true, y_pred[, ...])
Accuracy classification score. metrics.auc(x, y[, reorder]) Compute Area Under the Curve (AUC) using the trapezoidal rule metrics.average_precision_score(y_true, y_score) Compute average precision (AP) from prediction scores metrics.brier_score_loss(y_true, y_prob[, ...]) Compute the Brier score. metrics.classification_report(y_true, y_pred) Build a text report showing the main classification metrics metrics.confusion_matrix(y_true, y_pred[, ...]) Compute confusion matrix to evaluate the accuracy of a classification metrics.f1_score(y_true, y_pred[, labels, ...]) Compute the F1 score, also known as balanced F-score or F-measure metrics.fbeta_score(y_true, y_pred, beta[, ...]) Compute the F-beta score metrics.hamming_loss(y_true, y_pred[, classes]) Compute the average Hamming loss. metrics.hinge_loss(y_true, pred_decision[, ...]) Average hinge loss (non-regularized) metrics.jaccard_similarity_score(y_true, y_pred) Jaccard similarity coefficient score metrics.log_loss(y_true, y_pred[, eps, ...]) Log loss, aka logistic loss or cross-entropy loss. metrics.matthews_corrcoef(y_true, y_pred) Compute the Matthews correlation coefficient (MCC) for binary classes metrics.precision_recall_curve(y_true, ...) Compute precision-recall pairs for different probability thresholds metrics.precision_recall_fscore_support(...) Compute precision, recall, F-measure and support for each class metrics.precision_score(y_true, y_pred[, ...]) Compute the precision metrics.recall_score(y_true, y_pred[, ...]) Compute the recall metrics.roc_auc_score(y_true, y_score[, ...]) Compute Area Under the Curve (AUC) from prediction scores metrics.roc_curve(y_true, y_score[, ...]) Compute Receiver operating characteristic (ROC) metrics.zero_one_loss(y_true, y_pred[, ...]) Zero-one classification loss.
48
Confusion matrix from sklearn import cross_validation as cv
from sklearn import datasets from sklearn.naive_bayes import GaussianNB from sklearn import metrics iris = datasets.load_iris() data,labels = iris.data,iris.target data_train,data_test,labels_train,labels_test = cv.train_test_split(data, target, test_size=0.2) >>> nb = GaussianNB() >>> nb.fit(data_train,labels_train) GaussianNB() labels_predicted = nb.predict(data_test) >>> metrics.confusion_matrix(labels_test,predicted_labels) array([[12, 0, 0], [ 0, 6, 0], [ 0, 2, 10]])
49
Klassifitseerija hindamine ristvalideerimise abil
from sklearn import cross_validation as cv from sklearn import datasets from sklearn.naive_bayes import GaussianNB iris = datasets.load_iris() data,labels = iris.data,iris.target data_train,data_test,labels_train,labels_test = cv.train_test_split(data, target, test_size=0.2) nb = GaussianNB() scores = cv.cross_val_score(nb, data, labels, cv=5, scoring='f1_weighted') >>> scores array([ , , , , ]) >>> scores.mean()
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.