SI_2020/Andrzej_Preibisz.md

47 lines
2.7 KiB
Markdown
Raw Normal View History

2020-05-11 12:18:40 +02:00
#### Opis problemu
Metodą uczenia, którą postanowiłem zaimplementować w projekcie były
drzewa decyzyjne. Pola reprezentujące regały, lub chłodziarki
różnią się między sobą temperaturą, oraz wilgotnością powietrza w danym miejscu.
Paczki z kolei mogą zawierać towary następujących rodzajów:
- towar zwykły(normal)
- mrożony(freezed)
- kruchy(fragile)
- łatwo niszczejący pod wpływem wilgoci (keep_dry)
- łatwopalne(flammable)
Paczki zawierające określony rodzaj towarów mają pewne parametry
środowiskowe, w których zdecydowanie nie powinno się danego typu towaru
przechowywać. Jako przykład może posłużyć mrożone jedzenie, którego
stosunkowo szybko ulegnie pogorszeniu w temperaturze dodatniej, lub lakier,
który zdecydowanie nie powinien znaleźć się w części magazynu, gdzie panuje temperatura 30 stopni.
Celem drzewa decyzyjnego jest w tym wypadku przewidzenie prawdopodobnej szansy na to, że towar po przechowywaniu
na danym regale przez dłuższy czas będzie w dobrym stanie.
##### Zastosowane drzewo
Drzewa decyzyjne dzielą się ogólnie na dwa rodzaje - drzew klasyfikujących, lub drzew regresyjnych.
Drzewo klasyfikujące pozwala podzielić zmienna przewidywaną na kategorie, na przykład Tak i Nie.
Drzewo regresyjne z kolei dostarczy nam informacji o średniej wartości zmiennej estymowanej przy
danej wartości atrybutów.
W świecie projektu różny rodzaj towarów ma różne "progi", od których można go kłaść na regale X,
na przykład kładąc paczkę z lakierem/benzyną na regale lepiej mieć trochę większą pewność, że towar nie nagrzeje się nadmiernie, aniżeli
kładąc książkę - że nie zniszczeje od wilgoci. W związku z tym zamiast prostej odpowiedzi Tak/Nie na pytanie
czy dany obiekt można położyć na danym regale potrzebna była przewidywana wartość prawdopodobieństwa że w danym miejscu
zachowa się on w dobrym stanie. Wszystkie te progi wynoszą odpowiednio:
``
PACKAGE_PLACE_TRESHOLD = {
"normal": 0.8,
"freezed": 0.85,
"fragile": 0.85,
"flammable": 0.9,
"keep_dry": 0.8
}
``
Zdecydowałem się więc na wybór drzewa regresyjnego.
Biblioteką której użyłem w celu implementacji drzewa jest scikit-learn.
Najważniejszym problemem oprócz dokładności oszacowań dokonanych przy pomocy drzewa było uniknięcie overfittingu(przepasowania),
czyli sytuacji, w której drzewo perfekcyjnie dopasuje się do danych ze zbioru uczącego, jednak
z danymi spoza tego zbioru poradzi sobie już dużo gorzej. Oprócz błędnej oceny danych innych niż ze zbioru uczącego sygnałem wskazującym na overfitting drzewa
jest zbyt duża jego głębokość drzewa (odległość od korzenia do najdalszego liścia), oraz liście zawierające tylko 1 rekord.