To jest stara wersja strony!
Laboratorium 3 - Concept Learning
Literatura: Tom M. Mitchell, Machine Learning, Rozdział 2.
Lista i opis plików
Zbiór danych
Załóżmy, że mamy następujący zbiór danych:
Sky | AirTemp | Humidity | Wind | Water | Forecast | Enjoy |
Sunny | Warm | Normal | Strong | Warm | Same | Yes |
Sunny | Warm | High | Strong | Warm | Same | Yes |
Rainy | Cold | High | Strong | Warm | Change | No |
Sunny | Warm | High | Strong | Cool | Change | Yes |
Opisuje on dni ocenione przez pływaka pod względem tego czy sprzyjamy one treningowi, czy nie. Pierwsze cztery kolumny zawierają dane na temat poszczególnych parametrów pogodowych dnia, natomiast kolumna EnjoySport przechowuje ocenę pływaka.
Każdy z parametrów może przyjmować następujące wartości, które w Octave zapiszemy za pomocą liczb:
Sky = [1,2,3]; %['Sunny','Rainy','Cloudy'];
AirTemp = [1,2]; %['Warm','Cold'];
Humidity =[1,2]; %['Normal','High'];
Wind = [1,2]; %['Strong','Weak'];
Water = [1,2]; %['Warm','Cool'];
Forecast =[1,2]; %['Same','Change'];
Enjoy = [0,1]; %['No','Yes'];
Analogicznie, zbiór danych treningowych będzie zatem wyglądał tak:
%Sky, AirTemp, Humidity, Wind, Water, Forecast
X = [1,1,1,1,1,1;
1,1,2,1,1,1;
2,2,2,1,1,2;
1,1,2,1,2,2]
%Enjoy
C = [1;1;0;1];
Uwaga Ostatnią kolumnę tabeli (Enjoy) przechowujemy w osobnej macierzy C.
Hipoteza
Zakładamy, że dla każdego atrybutu funkcja hipotezy będzie opisana za pomocą
Na przykład hipoteza opisująca sytuację, ze pływak uważa jedynie zimne dni z dużą wilgotnością (AirTemp = Cold,Humidity = High) za odpowiednie do treningu wyglądałaby następująco:
h = [Inf,2,2,Inf,Inf,Inf]
Find-S
Zaimplementuj algorytm Find-S, w pliku findS.m. Algorytm wygląda następująco:
Initialize
to the most specific hypothesis in
For each positive training instance
For each attribute constraint
in
If the constraint
is satisfied by
, then do nothing
Else replace
in
by the next more general constraint that is satisfied by
Return
Uwaga Zwróć uwagę, że the most specific hypothesis in H to w przypadku naszej notacji: h=[0,0,0,0,0,0]; Wykorzystaj funkcję zeros, tak aby algorytm działał dla innych danych wejściowych (o innych wymiarach).
Przetestuj działanie za pomocą skryptu ex1.m
Sprawdź poprawność działania algorytmu skryptem check.m
List-Then-Eliminate
Jednym z ograniczeń algorytm Find-S jest to, że podaje on wyłącznie jedno rozwiązanie, podczas gdy hipotez, które są prawdziwe dla naszego zbioru uczącego jest więcej. Te hipotezy określa się mianem tzw. version-spaces. Definiujemy ją następująco:
To że funkcja jest zgodna ze zbiorem uczącym (consistent) oznacza, że:
Consistent
Zaimplementuj funkcję consistent w pliku consistent.m
Przetestuj jej działanie za pomocą check.m
ListAllHypothesis
Zaimplementuj funkcję listAllHypothesis w pliku listAllHypothesis.m
Przetestuj jej działanie za pomocą check.m
Zastanów się Jaki rozmiar będzie miała przestrzeń wszystkich hipotez dla naszego przykładu?
LearnThenEliminate
Zaimplementuj w pliku learnThenEliminate.m algorytm wyszukujący version-space dla naszego zbioru uczącego.
Przetestuj jego działanie za pomocą skryptu ex1.m oraz check.m.
Candidate-Elimination