|
|
pl:dydaktyka:ml:mlrep1 [2017/07/17 10:08] |
pl:dydaktyka:ml:mlrep1 [2019/06/27 15:50] (aktualna) |
| |
| ====== 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 parametrów 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**) |
| * //F-measure// F=2*(precision*recall)/(precision+recall) |
| |
| Patrz też: |
| * [[wp>Receiver_operating_characteristic#Basic_concept]] |
| * [[wp>Binary_classification#Evaluation_of_binary_classifiers]] |
| |
| === 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// |
| |
| |
| ------------------- |
| |