EDzGBD/L/z2
From WikiZMSI
[edytuj]
Na zajęciach
- Z repozytorium UCI Machine Learning Repository przygotowano plik z danymi o nowotworach piersi: wdbc.txt (Wisconsin Breast Cancer).
- Należy wykorzystać skrypt MATLAB-owy breastCancerRead.zip, który wczytuje dane (identyfikator pacjentki usunięty; zmienna Y po wykonaniu skryptu przebywa jako ostatnia kolumna; wartości 1 -> nowotwór złośliwy M, 2 -> nowotwór łagodny B).
- Zaimplementować 3 skrypty obliczające różne wersje funkcji nieczystości (impurity function) jako: błąd klasyfikacji, entropię, indeks Gini'ego.
- Zaimplementować skrypt budujący rekurencyjnie pełne drzewo CART (dla podanego na wejście zbioru danych i wybranej funkcji nieczystości).
- Rozszerzyć skrypt budujący drzewo CART wprowadzając dodatkowy parametr - maksymalną głębokość drzewa.
- Zaimplementować skrypt, który stworzy ciąg drzew o coraz większej głębokości 1, 2, ..., aż do maksymalnej głębokości pełnego drzewa, a następnie wybierze najlepsze z nich, tj. te dla którego otrzymany zostanie najmniejszy błąd klasyfikacji na danych testowych. Sporządzić wykres eksperymentu (w układzie głębokość, błąd testowy).
[edytuj]
Do domu
Dla przyporządkowanego sobie zbioru danych wykonać:
- Zbudować pełne drzewo CART i przetestować dokładność klasyfikatora (także czułość i specyficzność).
- Przyciąć drzewo za pomocą ograniczania głębokości (wraz z wykresem).
- Zaimplementować skrypt wybierający optymalne przycięcie pełnego drzewa, mając podaną wartość kary za 1 liść (jako parametr). Skrypt powinien być wyposażony w przełącznik: ocenianie wszystkich poddrzew lub ocenianie tylko tych poddrzew, które powstają poprzez dodawanie najlepszego węzła (zachłannie).
- Zaimplementować skrypt wybierający optymalne przycięcie pełnego drzewa, mając dany zbiór kandydatów na wartość kary za 1 liść oraz wykonując procedurę kroswalidacyjną. Wykorzystać skrypt z poprzedniego punktu.
- Sporządzić wykres eksperymentu przycinania w układzie: wartość kary (oś malejąca), błąd na danych testowych.