|
|
pl:dydaktyka:ml:mlrep1 [2013/04/16 10:13] gjn [2.1 Klasyfikacja] |
pl:dydaktyka:ml:mlrep1 [2019/06/27 15:50] |
| |
====== Peter Flach: Machine Learning, repetytorium 1 ====== | |
| |
===== - Co składa się na uczenie maszynowe ===== | |
//The ingredients of machine learning// | |
| |
''S010'' | |
* każde **zadanie** (//task//) uczenia maszynowego polega na wypracowaniu pewnego rozwiązania przy pomocy odpowiedniego **modelu** matematycznego (którego na początku nie znamy) | |
* na wejściu **modelu** mamy dane (//data//) będące konkretnymi wartościami pewnych **cech**, atrybutów (//features//), na wyjściu modelu otrzymujemy rozwiązanie zadania | |
* zadania wiążą się z pewnymi **obiektami** (//domain objects//), indywiduami, przykładami, egzemplarzami, pomiarami w świecie | |
* **problem** uczenia maszynowego (//learning problem//) polega na automatycznym, maszynowym zbudowaniu **modelu** przy pomocy odpowiedniego algorytmu | |
| |
==== - Zadania: czyli typy problemów które rozwiązujemy ==== | |
//Tasks: the problems that can be solved with machine learning// | |
| |
''S010'' | |
Najistotniejsze klasy **zadań** to m.in: | |
* klasyfikacja | |
* regresja | |
* klasteryzacja (grupowanie) | |
* identyfikacja struktur | |
Mogą się różnić tym co otrzymujemy na wyjściu modelu (w wyniku jego użycia). | |
| |
''S016'' | |
Możemy mówić o modelach: | |
- **predykcyjnych**, kiedy wiemy jakich zmiennych wyjściowych oczekiwać, np. w zadaniu klasyfikacji, gdy znamy klasy do których chcemy przyporządkować obiekty | |
- **deskryptywnych**, kiedy to sam algorytm ma wypracować, odkryć, zaproponować w.w. zmienne | |
Ponadto modele dla zadań ML można budować w sposób: | |
- **nadzorowany** (z nauczycielem) (//supervised//) | |
- **nienadzorowany** (//unsupervised//) | |
| |
Istotną kwestią jest możliwość oceny jakości pracy algorytmu uczenia. | |
W procesie uczenia wypracowywany model powinien być //ulepszany// (wg pewnej przyjętej miary). | |
| |
==== - Modele: czyli to co budujemy w procesie uczenia ==== | |
//Models: the output of machine learning// | |
| |
''S018'' | |
Celem algorytmu uczenia jest wypracowanie parametrów odpowiedniego modelu. | |
Modele te mogą być rożnego typu, należeć do różnych klas. | |
| |
Trzy podstawowe klasy modeli wskazane w podręczniku to modele: | |
- **logiczne**, formalizowane przy pomocy pojęć logiki matematycznej, np. pojęcie reguły, | |
- **geometryczne**, wykorzystujące pojęcia geometrii, w tym analitycznej i algebry, np. pojęcie odległości, | |
- **probabilistyczne**, wykorzystujące rachunek prawdopodobieństwa i statystykę, np. pojęcie prawdopodobieństwa zdarzenia. | |
| |
Ze względu na sposób działania, modele mogą mieć charakter | |
* **grupowania**, lub | |
* **oceniania** | |
obiektów. | |
| |
Na slajdach ''S019-27'' omówiono wstępnie przykłady modeli z poszczególnych klas. | |
A ich wzajemne relacje i klasyfikację pokazano na ''S028,9''. | |
| |
==== - Cechy: to bez czego modele nie mogłyby się obejść ==== | |
//Features: the workhorses of machine learning// | |
| |
**Cechy** (//features//) stanowią mechanizm pojęciowy dzięki któremu jesteśmy w stanie opisać obiekty. | |
Z matematycznego punktu widzenia cecha będzie funkcją, która przyporządkowuje obiektowi wartości z pewnej **dziedziny**. | |
Np. chcemy sklasyfikować różne jabłka ze względu na ich kolor. | |
'Kolor' jest cechą, jego konkretna wartość, np. 'jasnoczerwony' jest tym, co pojawi się jako dana na wejściu modelu (tu klasyfikatora). | |
Na wyjściu pojawi się klasa do której można przypisać konkretne jabłko, np. 'dojrzałe'. | |
| |
Na ''S033-6'' pokazane są różne przykłady doboru cech, pojęć, w zależności od których możemy lepiej użyć pewnych modeli. | |
Np. dzięki użyciu przekształcenia danych przy użyciu funkcji **kernel** możliwym staje się użycie klasyfikatora liniowego tam, gdzie na oryginalnych danych nie byłby w stanie zadziałać. | |
Funkcja **k** dostarcza niejako nowego, innego pojęcia (innej przestrzeni). | |
| |
-------------------- | |
| |
===== - Klasyfikacja binarna ===== | |
//Binary classification and related tasks// | |
| |
Klasyfikacja jest jednym z najważniejszych - najczęściej występujących - zadań ML, | |
a klasyfikacja binarna jej najważniejszym przypadkiem. | |
Między innymi dlatego, że klasyfikacje wieloklasową przeprowadzamy w oparciu o przypadek binarny. | |
| |
Do opisu zadań klasyfikacji używamy odpowiednich pojęć. | |
* **instancja**, (//instance//) egzemplarz, przypadek, dotyczy pojedynczego wystąpienia tego czegoś co klasyfikujemy np. jabłka, oznaczmy go **x** | |
* **przestrzeń instancji** (//instance space//) jest zbiorem wszystkich możliwych przypadków, oznaczmy ją kreślonym dużym **X** | |
* **etykiety** (//label//) należą do przestrzeni etykiet (//label space//) oznaczmy je odpowiednio kreślonymi **l** i **L**. Etykiety są używane do oznaczania przykładów w zbiorze uczącym, treningowym (//training set//) Tr={tr: (x,l(x))} | |
* wyjście klasyfikatora **y**, należy do pewnej przestrzeni **Y** | |
W ogólnym przypadku modele (w tym klasyfikatory) będą więc pewnymi funkcjami. | |
Różne scenariusze opisane są na ''S038''. | |
| |
Należy też pamiętać o kłopotach z jakością danych, określanych technicznie jako **szum** (//noise//). | |
Zaszumione może być zarówno etykietowanie (ktoś źle opisał zbiór treningowy) jak i dane wejściowe, dostajemy nietypowe jabłka albo śliwki. | |
| |
==== - Klasyfikacja ==== | |
//Classification// | |
| |
**Klasyfikator** to funkcja X -> C. | |
W klasyfikacji binarnej zbiór C ma dwa elementy, najczęściej oznaczane jako pozytywne i negatywne, p/n, +/-, +1/-1. | |
| |
Budowany klasyfikator jest tylko pewną aproksymacją, przybliżeniem, potencjalnego klasyfikatora idealnego. | |
W procesie uczenia poprawiamy tę aproksymację. | |
| |
''S040'' pokazuje jak w prosty sposób przejść od drzewa pokazującego liczbę przypadków w danej klasie zależności od kombinacji cech, do drzewa decyzyjnego stanowiącego klasyfikator (czy też jego przybliżenie). | |
| |
''S041'' | |
Żeby móc poprawić aproksymację, jaką jest klasyfikator musimy być wstanie ocenić jego jakość (//performance//). | |
Może do tego służyć **tablica krzyżowa** (//[[wp>Contingency table]]//). | |
Ważne pojęcia to //true/false positives/negatives// | |
| |
W tablicy na ''S040'' mamy: | |
* TP = 30 | |
* TN = 40 | |
* FP = 20 | |
* FN = 10 | |
Trues oznaczono na niebiesko, falses na czerwono. | |
Idealny klasyfikator powinien prawidłowo sklasyfikować wszystkie Pos = 50 i Neg = 50, podczas gdy nasza aproksymacja zidentyfikowała 40 jako p i 60 jako n. | |
| |
W tym przypadku liczność obu klas jest jednakowa (50/50). | |
Kłopoty pojawiają się, gdy jedna z klas jest nadreprezentowana, vide ''S041'' wtedy trzeba wziąć pod uwagę tę proporcję. | |
| |
=== Metryki === | |
W celu precyzyjnej oceny jakości klasyfikatora używamy szeregu metryk. | |
* //class ratio// (**stosunek klas**) clr = Pos/Neg | |
* //accuracy// (**dokładność**) acc = (TP+TN)/(Pos+Neg) -- stosunek przykładów sklasyfikowanych poprawnie sklasyfikowanych do wszystkich | |
* //error rate// err=1-acc | |
* //recall//, //sensitivity//, //true positive rate// tpr=Tp/Pos (**wrażliwość**) | |
* //specificity//, //true negative rate// tnr=TN/Neg (**swoistość**) | |
* //precision//, //confidence// prec=TP/(TP+FP) (**precyzja**) | |
| |
Patrz też [[wp>Receiver_operating_characteristic#Basic_concept]] | |
| |
=== Wizualizacja metryk === | |
W celu lepszego porównywania klasyfikatorów z użyciem metryk używamy wizualizacji. | |
Najprostsza to wykres pokrycia, //coverage plot// bezpośrednio wizualizujący tablicę krzyżową. | |
Patrz ''S043''. | |
| |
''S044'' | |
Bardziej zaawansowaną metodą wizualizacji jest wykres ROC | |
[[wp>Receiver_operating_characteristic]] | |
Pozwala na porównanie klasyfikatorów które są normalizowane do tej samej przestrzeni. | |
| |
''S050'' | |
Obszar poniżej krzywej ROC odpowiada dokładności klasyfikatora, związanej z ilością poprawnie sklasyfikowanych par tp/fp. | |
Obszar ten czasem nazywa się //AUC// -- //area under the (ROC) curve//. | |
| |
| |
==== - Ocenianie ==== | |
//Scoring and ranking// | |
| |
Osobną metodą budowania klasyfikatorów jest użycie funkcji oceniającej, przypisującej pewnym kombinacjom wartości cech współczynniki. | |
Współczynniki są wyliczane w zależności od tego, ile przykładów z danej klasy opisują. ''S047-9'' | |
To które kombinacje cech przesądzają o przynależności do konkretnej klasy zależy od porównania dokładności | |
''S054,5'' | |
| |
| |
==== - Prawdopodobieństwo przynależności do klas ==== | |
//Class probability estimation// | |
| |
''S057,8'' | |
Pokrewną grupą klasyfikatorów są takie, które oceniają prawdopodobieństwo przynależności danej instancji do klasy. | |
Służą do przewidywania przynależność instancji. | |
Na wyjściu takiego klasyfikatora dostajemy wartość prawdopodobieństwa przynależności instancji do klasy. | |
| |
-------------------- | |
| |
===== - Coś więcej niż klasyfikacja binarna ===== | |
//Beyond binary classification// | |
| |
| |
==== - Klasyfikacja wieloklasowa ==== | |
//Handling more than two classes// | |
| |
''S062,3'' | |
Mając klasyfikator kilkuklasowy możemy wyliczyć jego dokładność w poszczególnych klasach. | |
| |
Zakładając, że w procesie uczenia mamy tylko przykłady pozwalające na uczenie klasyfikatorów binarnych, tzn. odróżniających od siebie tylko 2 klasy, mamy dwie podstawowe metody budowania klasyfikatora wieloklasowego: | |
* 1-do-wiele (//one-versus-rest//) w którym uczymy k klasyfikatorów binarnych gdzie w uczeniu C_k pozostałe klasy są uznawane za przykłady negatywne, oraz | |
* 1-do-1 (//one-versus-one//) w którym uczymy uczymy klasyfikatory dla każdej pary klas a następnie odpowiednio łączymy ich wyniki w procesie klasyfikacji. | |
| |
==== - Regresja ==== | |
//Regression// | |
| |
''S069'' | |
Obok klasyfikacji regresja jest jednym z ważniejszych przypadków ML. | |
Aby uniknąć **przeuczenia** (//overfitting//) liczba parametrów które dopasowujemy w procesie uczenia powinna być istotnie mniejsza niż liczba znany punktów/danych/przykładów. | |
| |
''S069'' | |
**bias** vs. **variance** | |
Ilustracja dobrze ilustruje intuicję pozwalającą odróżnić odchylenie wyników od ich wariancji. | |
| |
| |
==== - Uczenie nienadzorowane i deskryptywne ==== | |
//Unsupervised and descriptive learning// | |
| |
''S072'' | |
W uczeniu nienadzorowanym (klasteryzacja i uczenie deskryptywne) zadania uczenia maszynowego i problem uczenia się pokrywają. | |
Nie mamy do dyspozycji zbioru uczącego. | |
Nie mamy modelu, którego parametry poprawiamy, ile - w procesie uczenia - budujemy taki model, | |
np. określamy ile istnieje klas i jak do nich przypisywać przykłady. | |
Na uczenie nienadzworowane możemy najczęściej spojrzeć jako na **odkrywanie wiedzy** (//knowledge discovery//). | |
| |
''S073-6'' | |
Istotne przypadki uczenia nienadzworowanego to: | |
* klasteryzacja (predykacja klastrów i grupowanie), //[[wp>Cluster analysis]]// inaczej **[[http://pl.wikipedia.org/wiki/Analiza_skupie%C5%84|Analiza skupień]]** | |
* odkrywanie reguł asocjacyjnych //Association rule discovery// | |
| |
| |
------------------- | |
| |