Sissejuhatus masinõppesse

Slides:



Advertisements
Similar presentations
...visualizing classifier performance Tobias Sing Dept. of Modeling & Simulation Novartis Pharma AG Joint work with Oliver Sander (MPI for Informatics,
Advertisements

Machine Learning & Data Mining CS/CNS/EE 155 Lecture 2: Review Part 2.
Text Categorization Hongning Wang Today’s lecture Bayes decision theory Supervised text categorization – General steps for text categorization.
Assessing and Comparing Classification Algorithms Introduction Resampling and Cross Validation Measuring Error Interval Estimation and Hypothesis Testing.
Classification and risk prediction
Performance measures Morten Nielsen, CBS, BioCentrum, DTU.
© Vipin Kumar CSci 8980 Fall CSci 8980: Data Mining (Fall 2002) Vipin Kumar Army High Performance Computing Research Center Department of Computer.
Decision Theory Naïve Bayes ROC Curves
CISC667, F05, Lec23, Liao1 CISC 667 Intro to Bioinformatics (Fall 2005) Support Vector Machines (II) Bioinformatics Applications.
These slides are based on Tom Mitchell’s book “Machine Learning” Lazy learning vs. eager learning Processing is delayed until a new instance must be classified.
Math 5364 Notes Chapter 5: Alternative Classification Techniques Jesse Crawford Department of Mathematics Tarleton State University.
ROC & AUC, LIFT ד"ר אבי רוזנפלד.
Notes on Measuring the Performance of a Binary Classifier David Madigan.
Today Evaluation Measures Accuracy Significance Testing
Evaluating Classifiers
Chapter 4 Pattern Recognition Concepts continued.
Evaluation – next steps
Classification Performance Evaluation. How do you know that you have a good classifier? Is a feature contributing to overall performance? Is classifier.
1 Learning Chapter 18 and Parts of Chapter 20 AI systems are complex and may have many parameters. It is impractical and often impossible to encode all.
Data Mining Practical Machine Learning Tools and Techniques By I. H. Witten, E. Frank and M. A. Hall Chapter 5: Credibility: Evaluating What’s Been Learned.
ECE 471/571 - Lecture 19 Review 11/12/15. A Roadmap 2 Pattern Classification Statistical ApproachNon-Statistical Approach SupervisedUnsupervised Basic.
Meta-learning for Algorithm Recommendation Meta-learning for Algorithm Recommendation Background on Local Learning Background on Algorithm Assessment Algorithm.
Copyright © 2004, 2005 by Jinyan Li and Limsoon Wong For written notes on this lecture, please read chapter 3 of The Practical Bioinformatician, CS2220:
ROC curve estimation. Index Introduction to ROC ROC curve Area under ROC curve Visualization using ROC curve.
Copyright  2004 limsoon wong CS2220: Computation Foundation in Bioinformatics Limsoon Wong Institute for Infocomm Research Lecture slides for 13 January.
Supervise Learning. 2 What is learning? “Learning denotes changes in a system that... enable a system to do the same task more efficiently the next time.”
Data Mining Introduction to Classification using Linear Classifiers
Data Mining, Machine Learning, Data Analysis, etc. scikit-learn
Name: Sushmita Laila Khan Affiliation: Georgia Southern University
ECE 471/571 - Lecture 19 Review 02/24/17.
Evaluating Classifiers
Performance Evaluation 02/15/17
CSSE463: Image Recognition Day 11
Source: Procedia Computer Science(2015)70:
Dipartimento di Ingegneria «Enzo Ferrari»,
Chapter 7 – K-Nearest-Neighbor
למידת מכונה Machine Learning.
Machine Learning Week 10.
Data Mining Classification: Alternative Techniques
Features & Decision regions
Süsteemprogrammeerimine keeles C ja C#
SEG 4630 E-Commerce Data Mining — Final Review —
The receiver operating characteristic (ROC) curve
Ravivahetuse vajaduse prognoosimine klassifikatsioonipuu abil
NSO8055 Okeanograafiline prognoos
Mudelitest ja modelleerimisest
Katseandmete analüüs II
Image Classification via Attribute Detection
ECE 471/571 – Review 1.
iSRD Spam Review Detection with Imbalanced Data Distributions
Model Evaluation and Selection
Evaluating Models Part 1
Data Mining, Machine Learning, Data Analysis, etc. scikit-learn
Data Mining, Machine Learning, Data Analysis, etc. scikit-learn
Learning Chapter 18 and Parts of Chapter 20
Basics of ML Rohan Suri.
CSSE463: Image Recognition Day 11
Roc curves By Vittoria Cozza, matr
CSSE463: Image Recognition Day 11
Assignment 1: Classification by K Nearest Neighbors (KNN) technique
Jia-Bin Huang Virginia Tech
Machine Learning: Methodology Chapter
A Comparison of Record Linkage Techniques
Pattern Recognition ->Machine Learning- >Data Analytics Supervised Learning Unsupervised Learning Semi-supervised Learning Reinforcement Learning.
ECE – Pattern Recognition Lecture 8 – Performance Evaluation
Machine Learning in Business John C. Hull
ROC Curves and Operating Points
ECE – Pattern Recognition Midterm Review
Presentation transcript:

Sissejuhatus masinõppesse Raul Sirel 06.10.2015

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

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

Tunnusvektorite esitamine Tunnused Vaatlused

Play tennis?

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)

Binaarsed tunnused Tunnuseid saab kodeerida ka binaarsetena: True/False 0/1 Ehk sisuliselt vaadeldakse, kas tunnus on vaatluses esindatud või mitte

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

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

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

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?

Klassifitseerimine

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

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“

Klassifitseerijate treenimine http://www.nltk.org/book/ch06.html

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

Otsustuspuud Andmetest õpitakse lihtsad kui-siis stiilis otsustusreeglid Klassifitseerija on esitatav puuna: tippudeks on tunnused kaarteks tunnuste võimalikud väärtused

Play tennis?

Vektorruumidel põhinevad meetodid Lisaks tõenäosuslikele mudelitele kasutatakse ka vektorruumil põhinevaid mudeleid Klassifitseeritavaid objekte kujutatakse objektidena n-dimensionaalses ruumis

Kahe- ja kolmemõõtmelised Eukleidilised ruumid

Kahe- ja kolmemõõtmelised Eukleidilised ruumid

Kahe- ja kolmemõõtmelised Eukleidilised ruumid Sama idee laieneb ka n-dimensionaalsetele ruumidele

Objektide sarnasus n-mõõtmelises ruumis Eukleidiline kaugus (Euclidean distance): Koosinussarnasus (cosine similarity):

Eukleidiline kaugus ja koosinussarnasus

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

k-Nearest Neighbours

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

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)

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

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)

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)

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)

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

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) ...

scikit-learn

scikit-learn Vaba lähtekoodiga masinõppeteek Pythonile Kasutatav erinevate ülesannete lahendamiseks: klassifitseerimine regressioon klasterdamine ... http://scikit-learn.org/stable/

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,)

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')

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,)

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

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

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") 0.93506493506493504

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.

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]])

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([ 0.93333333, 0.96658312, 0.93265993, 0.93265993, 1. ]) >>> scores.mean() 0.95304726462621192