====== Peter Flach: Machine Learning, repetytorium 3 ====== ===== -#7 Modele liniowe ===== //Linear models// Cechą charakterystyczną tych modeli jest operowanie pojęciami dotyczącymi geometrii przestrzeni, np. w układzie współrzędnych kartezjańskich. Modele liniowe wykorzystują pojęcia linii, lub (hiper) płaszczyzny do ustrukturalizowania przestrzeni instancji. Zaletą modeli liniowych jest ich względna prostota, są to modele: - parametryczne - mają określoną strukturę, która jest dopasowywana w procesie uczenia poprzez parametry - stabilne - niewielkie zmiany danych uczących wywołują relatywnie niewielkie zmiany w otrzymywanych parametrach modelu - mniej podatne na przeuczenie - głównie ze względu na niewielką liczbę parametrów; za to czasami mogą występować sub optymalne kombinacje parametrów. ==== Metoda najmniejszych kwadratów ==== //The least-squares method// ''S180'' Model jednowymiarowej regresji liniowe, i jego interpretacja geometryczna na ''S181''. Slajd ''S182'' pokazuje wpływ (relatywnie niewielki-stabilność) na otrzymane parametry. ''S183-5'' Opis przypadku wielowymiarowego wymaga notacji macierzowej. ''S186'' Jeżeli cechy są nieskorelowane, przypadek wielowymiarowy może zdekomponowany na N przypadków jednowymiarowych. Tymczasem silna korelacja może prowadzić do niestabilności modelu. Aby ją ograniczyć stosuje się //regularyzację//. ''S187-191'' Regresję możemy stosować nie tylko do aproksymacji funkcji, ale przede wszystkim do konstruowania klasyfikatora binarnego - separującego przestrzeń na 2 części. Staramy się minimalizować liczbę źle sklasyfikowanych przypadków pozytywnych i negatywnych. Na ''S190'' pokazana jest interpretacja geometryczna, w tym przypadku 3 przykłady są niepoprawnie sklasyfikowane - na górnej osi 1 fn (po lewej) i na dolnej 2 fp (po prawej). ==== Perceptron jako klasyfikator liniowy ==== //The perceptron: a heuristic learning algorithm for linear classifiers// ''S192'' Perceptron reprezentowany jako prosta liniowa sieć neuronowa jest przykładem klasyfikatora binarnego dającego dobre rezultaty. W procesie uczenia uaktualniamy wektory wag, ze współczynnikiem nazywanym prędkością uczenia. Algorytm jest na ''S193'' - wagi są powiązane z cechami obiektów. ''S194'' Prędkość uczenia może polepszać zbieżność tego procesu, jednak tylko jeśli nie jest za duża. ''S195'' W przypadku dualnym, wagi są powiązane z instancjami obiektów (nie cechami). A sam algorytm wygląda analogicznie ''S196''. ''S197'' Porównuje omówione klasyfikatory liniowe. ==== Metody z wektorem wspierającym ==== //Support vector machines// ''S200'' ilustruje koncepcję [[wp>Support Vector Machine]]. ''S201-7'' pokazują metodę maksymalizacji marginesów pomiędzy prostą, a skrajnymi/najbliższymi przykładami, z użyciem [[http://pl.wikipedia.org/wiki/Mno%C5%BCniki_Lagrange%E2%80%99a|mnożników Lagrange'a]] pozwalających ro rozwiązanie problemu dualnego. W tej sytuacji w celu znalezienia rozwiązania analizujemy iloczyn skalarny współczynników w [[http://pl.wikipedia.org/wiki/Macierz_Grama|macierzy Grama]]. ''S209-13'' Ilustrują metodę zwiększenia tolerancji co do ustalenia marginesów za pomocą specjalnych zmiennych "luzujących" (//slack//), dzięĸi temu uzyskujemy zmienny margines błędu. Przydatna dokumentacja do SVM: * [[http://www.support-vector-machines.org/|Support Vector Machines]] * [[http://www.tristanfletcher.co.uk/SVM%20Explained.pdf|Support Vector Machines Explained]] * [[http://research.microsoft.com/en-us/um/people/cburges/papers/svmtutorial.pdf|A Tutorial on Support Vector Machines for Pattern Recognition]] * [[http://www.csie.ntu.edu.tw/~cjlin/papers/guide/guide.pdf|A Practical Guide to Support Vector Classifcation]] Wybrane narzędzia do SVM: * [[http://www.support-vector-machines.org/SVM_soft.html|lista narzędzi]] * [[http://www.csie.ntu.edu.tw/~cjlin/libsvm/|libsvm]] ==== Klasyfikatory liniowe a prawdopodobieństwo ==== //Obtaining probabilities from linear classifiers// ''S215-8'' poprzez rzutowanie przestrzeni przykładów do przestrzeni odpowiedniej funkcji gęstości prawdopodobieństwa, możemy uzyskać intepretację wyniku działania klasyfikatora liniowego w postaci prawdopodobieństwa, jest to tzw. kalibracja. ==== Klasyfikacja nieliniowa - kernels ==== //Going beyond linearity with kernel methods// ''S220-3'' Wprowadzenie specjalnego przekształcenia ([[wp>Kernel_trick]]) pozwala na klasyfikację danych, które nie są liniowo separowalne w oryginalnej przestrzeni. Przykład wizualizacji [[http://www.youtube.com/watch?v=3liCbRZPrZA|Kernel visualization]]. Wybrane kernele to np. [[wp>Polynomial_kernel]], [[wp>Radial_basis_function_kernel]]. ===== -#8 Modele odległościowe ===== //Distance-based models// ''S225-8'' uogólniona miara Minkowskiego pozwala na odwzorowanie rożnych metryk (def. na ''S227''). ==== Definicje sąsiedztwa ==== //Neighbours and exemplars// ''S230-3'' W zależności od doboru metryki można różnie rozumieć sąsiedztwo. ==== Metoda najbliższego sąsiada ==== //Nearest-neighbour classification// ''S235-6'' Bazując na wcześniej zdefiniowanej tassalacji Voronoia, buduje się [[wp>K-Nearest Neighbor Algorithm]], w którym przyjmujemy //a priori// liczbę k sąsiadów branych pod uwagę do określenia granic klas. ==== Klastryzacja odległościowa ==== //Distance-based clustering// ''S238-246'' Algorytm K-means pozwala na klastryzację (grupowanie) danych. Jest to klasyczny przykład uczenia nienadzorowanego. ''S249-252'' K-menas jest wrażliwy na charakter danych wejściowych, mogą one wymagać preprocesingu, np. skalowania. Wykresy //silhouettes// pozwalają na porównywanie jakości grupowań. Przykład klasteryzacji przy pomocy narzędzia [[http://www.carrot2.org|Carrot 2]]. ==== Klastryzacja hierarchiczna ==== //Hierarchical clustering// ''S254-7'' Dendogramy są metodą wizualizacji klastryzaji hierarchicznej.