Magamról

Saját fotó
Főiskolai, majd egyetemi diplomamunkáimtól kezdve világ életemben, adatok, adatbázisok, adattárházak (leginkább Oracle) környékén mozogtam. Mostanság adattárházasként, adatbányászként élem napjaimat.

2015. december 4., péntek

Ensemble Learning és Scikit-learn

.
Kedvenc PhD-szemináriumom legutolsó csütörtöki alkalmán, ifj.Benczúr András kiváló előadásában lehetett sok érdekességet hallani a fenti témákban és azok mentén.

Adatbányászatban nagyon sok szép érdekesség, kihívás van, az egyik legizgalmasabb, az összefoglaló néven Ensemble Learning
* Látványosan, jobb prediktív performancia figyelhető meg annak során, ha többféle tanítás erényei ennyire erősen tudnak összegeződni.
* Döbbenetes volt látni a Netflix-versenynél, hogy az élbolyban hogy nyert teret.


Bagging(=Bootstrap Aggregating)
* Olyan ensemble technika, ahol nem egyetlen tanító készlet, hanem visszatevéses véletlen rekord-mintavételezéssel több tanító készletet csinálunk és tanítunk.
* Sok tanítókészletnél nem is kell dokumentálni a visszatevéseket.
Majd szavazással eldöntjük a végsõ osztályozási cimkéket.
* Random Forest verziója változókból is vesz mintát (=bagging+random feature selection), még ma is nagyon erős módszernek számít.

Boosting
* Jó a bagging, de nem véletlenre kéne bízni a fenti visszatevéses véletlen rekord-mintavételezést.
* Azokat a pontokat akiket visszatérõen rosszul osztályozunk, azokat súlyozott mértékben gyakrabban tegyük vissza a tanítókészletekbe.

Adaboost (=ADAptive BOOSTting), legelsõ
* Adaptive abban az értelemben, hogy a következõ osztályozást, az elõzõ osztályozás hibái alapján csináljuk.
* Egy mélységû döntési fák az osztályozók
* Magyar nyelvû érdekesség lóverseny-fogadásos kerettörténettel
* A Tutorial on Boosting (Yoav Freund, Rob Schapire), nagyon jó (vizualizációkkal).
+ Cikk
+ Slides-version1
+ Slides-version2
+ Slides-version3

Logitboost

* Pillanatnyi log likelihood
* Döntési fából regressziós fát csinál
* Error rate (RMSE=Root Mean Square Error) tanítása
* Netflixes 5-ös rating helyett 4 a jó, akkor a különbséget kell csak tanítani.
* Tutorial

Gradient Boosting Trees


* Logitboost RMSE-re tanítása túl egyszerû brutalitása miatt
* Szofisztikáltabban a gradiensre/residual-ra kellene tanítani.
* Outlierek túlsúlyozása jobban kivédhetõ.
* Itt is regressziós fás tanítás van, többféle loss-függvény lehetséges (nem feltétlenül a default a jó).
* Tutorial


ÉRDEKESSÉGEK: 

Logisztikus regresszióról lassan érdemes lenne már lejönni.
* Adatelõkészítés, normalizálás, regularizálás praktikákkal is csak alulról közelít a jóhoz, kvázi minden esetben (sosem tud győzni).
* Bizonyos korrelálási anomáliák nagyon nehezen vagy sehogyse gyógyíthatók ki belőle. András hozott egy érdekes, egyszerű demó-példát, ilyen rendellenes működésre.
* Mindez abban kulminál, hogy ami jónak néz ki tanító oldalon, az a teszt-oldalon már gyenge lesz.


Döntési fáról is érdemes lenne lejönni.
* Minden elõnye mellett azért problémás lokális módon rossz cimkézõ döntéseket tud hozni
* Nem tud "visszanézni", vágásokon keresztül
* Ezen a konkrét problémán segít az Ensemble Learning.

Wekáról is érdemes lenne lejönni, még ha annyira nem is egyértelmű a dolog.
* Kiváltani Scikit-Learn & iPythonnal
* Weka gazdagabb ugyan algoritmusokban, pl.: logitboost például van benne, ami Scikit-Learn-ben nincs.
* A Sci-kit learn vagy jó csv-t/inputot kell kapjon (elõfeldolgozás után), vagy meg kell békélni típus-szegény NumPy-jal.
* De a Scikit-Learn tálalásban, felhasználóbarátságban összehasonlíthatatlanul jobb, mint bitang nagy Java-kódokat mutogatni (non-visual-flow esetben).

Plot helyett írtak egy pár soros kicsi Python-kódot, amivel a faépítések részleteikben is jól jeleníthetők meg.

Határozottan létező kutatási irány, hogy a modellparaméterek automatikusan jöjjenek, szoftverből. Már most verik a parameter-free Data Science Machine-ok a versenymezőnyök nagyságrendileg 2/3-dát.


Titanic-Kaggle Challenge (oktatási célzattal)
* Idén decemberben zárul.
* Prediktálni kell ki lesz áldozat a hajótörés után, a rendelkezésre álló alapadatokból (hány éves, milyen nemû, milyen típusú/drága jegyet vett, egyedül volt-e, stb.).
* Nagyon jó hatásfokkal lehet osztályozni
* Volt aki visszafejtette a dataset-et, neten található publikus infók alapján (áldozatnév szintjére), így az adatbányász-feladatot megkerülve 100% minõségben tudott osztályozni.

Nincsenek megjegyzések:

Megjegyzés küldése