47 lines
2.7 KiB
Markdown
47 lines
2.7 KiB
Markdown
![]() |
#### 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.
|