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 30., szerda

Prekopcsák Zoltán [RapidMiner] trollkodása


Előljáróban, a tények kedvéért rögzítem: 
Prekopcsák Zolit 2007 óta ismerem a BME-ről. Gáspár(-Papanek) Csaba révén ismertük meg egymást több más kollégájával párhuzamosan. Azóta perdöntően szakmai konferenciákon futottunk össze. Fennálló jónak mondható kapcsolatunkat jelezhette például az is, hogy együtt ebédeltünk (konferencia-ebédszünetben), jóízűt beszélgetve (máig emlékszem rá).

SAS?

Fenti előzmények után derült égből villámcsapásként ért, hogy a fentebb linkelt blogposztom kommentrészlegében kvázi rámtörte az ajtót, szakmában általam nem igazán látott (és nem elfogadható) stílusban. Ha valaki elolvassa a teljes kommentfolyamot, észreveheti, hogy cca. kétszerannyi idősként én - értelmezésemben igazságtalanul, és otromba módon - megtámadottként, még én próbáltam úriemberként Zoli hevességét csillapítani. Az egészet el is felejtettem volna, ha hónapokal később, nem tanulva, észlelve semmit bírálható magatartásából, ugyanott folytatta, ahol abbahagyta: környezete sem tudott ráhatni.

Mi volt a linkelt rövid posztom negatív kontextusú üzenete? 2015-ben miért kell SAS-t tanítani,
* drága oktatói erőforrásokat erre pazarolva,
* SAS-nak több okból eredeztethető marginalitása okán
* itthon Magyarországon kevéssé hasznosítható várható eredményekért,
* árukapcsolás részeként (több más fontos topikkal együtt)?

Ami a linkelt blogposzt kommentfolyamában történt Prekopácsok Zoliék részéről, az értelmezésemben szintiszta offtopik trollkodás.

- Kötözködés a visual flow kapcsán, ami aztán csendben kimúlt a reagálásom nyomán.
- Terelés az R-rel.
- Irányomba való, minősítgető személyeskedés, minden tárgyszerűségtől, indoklástól mentesen ("ámokfutásom", "konstruktivitás nélkülözése" és társai)
- Kognitív disszonanciából eredő(?) további terelés. Mert van magyarországi SAS álláshirdetés, ezért már kéne SAS-t tanítani ilyen vesézett fókusszal?
- További érveléstechnikailag védhetetlen terelés: mi köze a SAS-nak tantervbe emeléséhez (annak vitatásához), hogy egyébként alulfizetett oktatók tanítják és világszinvonalon? Én is mondtam, hogy a tanterv SAS része is jó, a SAS-komplementeren felül is. A blogposzt által felvetett probléma ismétlem az volt, hogy miért kell SAS-t így pusholni. Lásd még értelmező olvasás! ;)
- Awk-kal való felesleges szúrkálódás.
- Tiszteletlenséggel való vádaskodás.
- Majd ezek után konklúzióként, a szakmai, stilisztikai, világnézeti közös talapzatról "letaszításom".

Az én konklúzióm a fentiek tükrében:
- Prekopácsok Zoli maga írta meg, hogy "kevés nála érdekeltebb ember van a SAS bukásában az országban".
Nem érkezett egyetlen elemezhető, kontextusban maradó, diskurzust képezni tudó pozitív érv sem miért kéne SAS-t tanítani, a kommentfolyam hosszúsága ellenére sem.
- Minden offtopik ellenérv-kezdeményt, tévedést igyekeztem cáfolni, ami aztán elhalt (értelmezésemben nem miattam).
- Személyem konkrét megtámadása, teszem hozzá magas lóról. Csak tudnám mi predesztinálja erre Zolit?!
- Próbáltam a félresiklott kommunikációt helyrehozni, sehogysem jártam sikerrel (azt gondolom nem miattam, hanem Zoli akart mindenképpen, mindenáron ütni rajtam, amit még így is elviseltem volna, ha nincs folytatás több hónappal később).

Számomra ezek - pláne ismétlés okán - kimerítik a trollkodás fogalmát. Annyira hogy muszáj volt ezt a blogposztot szentelnem neki.


[Data Science] Top5 leginkább (érdemtelenül) túlárazott szoftver

Prekopcsák Zoltán, úgy is mint 2014 augusztus óta "VP Big Data, RapidMiner, Developing and executing the Big Data strategy of RapidMiner and managing the Hungarian subsidiary", a fenti blogposztom kommentrészlegét végiggtrollkodta a RapidMiner kapcsán.

Zoli ingerültsége, ha nem is védhető, pláne prezentált formájában, RapidMiner/Radoop-érintettként magyarázható. És ha már egy ilyen nagy ember vette a fáradságot, hogy beszóljon itt a végeken egy magyar blogosnak, gondoltam én is szánok egy posztot a tisztánlátás érdekében "sok bába közt ne vesszen el a gyerek" jeligével, mielött elkezdenénk könnyeket hullatni a RapidMinerért, az én "rosszindulatú", "hiányos" blogtevékenységem okán.


Előzmény:
- RapidMiner v5.3-ig open-source, community-edition-nel bíró verzió volt, aminek korrekten volt supportos commercial alternatívája. Ebben a minőségében komoly tekintélyig jutott teljesen megérdemelten. Aztán 2013 novembere környékén a v6.0-val egy értelmezésemben (1) elhibázott, (2) durva, (3) érintett szakmai közönség részére rendkívül káros történés történt.
(1) A v6.0-nak megszűnt a community edition-je (v5.3-é megmaradt)
(2) Született egy értelmezésemben értelmetlen és használhatatlan 1GB-os memórialimitítű "starter", ami freeként lett alternatívája a community edition-nek.
(3) A RapidMiner Studió (és hol vagyunk még a Servertől) négy fizetős verziójából kettő annyira durva lett, hogy ki sem merték írni. "Ask" lett.
(4) A két megjelölt árú kiadás beárazása "cserébe" nagyon durva lett, főleg a v5.3->v6.0 előrelépés minőségének arányában.
(5) Volt egy http://rapidminer.com/pricing/ link, ahol az árak megtekinthetők voltak

A linkelt posztomban fel "mertem" tenni azt a kérdést hogy mi van ha olyan progresszív a hiányzó árszabás,  hogy be sem merték vállalni? Miközben korábban megjegyeztem, hogy "félreértés ne essék lehetnek egyedi árajánlatok, egyedi hozzáadott értékekkel, megegyezésekkel, de azt vélelmezem "dobozos" terméknél elvárható valamiféle listaár. Annyira nem rocket science az árképzés, hogy ezt minden határon túl meg kéne úszni".


Jelen állás:
Ha a költségtranszparenciás problémám, igényem nem érthető, mondok más analóg példát, ugyanarról a "nyugat"-ról, ahonnan a RapidMiner érkezik. Álláshirdetések fizetésmegjelőlései. Ami itthon  álom, az kint valóság: szakmánkban pontosan lehet tudni fizetési referenciákat, kategóriákat, intervallumokat. Ez ugyanúgy nem azt jelenti, hogy nem lehetnek ettől eltérő egyedi megállapodások a dolgozók és cégeik között, skillek, hasznosság etc. mentén.

A korábbi "pricing" link az alábbi beszédes linkre dobja ma már az érkezőt: https://rapidminer.com/pricing-quotes/. Itt szó nincs konkrét formában "Rapidiner szerverről", mint azt Zoli oly hosszasan próbálta volna a RapidMinere védelmében felhozni,
"Get your tailor-made predictive analytics platform. Complete this form - we will be happy to find the best option for you."
Megjegyzés: Az Alteryxtől, Daton-n át, nagy konkurrens Knime, IBM SPSS meg SAS-ig mindenki tud serverárakat is közölni, csak a RapidMinernek okoz ez megoldhatatlan  nehézségeket. A blog olvasóira bízom annak eldöntését, hogy ezek a Zoli által felhozott "nehézségek" mennyiben indokoltak, mi a helyesebb hozzáállás a RapidMiner esetében.

Mivel 2013 novembere óta az volt érzékelhető (számomra mindenképpen), hogy a RapidMiner vérében van - egy új és nehezen védhető trendi jegyében - az árakról való, más termékeknél jelenleg perdöntően nem jellemző titkolózás, nekem ennyiből az jött le, hogy a maradék publikus, egy klikkre elérhető, nyilvános árak is eltüntek.

Zoli, említett trollkodásában, azt "elfelejtette" megemlíteni, amikor adott egy "hónapok óta létező" linket az új árakról (amiből eltünt az említett két "Ask"), hogy hány hónapról is beszélünk. Az én screenshotom 2015 május-júniusa körül készült. Azaz a screenshoot 18+ hónapot valid volt (v6.0 kezdete óta).

Zoli újkeletű információi a linkelt blogposztom óta, összegezve:
- v6-nál ismét van open source (github-on).
- Megszűnt a kárhoztatott 1GB memórialimit is evvel.
- Megszűnt a két "Ask" a RapidMiner Studio árazásánál.
- "Sikerült" a RapidMinernek a honlapján értelmezésemben ritka pocsék módon, ügyetlenül, félrevezetően, hiányosan tálalni. Én értem, hogy Zoli minderről könnyedén tudhat, az említett poziciójánál fogva, de a plebsnek, ahová én tartozom, hadd legyen már meg a tévedés joga a pontos helyzetről, a "rosszindulat" vádja nélkül.

Azaz az üzenet: a RapidMiner "hiányosságai" ne már az én blogolási tevékenységem nyakába legyenek varrva.Nyilván teret adok, meg örülök minden új információnak, de azt a felháborító hangot és módszert, amit Zoli képviselt trollkodásában, azt visszautasítom.

Rendkívüli módon sérelmezem Zolinál, hogy első hozzászólásának első konkrétumos fele teljesen hamis képet fest (amit egy külön hosszú blogposztban kell rendbetenni), második felében minden konkrétum és előbbiek miatt minden alap nélkül nélkül minősítget engem és tevékenységemet illetve a továbbiakban vádol engem, hogy utálom őt. Ennyire Zoli sem nagy ember, hogy ezt megtehesse (értelmezésemben).

Szó nincs róla, hogy utálnám Zolit, csak rámutatok trollkodására. Zolival szemben én embert magát sosem támadok, csak és kizárólag tevékenységet.

Hirtelenjében nem is tudom mi a jobb: ha Zoli ezt szándékosan, avagy szándék nélkül: értelmező olvasás képességének hiányában teszi.

Vegyük észre a fentiekből, hogy az általam kárhoztott RapidMiner dolgok mindegyike

(1) hosszú ideig létezett, amit Zolinak illett volna elismernie egy korrekt diskurzus esetén.

(2) pont azokban a dolgokban történt változás, amit én kifogásoltam a linkelt blogposztomban, Azaz valid volt a blogposztomban a RapidMiner "szégyenpadra" ültetése (egyébként csak 5-dikként. Jegyezzük meg ezen a ponton: ez a termék kiválóságáról, rosszasságáról egy szót sem mond, csak és kizárólag a Rapidminer vezetők attiüdjéről, hozzáállásáról jelez bármit is). Nyilván eljutott a Rapidminer vezetők fülébe, hogy az általam kifogásoltak nem voltak túl jó ötletek és/vagy az értékesítés sem hozta az elvárt szintet és léptek (szvsz).

(3) Ezek az örvendetes változások azonban nem teszi meg nem történtté a RapidMiner korábbi v6-ot övező súlyos félrelépését.

Zoli! Kérve-kérlek, tartsd meg ígéretedet, és ilyen attitüdöddel, viselkedéseddel tartsd magad távol ettől a blogtól.

2015. december 12., szombat

DATO GraphLab Create - INSTALL

.
Ez egy rövid blogposzt lesz, hogyan rakom én fel Windows alá a tárgybeli cuccot.

Ugye létezik egy Dato Launcher nevű cucc, nálam aktuálisan v1.2.2.2 verzióban, 54MB terjedelemben.
- Na ez az amit nagy ívben el kell kerülni, akkora hulladék (egyetlen pozitívuma, hogy szépen gyorsan uninstallható)
- Ez az ami az aktív user profile alá, ahol a legkevesebb keresnivalója van, akar rakni egy 1.6 GB-os Anaconda install-t majd a GraphLab Create-t
- Ezen kívül semmi más értelmes funkciója nincsen a cuccnak (számomra nem látszik).
- Mindezt úgy, hogy a gépen ottfelejti a 350MB Anaconda-Install-kitet utána, csomó szeméttel együtt.
- Nem rábeszélhető sehogyse, hogy ne akarja deaktiválni a jelenlegi Anaconda-környezetet, úgy sem, hogy a sajátját installom külön szeparáltan.
- Azaz opcionálisan kérhető egy FAQ a böngészőbe, de vagy belevág az ember a felesleges és gusztustalan őrületbe vagy kilép a cuccból. Én kilépek és innentől uninstall, hogy soha többet ne lássam (kézzel kitörölgetve a maga után hagyott szemeteket).
- De persze gondosan lementem a 350 MB-os Anaconda-2.3.0-Windows-x86_64.exe-t, hiszen ezt szereti a GraphLab Create maga alatt tudni. Mellesleg érdekes verzió ez, mert a gyári Anaconda (Python v2.7-hez): Anaconda2-2.4.1-Windows-x86_64.exe, ami kisebb verziószámot takar.
- Én egyébként azt vélelmezem, hogy kell menjen a gyári Anacondával is (későbbi up-to-date-elések miatt mondom ezt), de nekem megfelelt a DATO-s Anaconda is.

Létezik egy command line install leírás.
- Mivel én egy szimpla Anacondát és DATO GraphLab-ot akartam, ezért kihagytam a virtuális környezetet.
- Aki Python v3.5-öt tolja már (azt gondolnám helyesen), annak kellhet plusz DATO GraphLab-os virtualis környezet.
- Ugye a DATA Graphlab Create-t lehet installni meglévő conda-környezetbe ami kétféleképpen is mehet
* szimpla lib-install add-on a meglévő környezetbe (envs-es környezet nélkül), amit én preferálnék ugye, meg
* plusz conda-s környezetként envs alá, ami nem azonos a virtuális környezettel ugye:
conda create -n dato-env python=2.7 anaconda
- Őszintén bevallom nekem feleslegesnek látszik (hacsak a peremfeltételek nem követelik meg) akár külön conda-s környezetbe, akár virtuális környezetbe installni a DATO GraphLab Create-t.
- Számomra biztos, hogy a linkelt command line-os leírás elbírna pár szót a témáról. Főleg, hogy "ajánlott" az opció.

1.lépés: default értékekkel és egyébként magától "silence" install c:\Anaconda alá
Anaconda-2.3.0-Windows-x86_64.exe
PS: Egyébként erre módosul utána a PATH: %PATH%;C:\Anaconda;C:\Anaconda\Scripts

2.lépés: az igényeim miatt ("szimpla lib-install"), kihagytam a környezetes utasításokat és az alábbi paranccsal folytattam.
conda update pip

3.lépés:
- Nyilván az email és product key behelyettesítendő
- Kötelező az internet kapcsolat, mert online serverről veszi a licence adatokat.
pip install --upgrade --no-cache-dir https://get.dato.com/GraphLab-Create/1.7.1/your registered email address here/your product key here/GraphLab-Create-License.tar.gz

4.lépés:
conda update ipython ipython-notebook

5.lépés:
ipython notebook

6.lépés: böngészőben (automatikusan a fenti hatására):
http://localhost:8888/tree#

7.lépés: böngészőben evvel már lehet Ipythonozni.
http://localhost:8888/notebooks/Untitled.ipynb?kernel_name=python2 

8.lépés: Ez mutatja, hogy .használható-e a GraphLab Create:
import grahlab + shift+enter

9.lépés: Például innen is lehet elindulni:
https://dato.com/learn/userguide/install.html
https://github.com/dato-code/userguide


Végül megúsztam az egészet: 1.6 GB-ból. Lehet, hogy én vagyok eltévedve de egy évi 4.000 USD-be kerülő szoftvertől, ennél intelligensebb install-eljárás és dokumentálás elvárható lenne.

2015. december 11., péntek

[Data Science] Top5 leginkább (érdemtelenül) túlárazott szoftver

.
- Ez a rövid blogposzt már a DATO-nál elkezdett érlelődni, pedig a SAS vagy RapidMiner már önmagában adott volna elég gyújtóanyagot korábban is :)
- Az alábbiakban csak olyan szoftverek kerülnek elő, amik valamiképpen
(1) előfordultak a praxisomban ÉS
(2) helyet követelnek maguknak.
- Így például a KXEN/SAP vagy Insightful Miner/TIBCO - mivel sosem volt fókuszban nálam - így nem léphettek elő "trónkövetelőkké".

- Nem is olyan könnyű árakhoz hozzájutni, ami  még inkább "visszataszítóvá" tudja tenni a témát (számomra).
- Nekem ne jöjjön senki avval, hogy "ügyfélorientált" meg "személyreszabott" akar lenni a vendor, ezért nem közöl ára(ka)t. Számomra ez sokkal inkább jelent
(1) átláthatatlanságot,
(2) nem tiszta viszonyokat,
(3) sőt korrupciós melegágyat (hiszen annyiba kerül, amennyit "megér" az ügyfélnek).
Ha ez kint nyugatabbra is dívik, bele sem akarok gondolni nálunk itthon milyen lehet a helyzet.
- Az olyan aljasságokról nem beszélve, hogy a kis cégek fizethetik a jóval teljesebb árat publikusan, míg a nagy multik fű alatt
(1) akár kis csomag(!) esetén is
(2) ártárgyalás nélkül indulásként is(!), akár 80%(!) árengedményről indulnak (tapasztalatból mondom: pl.: IBM SPSS Modeler, vagy nálam ilyen az Anaconda vagy a DATO hozzáállása is)
- Félreértés ne essék lehetnek egyedi árajánlatok, egyedi hozzáadott értékekkel, megegyezésekkel, de azt vélelmezem "dobozos" terméknél elvárható valamiféle listaár. Annyira nem rocket science az árképzés, hogy ezt "minden határon túl meg kéne úszni".


1. ANACONDA
A kétes hírű verseny első helyezettje egyértelműen, az én értékelésemben (aminek része ugye az egyébként különállóan szépen könnyedén elérhető nagyon "trendi" okos remek scikit-learn is (függőségeivel együtt is).
A javukra legyen mondva:
+ Anaconda Subscriptions url, világos, egyértelmű, teljeskörű információt ad.
+ A free verzió nagyon elterjedt, nagyon hasznos eszköz.
+ "Numba" nem-CUDA része open source lett, ahogy az "MKL Optimization" is.
Viszont:
- Azért is "nyernek aranyérmet", mert rögtön három termékük is potenciális kandidáló.
- A 10.000 USD-s verzió semmi lényegi érdemi hozzáadott értéket nem ad. Ami érték az 30.000 USD-től indul (iopro, numbapro, cuda, accelarate, etc.)
- A 60.000 USD meg azért "viszi a pálmát", mert az Anaconda open source-csomagokat rámol egybe, amiért egyedül "felel" az az összerámolás, illetve saját proprietary csomagok.
- A 60.000 USD/év még USÁ-ban sem kevés, megkockáztatom még pörgös gazdasági években sem, nemhogy a költségcsökkentések korában. Fel nem fogom hogy állhat össze a termék pénzes ügyfélköre. Az itthoni helyzetről nem is beszélve: ~18 millió forint évente kb. a semmire.
- Mindezt úgy, hogy pár hete 400 USD körüli összegért az összes lényegi PRO* Anacondás proprietary csomag elérhető volt, úgyis hogy az "MKL Optimization" és "Numba" teljes egészében fizetős volt. "Kicsit" emelkedtek az árak ;)




2. DATO
Rögtön a másik nagy "cápa", Python-világban.
A javukra legyen mondva:
+ DATO Prices  szintén egyértelmű árlista
+ Létezik Amazonos EC2-verzió is, de sok közelebbit nem lehet róla tudni (és engem annyira nem is érdekelt a rossz tapasztalatok után, bevallom férfiasan)
Viszont
- 4.000 USD/gép/év olyan szinten túlárazott egy korábban open source termékre, hogy nálam második helyet ér ezen a "negatív listán".
- Nincs közbülső ár az akadémiai szféra és az üzleti szféra között. Az előbbi korlátlanul ingyen bármire használhatja (1 év után, megújíthatóan), az utóbbinak kőkeményen perkálnia kell a teljes összeget. A trial-ban emlegetett "personal licence" nem létezik, csak beetetésre van ott (utána jártam levelezésben a témával foglalkozó posztom óta).
- A cucc csak Python v2.7-re létezik
- Csak külön enviromentként installható nagyon zűrősen.
- A default path Windows-on a %user profiles%, oda csűr be egy közel 2 GB-os anaconda környezetet (megváltoztathatlanul). Ezen azért sokat kellett "agyalnia" valakinek. ;)
- Használhatatlanná teszi az alap grafikus installer a korábban települt Anacondá-t. Valahogy persze biztos lehet workaround-t találni hogy lehessen azt is használni: de talán ennyi is elég ahhoz, hogy egy ilyen szinten kiforratlan termék erős túlárazásáról beszéljünk.
- A cucc a scikit-learn-nel összemérhető, ővénél részben erősen kisebb algoritmus-választékkal. Míg performanciát illetően állítólag jobb, (nem teszteltem eddig). Gondolom a CUDA alkalmazásából eredhet a különbség.
- A Deep Learning-implementáció túlzott ígéretei is tudhatják szkeptikussá tenni az embert, majd meglátjuk igazolja az idő/élet a cég optimizmusát.







Az első két helyezett tehát avval tűnt ki, hogy kvázi a semmire kérnek horror összeget.
A következő cuccok ugyan adnak "valamit", de azt totálisan eltévedt árakon.


3. SAS
- Maximális "kiépítésben" egy szegényes és kvázi egyáltalán nem fejlődő algoritmusválasztékú cuccért közel félmillió dollárt (150 millió forint+ 50 millió évenként) elkérni azért arc kell. ;) Mit mondjak: a hülyének is megéri. Egy szimpla "halott" dobozos termékért, hiszen a munka és a további érdemi tőkeigény csak eztán jön.
- Az IBM SPSS Modeler árképzése sem a visszafogottságáról híres, meg ugye ott egyéb aljasságok is tettenérhetők, de a fasorban sincs ilyen méretű "ár-elszállás", az én meggyőzödésem szerint nagyságrendekkel jobb termékért cserébe.




4.Salford Predictive Modeler Suite
- Nagyon ígéretes, ám élesben, demó-szintről túllépve, rendesen kipróbálhatatlan termék.
- Pár - interpretálás oldalon is erős - algoritmust ad csak, bár azokkal nyertek már versenyeket, a hírek szerint. A Microsoft is csak kevés (szintén ígéretes algoritmust ad, töredék áron).
- Hivatalos "személyre szabott" pár hetes árajánlatból ollóztam az árakat:



5. RAPIDMINER
- Bár csak ötödikek lettek a "szégyenpadon", de inkorrektségben az első helyen vannak (nálam), a hiányzó árakkal.
- Korábban pár hete még RapidMiner Prices linken elérhetők voltak az árak. Ma már nem. És nemcsak a két utolsó hiányzó ár hiányzó mivolta.
- Ha csak a lineáris háromszorozást vesszük: 10.000 USD, 30.000 USD minimum lehet a 2 ASK helyén (sosem érdekelt és már nem is fog, szvsz, így nem jártam utána).
- De mi van ha olyan progresszív a hiányzó árszabás,  hogy be sem merték vállalni? ;)
- Az összes általam látott free-verzió között talán a RapidMineré a legértéktelenebb (pedig sok ipari hulladékot láttam már), ennél szerintem jobb az open source v5.3-as használata is, minden hibájával együtt is.

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.

DATO: (i)Pythonos Machine Learning Framework

.
Kedvenc PhD-szemináriumom csütörtöki alkalmán, ifj.Benczúr András kiváló előadásában hallottam erről a címbeli DATO-ról először, gondoltam írok róla pár szót. Ez egy olyan poszt lesz, ahol több lesz a link, mint saját betű, de sebaj: ilyen is kell legyen :) (Noha már telepítettem és vetettem rá első pillantást a délutáni órákban)

A Yahoo alapján a marketingesek rendesen belehúztak a névválasztásba, de annyira, hogy sikeresen megmenekültem a fordítás kötelezettsége alól ;)
DATO => Dining at the orifice.. Dining at the Y... Multiple shots on goal. First two refer to "eating out" the respective regions... the last refers to deeds done multiple times to one woman. Hope thats clear enough without getting inappropriate.
Történt vala pedig annó, hogy a Carnegie Mellon nevű nevezetesebb amerikai egyetemen elkezdtek fejleszteni C++-ban egy parallelizált machine learning library-t, unix és mac-támogatással (azaz Windows nincs közte), aminek Graphlab lett a neve a keresztségben. Aztán ez a codeset befagyasztódott.
Carnegie Mellon - Graphlab
PowerGraph (github, befagyasztva)

De persze maga a termék továbbfejlesztődött, pár napja jött ki a legfrissebb verzió PyPi-re, immáron Windowsra is:
Graphlab utolsó legfrissebb verziója PyPi-n, Windowsra is

Az eredeti fejlesztők közben megalapították a DATO-t. Innentől van egy github-ról szabadon letölthető Open Source ág, olyan finomságokkal mint a Pandas-NumPy alternatíva SFrame vagy plugin SDK a github-on (ráadásul Python API-val)
DATO: Open Source
DATO: SFrame
DATO: CORE
DATO: GraphLab Create SDK

És lett egy commercial termék(család). Az alap "desktop"-termék a Graphlab Create illetve ehhez kapcsolódik a server-oldali két termék (DATO Predictive Services és Distributed)
DATO Products

A számomra legizgalmasabb a "desktopos" (nemcsak desktop hanem pl.: cloud) Graphlab Create:
Ha valaki szereti a böngészőben futó iPython-t, az imádni fogja. :)
Immáron természetesen van Windows-os install is (egyre kevesebb hibával) érdemes szűzen telepíteni, hogy más Anaconda Python disztribúciós telepítéssel ne vesszen össze.
DATO Architecture and features
DATO Machine Learning Algorithms

A nagy versenytárshoz (sci-kit learn)-höz képest, ugyan olyan minőség mellett 5-6-szoros gyorsulás érhető el DATO-val.
DATO: Performance

Sajnos  a commercial termék nincs ingyen, 4.000 USD/gép/év, ami az Alteryx-szel (másik C++ -alapú framework) összevethetően nagyon drága.
Mivel Anacondás Python disztribúción alapul a DATO, megnéztem, hogy az Anaconda árazás hogyan alakul, és sajnos döbbenetesen elszállt az is. Az Add-On-ok párszáz dolllárja 10-60.000 USD/év-es előfizetésekbe torkolltak. És az Add-On-ok ráadásul a legolcsóbb előfizetésben nem is érhetők el, csak 30.000 USD felett. Még a végén visszasírom a RapidMinert az árszabásával....;) Ez bizony mellbeverő fejlemény volt számomra.
Ami idevág még, hogy egy évre lehet akadémiai licence-t igényelni, akinek van ilyen mailcíme, és ha jól értettem personal licence-t is, de utóbbinak egyelőre nem látom a feltételeit. Én egyelőre egyhónapos trial-t installtam.
DATO: Prices

A DATO két legizgalmasabb feature blogposztokban:
DATO: Gradient Boosted Trees
DATO: Deep Learning

A DATO szépen van dokumentálva.
DATO: 1.User's GuideDATO: 1.User's Guide - kódok github-on
DATO: 2.How-To
DATO: 2.How-To - kódok github-on
DATO: 3.Docs

Alteryx-hez hasonlóan itt is van nagyon jó és bővülő galéria, ipythonos notebook-okkal, videókkal, kategorizálva.
DATO: Gallery

És van az elmaradhatatlan fórum:
DATO: Forum

DATO-finomságok:

+ Az SFRame típusos oszlopokat éppúgy támogat, mint tabular és graph-adatokat, míg a scikit-learn közvetlenül eszi az adatait, szemben a Pandas-szal, amihez kell NumPy.

+ Legfontosabb algoritmusok benne vannak, jó performanciával, intenzíven fejlesztik (Gradient Boosting Trees, Deep Learning). 2015 nyarán jött ki az Adam-optimalizálás cikke (DeepLearning), és már bekerült a Graphlab-ba ;)

+ Nem visual-flow-os eszközöket tekintve messze legelegánsabb küllemre. Deszkamodell-építéshez akár megrendelő ügyfélhez is kivihető.

+ Cloud, Masszív párhuzamosítás, CUDA, Hadoop fókuszban

+ DeepLearning olyan verziójú, hogy a legtöbb terhet leveszi, le akarja venni az adatbányászról, paraméterezés, konvolúciós rétegek száma automatikus módon stb. Egy jól működő projekt van már (MINST), de az örömtüzekkel érdemes lehet várni (márminthogy univerzálisan is működik az automatizált Deep Learning. Volt egy érdekes megjegyzés: "Ha majd idõsorokra jól megy majd akkor esetleg jobban hihető lesz".

+ SZTAKI ennek az eszköznek a használatával 2-dik lett a 2014-es RecSys Challangen.
* Itt a cikk róla.
* Itt a dataset.
* Itt a leaderboard.
* Ez a verseny arról szólt IMDB filmadatbázis alapokon - hogy most már nem milyen ratinget kap a film a usertől, hanem API-n keresztül lekérhető adatok révén milyen twitter-interakciót generál egy film.
* Volt retweet / like engagement, ezt nem pontosan értettem.
* 350 és 150 euró volt a díja az I. és II.helyzettnek. Gondolom inkább dicsőségre ment.
* Gravity és a szervezõk között volt (Tikk Domonkos)
* Lássuk be nem mindennap olvasni, hogy egy felhasználóbarát magasszintű eszközzel ennyire jól lehet szerepelni egy data mining versenyen, igaz ez még akkor is, ha a logitboost-hoz wekázni kellett a csapatnak.

2015. december 2., szerda

Deep Learning

.
Volt szerencsém résztvenni kedvenc adatbányászós phd-szeminárium legutóbbi poszt-címbeli tárgyat érintő, Daróczy Bálint -nak köszönhetően szenzációsan jó alkalmán/előadásán és megpróbálnám reprodukálni az ottani infókat és saját gondolatvilágomba ágyazni az ott elhangzottakat.

Előre szólok, csak "trécselés" szinten, kedvcsinálóként írok, ami alulról próbálja elérni a szakmai blogposzt műfaját.
- Disclaimer: ami jó és érdekes az alábbi írásban az alapvető módon az előadásból származik, ami rossz az az én öreg rossz szemem és fülem, félreértelmezésem, hibáim/tévedéseim eredménye: ezt az olvasónak kell sajnos szétválogatnia, bár igyekszem megtámogatni ebben.
- A neurális hálók(NN) külön nagy tudomány, aminek részleteire itt meg sem kísérelhetek kitérni és bár bőven tanultam róla, gyakorlati tapasztalataimból elég rendesen hiányzik az alkalmazása.
- Én felhasználói szinten kvázi kívülről érkeztem a témához, mondhatni ez az első benyomásom a címbeli cuccról. Perpillanat nemhogy nem értek hozzá egyelőre nemhogy részleteihez, de felhasználói szinthez sem, de csomó mindent még az előadáson elhangzottakból sem igazán értek, tudok érdemben feldolgozni.

A deep learning, a neural network-ös machine learning egy aktuálisan nagyon is hottopic-ja, konkréten tudható, hogy mostanság komoly versenyeket lehet vele nyerni. Ráadásul óriási potenciál van benne még, hiszen alig-alig tudunk bármit is, meg értünk a működéséből, illetve rengeteg irányba lehet továbbvinni a tuningolását, és egy-egy ötlet végigvitele egy csoport heteit-hónapjait is le tudhatja kötni.

Ha bárkit mélyebben érdekel a téma, például kipróbálási szinten, akkor valamelyik győztes publikációjából valamint datasetjéből érdemes kiindulni, de javaslom a Kaggle-t itt is mint oly sokszor máskor is, mert a győzteseknek itt vannak legszigorúbb publikálási kötelezettségei, továbbá a résztvevők fórumokon osztják meg tapasztalataikat. (Ugyanis köztudottan lehet akár 12 oldalas „elfogadható” cikket publikálni a semmiről és/vagy reprodukálhatatlan módon, amivel nem kerül beljebb senki).  Léteznek tutorialok is. Kiváncsi leszek könyvben és tantervben mikor látom majd.... ;)

Ami a számítási teljesítményigényt jelenti, egy jelentősebb CUDA-s 100.000 forintos NVIDIA-kártyával már csodákat lehet tenni, amik ráadásul skálázhatók: 2x annyi kártya kvázi 2x annyi teljesítményt jelent (mínusz overhead). Azaz otthon is lehet próbálkozni;  kvázi nulla tőkét, "csak" tudást igényel a tárgybeli erőlködés.

Már most kétszámjegyű egyre okosabb és általánosabb implementáció áll rendelkezésre, számomra meglepő módon java egy sincs és 9:1 arányban van Python/C++ wrapper valamint egy szem LUA (torch), amikkel szintén lehet játszani.  Ugye mondanom sem kell, hogy IBM SPSS-ben, SAS-ban, Alteryxben és hasonló csillagrombolós gigászokban ne keressünk ilyeneket (még ha elvi plugin-technika miatti akadályuk nem is lenne). Viszont az open source cuccokban Weka/Knime/Rapidminer/R könnyedébben/gyorsabban meg fog tudni jelenni, bár a java-centrikusságuk lassító tényező lehet.
A leghíresebb, legelső, legáltalánosabb célú implementáció a theano

Előzmény: régen volt sok(féle) adatunk például ügyfelekről, majd némi trükközés pl.: mezőszármaztatás után relatíve egyszerű dolgok (mint elvándorlás-hajlandóság leképzése) következtek, pl.: kőegyszerű logisztikus regresszióval. Persze adattisztítással, data mart építéssel, vizualizációval, prezentációval, decision makinggel, folyamatba-integrálással, de ezek ezután is kellenek, szóval offtopik itt. Ha az embernek volt egy csodajó osztályozó algoritmusa pl.: SVM, avval már versenyeket lehetett nyerni még pár éve is.

Na a manapság nagyon menő jollyjoker már a Deep Learning, és már felhasználói szinten is brutálisan nehéz: környezetet setupolni, brutális komplexitásig menően neuron-layereket programozni, ráadásul úgy, hogy 90% megy aztán a kukába sikertelen próbálkozásként (max. lehet belőle cikket írni és/vagy jobb esetben beépül a tapasztalatba valamilyen formában).

Volt 1-2 éve egy ImageNet-es képfelismerő verseny A feladat nem is olyan egyszerű, ha gépi algoritmussal kell felismerni (osztályokba sorolni), hogy a képen például egy házimacsek avagy hiúz van. ;). A győztes 1-2 százalékot tudott javítani a többiekhez képest deep learninggel és evvel meg is nyerték a versenyt a klasszikus Fisher-score-os módszerekkel szemben. Plusz paraméteres aktivációs függvényt alkalmaztak, ahol a paraméter további machine learningből illetve nem normál (Gauss-)eloszlásos modellinicializálást és vagy még 8 további trükköt, de most nem cél ebbe jobban belemenni.

A versenyen: 1.2 millió képet adtak trainingnek, feladat: ha jól emlékszem 500.000 kép, 1000 osztályba sorolandó, 5-6 óra alatt. TOP1 40%hiba, TOP5 16% hiba már csak. Vagyis a legvalószínűbb illetve öt legvalószínűbb osztály megjelölése és annak hibaszázaléka, mind az 500.000 képre.

Egy következő fordulóban a Microsoft/GoogleNet/IBM-es gigacégek rúgtak már csak labdába, az akadémiai szféra kompletten nem fért fel a listára. ;) (Emlékszünk még, hogy a Netflixnél tarolt az akadémiai szféra?) Úgymond semmi hozzáadott értéket nem adtak, ugyanis ugyanezzel a deep learninggel, csak felskálázva több gépen, több és jobb CUDA-val, több réteggel (azaz mélyebb tanulással), több számolással, szignifikánsan jobb eredményt értek el.

A győztes levitte 30% és 11%-ra a hibázásokat és az az érdekes eredmény jött ki, hogy lassan-lassan az emberi hibázáshoz konvergál már a dolog. Nem úgy kell érteni, hogy egy ember nem ismer fel egy képen egy kutyát, hanem a sokadik kép után megnő a humánosztályozós félreklikkelések száma.

Mi is ez a Deep Learning? Vannak input és output rétegek adatszinten (ahogy mindig is, eddig is megszokottan).

Feladat
* tegyünk közéjük - definitive nem-lineáris típusú - hidden neuron-layereket a célból, hogy minden layer mást tanuljon olyatén transzformációőrző módon (azaz divergálás kicsi legyen), hogy réteg(elemek) ne tegyenek keresztbe másnak (súlyozás mindvégig közös például).

* A távolabbi cél e rétegezéssel kideríteni az adatokból, hogy mit érdemes megtanulni az adatokból (ezt manapság még data scientistes humanoid ember csinálja, ugye).
* Ennek aztán rögtön következménye az is, hogy például egy (fix) feature extraction (ami szívemnek oly kedves tevékenység volt eddig az adatbányászatban), innentől erősen felejtőssé válik értelemszerűen.
Ezt póriasan úgy is el lehet elképzelni, hogy egy SQL-es lekérdezéshez képest az adatbányászati tevékenység sokkal szofisztikáltabb (magyarán egy SQL-es csak "elefánt"-ként tud fungálni az adatok "porcelánboltjá"-ban), addig a feature extractionhöz képest a hidden-layerek tanulása a sokkal-sokkal kifinomultabb eljárás. Az információ áramlás input->hidden layerek->output-on kétirányú, egyrészt előrefele tanulóak, visszafele hibakorrigálók lehetnek (de nem kötelezően).

Mi a cél? Hát az, hogy a jelszó innentől: jól kell generalizálni (számok nyelvére lefordítani az alapproblémát), utána az ígéret szerint pl.: egy osztályozás már gyerekjáték lesz. A gond az, hogy ez baromi nehéz feladat, nem mindig végezhető el, sok minden megy a kukába menetközben és nem értjük pontosan mi hogyan működik benne (jól), lásd még NN-világban triviális "blackbox"-problémát, fogalmunk sincs hány réteg kéne, hogyan kell aztán visszanyesni őket (egyébként a döntési fa visszanyeséséhez – „prune” - analóg módon) a jó működés érdekében. A jó hír viszont az, hogy tettenérhető, ha jól működik a generalizált modell, „csak” el kell kapni a fonalat hozzá.

A fenti rizsa más szavakkal: építünk egy akár végletekig szofisztikált generalizált „modellszobrot”, ez erős túltanuláshoz (overfitting) vezet (hiszen „megtanulódik” maga a teljes adathalmaz) és emiatt a gond miatt baltával nekiesünk a szobornak és ütjük-vágjuk-nyessük, hogy jó és stabil legyen a modellműködés. A generalizálás során végletekig habosítjuk a kiinduló adatkáoszt: ami után adatpont x dimenzió szorzat így sokkal kisebb lesz mint a felhabosítás utáni teljes paramétertér (azaz pont nem sok adatból képzünk le keveset, mint korábban, hanem fordítva sokból még többet)

A nagy nóvum, ami az phd-előadást is inspirálta Hinton (őt az előadó szerint nagyon érdemes olvasni, röviden, tömören, érthetően ír) 2012-es cikke: dropout, ahol nem neuronokat, pláne layereket dobálnak el visszanyesés során, hanem csak neuronkötéseket pl.: full connected-ből, nem a számítási igény korlátai miatt, hanem helyesség iránti igényből (vesd össze hálózatelemzés, NN-től függetlenül is) olyatén módon, hogy minden neuron(működés) állapotját javítják (nem rontják).
Ha jól értettem az előadó szkeptikus volt ("miért és miért így") én a sokkal "távolabb" elhelyezkedő intuiciómmal ezt nagyon erős ígéretes iránynak érzem.
És akkor még réteg-átlapolásról, szavazásos boostingról egy szó sem esett.

Személyes konklúzióm: abszolút nem látom, nem érzékelem, hogy ekkora témabeli erőfeszítés hogyan-miképp hat és térül meg.
* Nekem ez az egész blackbox a négyzeten, még ha főbb vonalakban értem is, hogy mi történik (neurális hálók révén, ami 1950+-től létezik, 1980-tól intenzívebben). Vaktában kell a sötétben tapogatózni, vajákolni, nem kérdezni csak csinálni intuicióból, és siker esetén aztán örülni. Nagyon távol van ez még nekem a felhasználói "algoritmizálhatóságtól".
* Viszont az elvitathatatlanul nagyon jó indikátor, ha (jellemzően domain-free) versenyeket lehet vele megnyerni.
* Képzeljük el, ha erre még domainfüggő üzleti tudást is ráépít valaki (ami a versenyeken definitive nem tudhat működni, hiszen ott csak számokkal küzdenek a versenyzők legtöbbször).
* Belegondolni is brutális élmény, hogy bambán ugyanaz a módszer több gépen több számolással ekkora megbízható szignifikáns javulást tud hozni, úgy is, hogy alig-alig értünk az egészből bármit is. Képzeljük el, mi lenne, ha értenénk pontosan melyik részletből mi következik?


Update-1: bi.hu

Milyen  kicsi a világ. :) Arató Bence bi.hu-s honlapja a minap ezt a "Egyre több a nyílt forráskódú adatbányászati szoftver" link -et osztja meg, ami rögtön két érdekességet is rejt:

 (1) Amiről több szálon is beszéltem (deep learning és implementációi, ImageNet verseny)
"A Google TensorFlow az úgynevezett mély tanulás (deep learning)  terültének fonton szereplője. A szoftver többek között a Google Photos képkeresőszolgáltatásba is beépül."

(2) Öt évvel az adatbányász kihívások blogposztom után végre nagy örömmel ábrán is látom a megvalósított update cache egy verzióját.  Korábban ugye csak annyi volt, hogy a processben manuális állítás után  a szükségtelen (impact nélküli) kalkulációkat ne végezzünk a gyorsabb futás érdekében.  A valódi cache persze ennél sokkal értékesebb és komplexebb: amikor a szotver maga tud dönteni a rekalkulációról, sőt támaszkodik a korábbi eredményekre is.


Update-2: DATO

Következő PhD-szemináriumon Benczúr András mutatott egy DATO-s (iPython+scikit-learn) Deep Learning-es notebookot a MINST-adatbázisra.
* 80% training
* layerek, (hány) konvolúció, flatten, aggregációk, maxpool és egyéb paraméterek meghatározása, dropout-konfig, etc. automatikusan program által meghatározva.
* 99% pontosság 1 konvolúcióval(!)
* Kétséges, hogy ez az automatizmus megy általánosan is. Beszélgetés során elhangzott megjegyzés: "Ha majd idõsorokra jól megy majd akkor esetleg".

Update-3:  Google Tensorflow

* Soft Max Regresszió, amiről most hallottam előszőr.
* Bár épp a napokban csalódottságos cikket is lehet olvasni vele kapcsolatban, a SZTAKI-s csapat lát benne potenciált, szemléletileg is, implemenetációilag is, szemben a DATO-nál említett automatikussággal kapcsolatos szkepticizmussal.
* DATO-val szemben három lényegi ponton a felhasználó paraméterez/legóz, kötött szabályok szerint.
(1) Modell
(2) Célfüggvény
(3) Algoritmus


Google: TensorFlow - Google’s latest machine learning system, open sourced for everyone
Google: Building a deeper understanding of images


KDNuggets: TensorFlow Disappoints – Google Deep Learning falls shallow
KDNuggets: Popular Deep Learning Tools – a review
KDNuggets: Top 5 arXiv Deep Learning Papers, Explained
KDNuggets: Decision Boundaries for Deep Learning and other Machine Learning classifiers (R)
KDNuggets: Where to Learn Deep Learning – Courses, Tutorials, Software



Update-4: Chainer

* Japán eredetű, jóhírű cucc, csak megemlítődött.
* Itt egy 36 slide-os prezi.