PERCEPTRON PROSTY. DYSKRYMINACJA DLA 2 GRUP
Data: 4 listopada 2008
Będziemy posługiwać się danymi zebranymi przez prof. Seunga z MIT. Dane zostały trochę przeorganizowane. Oryginalne dane znajdują się pod adresem (http://hebb.mit.edU/courses/9.641/assignments/perceptron.delta.m).
Przeorganizowane dane są dostępne na serwerze studenckim w folderze abaFiles, znajdującym się w s. 107 na dysku twardym D na ścieżce D:/Matlab/toolbox/abaFiles . Interesują nas pliki seungMNIST.mat, seungFaces.mat
cyferki seungMNIST.mat |
twarze seungFaces | ||||
mnistTrain |
784x5000 |
uint8 |
facesTrain |
361x6977 |
double |
mnistTrainLabs |
5000x1 |
uint8 |
facesTrainLabs |
6977x1 |
double |
mnistTest |
784x1000 |
uint8 |
facesTest |
361x2000 |
double |
mnistTestLabs |
1000x1 |
uint8 |
facesTestLabs |
2000x1 |
double |
oraz funkcję [w,b]=seung(train, trainLabs.options) . Funkcja seung oblicza wagi właściwe w oraz bias b potrzebne do zbudowania logistycznej funkcji dyskryminacyjnej dla dwóch grup danych. Pliki z danymi o rozszerzeniu .mat wczytujemy za pomocą instrukcji load._
Otrzymane zmienne zawierają zarówno pliki uczące (Train) jak i pliki do testowania (Test). Identyfikacja cyferek znajduje się w wektorach mnistTrainLabs i mnistTestLabs: składowe tych wektorów zawierają znaki 0,1,2,..., 9 odpowiednio.
Identyfikacja twarzy jest określona binarnie: wartość 1 oznacza, że dana kolumna przedstawia twarz, wartość 0, że dana kolumna nie przedstawia twarzy.
Lab. 3.1. Wczytaj plik seungMnist.mat i zobacz jakie zmienne pojawiły się w przestrzeni roboczej. Jakie wartości przyjmują te zmienne.
Wykreśl niektóre kolumny za pomocą instrukcji imagesc.
Lab. 3.2. Przyjmij dwie cyferki, cl i c2 (np. cl = 5, c2 = 9).
• (a) Wyznacz funkcję dyskryminacyjną która potrafi rozpoznawać między cyferkami cl i c2.
• (b) Określ macierz pomieszania (confusion matrbc).
• (d) Napisz makro wyświetlające dynamicznie źle zaklasyfikowane cyferki (po wyświetleniu każdej cyferki ma nastąpić krótkie zatrzymanie obrazu).
• (e) Zmodyfikuj makro w punkcie (d) tak, żeby różne cyferki były wyświetlane za pomocą róńych palet (colormap)
• (c) Zbudowaną funkcję dyskryminacyjną przetestuj na pliku testowym. Wyznacz również macierz pomieszania (confusion matrix).
Lab. 3.3. Wykonaj analizę danych z twarzami w podobny sposób jak analiza danych cyferkowych.
Uwaga. Dane cyferkowe są w pojedynczej precyzji. Do obliczeń numerycznych trzeba zamienić dane uint8 na podwójną precyzję (instrukcja double). Dane z twarzami są już w podwójnej precyzji.