Category

Data Science

Ötcsillagos IT-innovációk az öt karika világában

By | Artificial Intelligence, Data Science, Tech Trends | No Comments

Az újkori nyári olimpiák történetének talán legkülönlegesebb világjátékán vagyunk túl. Tokió rengeteg izgalmat és megannyi, eddig soha nem látott újdonságot hozott. Eleve szokatlan volt, hogy a pandémia miatt 2021-ben rendezték meg a nevében a 2020-at változatlanul hordozó versenyt, az olimpiához kapcsolódó számok sorában azonban korántsem ez a legnagyobb érdekesség. Ilyen volt az olimpia IT-s szemmel…

Cégünk, a United Consult munkatársai nem csupán a remek magyar sikerek – a hat arany-, a hét ezüst- és a hét bronzérem – miatt figyelték izgatottan a világ talán leginnovatívabb országában, Japánban zajló olimpiát, hanem mert az IT-szféra elképesztő mértékű fejlődése bizony a sportra is óriási hatással van, ez pedig Magyarország egyik vezető informatikai vállalataként természetesen minket sem hagy hidegen. Kollégáink szakmai érdeklődése ezúttal főként a bigdata-terület és a mesterséges intelligencia (AI) sportba integrált újdonságai felé irányult, melyekről például az amerikai-indiai szakportál, az Analytics Insight is beszámolt a napokban. Lássuk tehát, milyen szenzációkkal szolgált Tokió az IT világában!

A stopperórától a mesterséges intelligenciáig

„Ez volt az az olimpia, ahol a mesterséges intelligencia immár érezhetően megváltoztatta az IT sportban betöltött szerepét és jelentőségét” – hangsúlyozza Adilin Beatrice szakíró cikkében. Mint fogalmaz, a sport világában már évtizedek óta jelen van az informatika; ez, valamint a – részben a pandémia miatt – berobbanó digitalizáció pedig rendkívül erős alapot teremtett a mesterséges intelligencia térnyeréséhez. (A sport és az AI kapcsolatáról egyébként már korábbi, a Premier League 21. századi IT-vonatkozásait taglaló cikkükben is írtak nemrég.)

Persze a történet egyáltalán nem most, a tokiói olimpián kezdődött, hanem hosszú évekre, sőt évtizedekre nyúlik vissza, lényegében egyfajta IT-evolúciós folyamatként érdemes vizsgálni azt. A sportolók és edzőik régóta dolgoznak saját és konkurenseik statisztikái alapján, az egyre komplexebb adatbázisok kezelése és elemzése azonban komoly erőforrásigényekkel bír. A haladó szellemű, innovatív sportolók és menedzsereik régóta nyitottan tekintenek a mesterséges intelligencia alkalmazására mindennapi munkájuk során. A technológia ugyanis nem csupán a sporttal kapcsolatos stratégiai döntések meghozását segíti elő, hanem az egyéni teljesítmény fokozására, sőt akár egy-egy mozdulatsor finomhangolására is alkalmas.

A technológia beszivárgása nem újkeletű, lényegében már az első stopperórák megjelenésével elkezdődött – tekint vissza a cikk szerzője, majd hozzáteszi: az első lényeges áttörést 1948 jelentette, amikor elkezdték használni az Omega fantasztikus innovációját, a célfotók készítésére alkalmas fényképezőgépet. Mára a fejlődés egészen odáig jutott, hogy az AI alkalmazása teljesen elfogadott, sőt bizonyos sportágak esetében már-már általános volt Tokióban, s ez új színt, új élményeket vitt az olimpiába mind a résztvevők, mind pedig a nézők számára.

Az AI mindennapi haszna az olimpián

A mindkét területet jól ismerő sport- és IT-szakemberek szerint nem kérdés, hogy az adattudomány és a mesterséges intelligencia rövid időn belül forradalmasítja a sportipart. Lényegében ez a folyamat már el is kezdődött, szemtanúi lehettünk Japánban is. Mielőtt azonban rátérne erre, az idézett cikk szerzője néhány olyan gyakorlatias példát is említ, mely egy olyan komplex, nagy volumenű rendezvény megszervezéséhez szükséges, mint a tokiói olimpia volt. A fejlett IT-szolgáltatások (köztük az AI) segítséget nyújtottak egyebek mellett abban, hogy a világ megannyi országából érkező sportolókat szervezett körülmények között helyezhessék el, szolgálhassák ki az olimpiai faluban, hogy a résztvevők (a sportolók mellett a delegációk más tagjai, a versenybírók, a média képviselői stb.) probléma nélkül mozoghassanak a repülőtér, az olimpiai falu és a versenyek helyszínei között a világ egyik legzsúfoltabb városában.

Világszerte egyre több hír terjed az önvezető járművekről, azonban a japánoknak köszönhetően az elmúlt hetekben az eddig lényegében futurisztikusnak tűnő elképzelések a szemünk láttára váltak valósággá.

Az autonóm működő, olimpiai járművek praktikus megoldást jelentettek a mobilitási problémák kezelésére a világjátékok alatt. A részben gépi tanuláson alapuló önvezető autók ráadásul nem csupán a sportolók szállításában játszottak komoly szerepet, hanem a sporteszközöket – például gerelyeket, diszkoszokat és dobókalapácsokat is – ezek szállították az egyes helyszínek között.

A mesterséges intelligencia fontos alkalmazási területe volt a kommunikáció is, hiszen az olimpiát lebonyolítani – különösen egy olyan, nyelvileg zárt környezetben, mint Japán – hasonlóan nagy kihívás, mint megszervezni Bábel tornyának építését. A világ több mint kétszáz nemzete több mint százféleképpen beszél, az AI pedig egyszerű átjárást biztosított ezek között még a leggyakoribb idegennyelvek ismerete nélkül is. Sokan talán nem is tudják, de a tokiói olimpián mesterséges intelligenciával támogatott valós idejű fordítási rendszereket használtak, hogy a különböző országokból érkező emberek megértsék az utasításokat. A kifejezetten az ötkarikás rendezvényre fejlesztett nyelvi alkalmazás okostelefonokra vagy más kompatibilis eszközökre volt telepítve, és valós időben tolmácsolt a résztvevők között. A mesterséges intelligenciát a legkülönbözőbb nyomkövető eszközökben, a felhőalapú sugárzás támogatására, a robotasszisztensek használata során és az 5G-vel összefüggésben is használták az elmúlt hetekben Tokióban.

Mesterséges (sport)intelligencia

Ha tovább lépünk a szervezést és az infrastruktúrát érintő előnyökön, a tokiói példákat látva megállapíthatjuk azt is: a mesterséges intelligencia alkalmazása fontos áttörést jelent a sport világában. Évtizedek óta úgy tűnik ugyanis, hogy bizonyos sportágakban a versenyzők már

elérték az emberi teljesítőképesség határait, ezt jelzi az is, hogy ma már egyre ritkábban dőlnek meg olimpiai és világrekordok. A kétes eredetű, hatású és legalitású teljesítményfokozó szerek és módszerek után végre megérkezett a mesterséges intelligencia, mely az emberi mozdulatok tökéletesítése, finomhangolása révén újra lehetővé teszi, hogy a sportolók túltegyenek a nagy elődökön és csúcsokat dönthessenek. Persze ideális esetben nem csupán az eredmény számít, hanem az is, hogy a sikerek eléréséért egy-egy versenyző ne fizessen a saját egészségével. Az AI a túlhajszoltság elkerülésében, az edzésmunka optimalizálásában is segíthet, s ezzel akár a komoly sérülések vagy éppen a tragédiák is elkerülhetők.

Most lássunk néhány konkrét példát az AI használatára Tokióból!

Adilin Beatrice, az idézett cikk szerzője úgy fogalmaz, hogy a big data drasztikus szerepet játszik a sportolók teljesítményének javításában, példaként pedig a szörfözést említi. Az Egyesült Államok nemzeti szörfszövetsége rengeteg bigdata-módszert alkalmazott az elmúlt években azért, hogy segítsen sportolóinak előnyt szerezni versenytársaikkal szemben. Egyfelől saját teljesítményeiket, másfelől pedig a konkurensek eredményeit is folyamatosan elemezték, de a sportolók fiziológiai állapotának figyelemmel kísérésére is használták, beleértve a kardiovaszkuláris teljesítményt, az alvási szokásokat vagy éppen a pulzusszám változását.

Itt van egy másik innováció is. Az Intel és az Alibaba közösen készítette el a 3DAT (3D Athlete Tracking) névre keresztelt rendszerét, mely képes arra, hogy szorosan figyelemmel kísérje a sportolók mozdulatait, az adatokból pedig megfelelő, a teljesítmény fokozására alkalmas konzekvenciákat vonjon le. A 3DAT először az amerikai olimpiai próbákon debütált, Tokióiban pedig már élesben használták. Az AI-alapú rendszer öt speciális pályamenti kamerától kap vizuális adatokat, majd elküldi a felhőbe, ahol a képeket releváns, elemezhető információcsomagokká alakítják.

Végül pedig egy érdekesség, mely tökéletesen szimbolizálja az AI és a sport kapcsolatát. A Toyota mesterséges intelligenciájú humanoid kosárlabdázója a maga nemében egy igazi legenda. A robot történelmet írt 2019-ben, amikor a Guinness-világrekordot érte el „a humanoid robot által elvégzett, egymást követő legtöbb sikeres kosárlabdadobás” kategóriában. A robot Tokióban is szerepet kapott: minden reklámszünetben megmutatta dobótudását, mely az AI révén egyre csak fejlődik.

Forrás: Analytics Insight

Gyors döntéshozatal a kereskedelemben

By | Business, Data Science | No Comments

Az elmúlt év eddig nem ismert kihívások elé állította a kereskedelmi hálózatokat, a járvány magyarországi megjelenésekor az egyes termékek iránti felfokozott keresletet és az ellátási láncok akadozása okozott nehézséget, majd a különböző korlátozások. Az események hatására a vásárlási szokások átrendeződése is felgyorsult, és ebben a sokszor impulzívan változó időszakban pedig a megszokottnál gyorsabb reagálásra van szükség. Az adatok tudatosabb felhasználása, a pontosabb előrejelzések és a gyors döntéshozatalt támogató eszközök szerepe ezáltal felértékelődik.

 

Általánossá vált az a piaci vélemény, hogy a fizikai kiszolgáló helyek, mint a bankfiókok, élelmiszer- és egyéb kereskedelmi üzletek helyét egyre inkább felváltják a webshopok. Van ebben némi igazság, de mindeközben a világ legnagyobb online kereskedési tere az Amazon épp azon dolgozik, hogy élelmiszer boltot nyisson az egyébként már régóta üzemeltetett retail storjai mellett. Hogy ez működni fog, nem kérdés, az Amazon elképesztő méretű adat vagyonon ül, gyakorlatilag jobban ismeri az egyén vásárlási szokását, mint maga a vásárló, így pedig nagyon könnyen tud döntést hozni arról, hogy milyen lokációban, milyen termékkel érdemes fizikai üzleteket nyitnia.
Persze adatok terén nehéz az Amazont utolérni, de ma már bármilyen nagyobb magyarországi kereskedelmi szolgáltató rendelkezik központi tranzakciós rendszerrel, elterjedtek a hűségkártyák, a készletezésről hatékony nyilvántartást vezetnek és az üzletek környezetéről, a forgalomról, és vásárlóerőről is rengeteg információ áll rendelkezésre. A kérdés, hogy ezeket az információkat milyen célok mentén lehet a leghatékonyabb üzletmenet szolgáltatásába állítani. Összegyűjtöttünk pár olyan pontot, ahol az adatok üzleti értéket képezhetnek a klasszikus kereskedelmi hálózatok esetén:

Hálózat működési hatékonyságának optimalizációja

Egy több száz főt foglalkoztató vagy legalább 10-15 üzletet működtető kereskedelmi vállalat esetén a cég adataiban hatalmas költségmegtakarítási- és sales potenciál rejtőzik, ami a hálózat operatív hatékonyságának javítására használható. Erről fog szólni a következő webinárunk is.

Termékpaletta, kereslet előrejelzés, szelektív árazás

A vásárlási szokások, a vásárlói csoportok viselkedésének megértése az adatok felhasználása nélkül lehetetlen, ezek nélkül viszont az árbevétel 10-20%-tól is eleshet egy kereskedő. A kereslet pontosabb előrejelzésével, a kereslethez, a vásárlói szokásokhoz pontosabban igazodó szelektív árazással a profittermelés érdemben javítható.

Logisztika, raktározás

Az operációs költségek javítása nem csak a hálózat üzemeltetés optimalizálásán keresztül, hanem a logisztikai, raktározási költségek optimalizációjával is elérhető. Az egyes termékekre, termékcsoportokra vonatkozó pontos kereslet előrejelzés pozitív hatása a vásárlói élményben közvetlenül, a bevételi oldalon pedig közvetetten jelentkezik.
A nehezen készletezhető, vagy gyorsan romlandó termékek esetén egy pontos kereslet előrejelző modellnek pedig a veszteség minimalizálásában, közvetlen költségmegtakarításban van jelentős szerepe.

Marketing

Az szinte kézenfekvő, hogy az online marketing területén az adatok használata mennyire hasznos, de itt nem szabad csak és kizárólag a marketing eszközök által biztosított megoldásokra hagyatkozni, a belső tranzakciós adatokból feltérképezett vásárlói viselkedések, ezek alapján meghatározott célcsoportoknak eljuttatott üzenetek sokszorosan térülnek meg a nem személyre szabott üzenetekhez képest.

Mikor lassít az önvezető autó a zöldségesnél?

By | Big Data News, Data Science, Tech Trends | No Comments

Tudod, mi a különbség a sarki zöldséges és a képelemző algoritmus között? Az egyik kilóban, a másik pedig pixelekben méri a dinnyét. És mi a hasonlóság? Mindkettő úgy szereti, ha minél pirosabb belülről a gyümölcs. A poén persze komolytalan, a téma viszont nagyon is komoly – mutatjuk, hogyan került képbe a dinnye!

A 2010-es évek talán leglátványosabb technológiai vívmányai az önvezető autók, illetve a kép- és arcfelismerő rendszerek. Lassan egy évtizede sorra jelennek meg cikkek, tévériportok, blogbejegyzések a témában, melyekkel nem csupán az IT-szakma, de a laikus átlagember is gyakran találkozik, így viszonylag tájékozott lehet a felhasználással kapcsolatban. Azt azonban ma is kevesen tudják, hogyan is működnek ezek a rendszerek, miként „foghatja fel” egy gép, hogy mit is lát az elé táruló élő képeken vagy éppen fotókon.

E bejegyzésünkben segítünk kicsit megérteni, hogy milyen alapelvek szerint működik a képfeldolgozás, és hogy hogyan találnak meg egy-egy objektumot az algoritmusok a hatalmas pixelrengetegben. Ebben segített egy OpenCV (Open Source Computer Vision) csomag, mely bárki számára elérhető. A cikkben az alapfogalmak tisztázását követően bemutatunk két eljárást, ami segíthet a számítógép számára különböző objektumokat megtalálni, akár azonos képeken, akár teljesen más forrásból származó fotók esetében.

Kezdjük az alapoktól!

A kép képpontok, azaz a pixelek összessége,  amelyek egy mátrixba csoportosulnak, és vizuálisan felismerhető, értelmezhető alakzatokat jelenítenek meg. Ezen mátrixok nagyságát befolyásolja a kép szélessége és magassága, a rétegeit pedig a színrendszer határozza meg. A fontosabb színskálák az úgynevezett rgb, hsv, hls, luv és a yiq. A továbbiakban az rgb, tehát a red, green és blue színrendszer alkalmazásával bontjuk elemeire a képeket. Az rgb rendszer esetén a kép mátrix-összetétel a következő: a mátrix magassága, a szélessége és a színrétegek száma, ami jelen rendszer mellett három. A rétegek elemei 0-tól 255-ig terjedő egész értékű számok. Fekete-fehér kép esetén a 0 a teljesen sötét, míg a 255 a fehér árnyalatot jelenti, és hasonlóan oszlik el az rgb színskálán is: a piros árnyalat esetén például a 0 a fekete, míg a nagyobb értékek a piros erősségét írja le.

Az önvezető autók működésének alapjául szolgáló, komplex képfelismerő rendszerek képesek arra, hogy azonosítsák a különböző tereptárgyakat, a járműveket, a gyalogosokat, a jelzőtáblákat és útburkolati jeleket, hogy felismerjék a jelzőlámpák fényeit. Mi azonban kezdjük az alapoktól, az alábbi dinnyés fotóval szemléltetve a rendszer működését.

Ahogyan a példaképeken – vagyis a dinnyeszeleteken – is látszik, az első kép az eredeti, ami az összes színréteget tartalmazza, ezt követi a piros, a zöld és a kék árnyalatok kiemelése. Jól látszik, hogy a kép dimenziói nem változtak, azonban például a piros esetén a többi réteg elemei nulla értéket kaptak, azaz teljesen feketévé váltak, így a maradék réteggel megjeleníthetővé vált a kiválasztott piros réteg. Természetesen azonos módszerrel jeleníthetők meg a kék és a zöld árnyalatok is.

A cikkben kétféle objektum keresési eljárást fogok ismertetni, az úgynevezett template matching és a feature matching eljárásokat.

Template matching, avagy objektumillesztés

A legegyszerűbb objektumkeresési eljárások közé tartozik, hiszen a teljes kép egy kis részlete a keresett alakzat a képen, tehát a kicsi lényegében része a nagy képnek.

Ebben az esetben elegendő a kis és a nagy kép pixeleinek az összeegyeztetése, amihez többfajta műveletet is alkalmazhatunk, azonban a legismertebbek a következők:

  • két különböző kép pixeleinek vagy pixel csoportjai közötti korrelációs vizsgálat (lineáris kapcsolatot leíró metrika, mely értéke -1 és 1 között található, ahol az 1 az erős azonos irányú, -1 az erős ellentétes irányú és a 0 érték pedig a kapcsolat meg nem létét írja le),
  • differenciálszámítás a két kép pixel csoportjai között, ahol a hiba 0, ott lesz a teljes egyezés.

A következő képsor a folyamat lépéseit tartalmazza, aminek az első eleme a teljes kép, amiből származik a második kép, amit egyben szeretnénk is megtalálni a teljes képen. A harmadik kép egy korrelációs kép, ami egy részlet a teljes képből. Ezen jól látható, hogy kék színnel mutatja, ahol nincs pixelegyezés a nagy és a kis kép között, azonban a sárgával jelzett részen megvan a teljes egyezés. Az utolsó kép pedig a találat eredményét jeleníti meg immáron egy piros kerettel jelezve a kis kép helyzetét a teljes képen.

A bemutatott egyszerűbb módszertan alkalmazása több helyzetben is elegendő lehet, például akkor, amikor tudjuk, hogy a vizsgált képsokaságokon vannak pontok, melyek mindig állandók, és ezen objektumok mellett következhet be változás, így az állandó alakzatok helyzetéből meghatározható és feldolgozható az újdonság a képeken. Ezzel szemben indikátorként is alkalmazható, ha tudjuk, hogy egy képen csak egyetlen mátrixban történhet változás, és ennek a meg nem találása jelenti a változás megtörténtét.

Feature Matching, avagy sablonillesztés

A template matching esetén a hasonló pixelek feltárásánál nem volt szükség a kép előkészítésére, azonban ha a keresett kép nem része az eredetinek, hanem teljesen más forrásból származik, akkor ki kell emelni a különböző tulajdonságokat. Ezek segítségével az algoritmusok könnyebben találják meg a hasonló egységeket a képeken. Ilyen előkészítések lehetnek a következők:

  • a gray scaling, avagy szürke skála, aminek a segítségével meghatározhatjuk a színárnyalatok fokozatait. Ebben az esetben a kép fekete, fehér és szürke színeket tartalmaz és csupán egy réteget, nem pedig hármat, mint az rgb színrendszer esetén,
  • blurring, smoothing: zaj eltávolítása, egy előre definiált, pár képpont nagyságú mátrix mentén a teljes képen hajt végre képpontátlagolást → ennek következtében a megkapjuk azokat a képrészleteket, ahol a legnagyobb fényváltozások fellelhetők a képen. Fontos figyelni, hogy ennek következtében a kép veszít élességéből így ezt figyelembe tartva kell meghatározni ezeknek a beavatkozásoknak a súlyát.
A feature matching különböző algoritmusok összessége, amelyek együttes alkalmazásával képes megtalálni két különböző, azonban hasonló kép közötti hasonló egységeket. Ezekben a következő algoritmusok segítenek (a lista nem teljes):
  • edge detection, avagy az élek feltárása: alapvető fontossága van, hiszen a képek nagy részletességgel bírhatnak, így ennek a csökkentésére szolgál az algoritmus, aminek segítségével egyszerűbbé válik a képfeldolgozás a számunkra is fontos élek feltárásával.
  • contour detection, avagy a kontúrvonalak megtalálása: segít meghatározni egyes tárgyak formáját, kiterjedését, segítve az elválasztást a többi tárgytól.

A feature matching alkalmazása két pontból tevődik össze. Először is a korábbiakban felsorolt eszközök segítségével feltárja mindkét kép esetében a kulcsfontosságú részeket a képeken. Ezek lehetnek a különböző élek, kontúrok. Ezt követően a két kép esetén meghatározott kulcsfontosságú elemeket hasonlítja össze és rögzíti az összes egyezést. Mivel mindkét kép esetén több kulcsfontosságú elemet is vizsgál, így több esetben is előfordulhat, hogy lehetnek rosszabb és jobb egyezések is a két kép esetén. Tanácsos a folyamatot követően csak a legjobb egyezéseket kiválasztani.

A fent látható képeken megtörtént a feljebb említett szürke skálázás és a pixelek átlagolása. Az összeegyeztetés sikeresnek mondható, hiszen mind a mag, mind a héj esetében megtalálta az egyezéseket még akkor is, ha a képek teljesen más paraméterekkel rendelkeznek, és más körülmények között készítették azokat.

Az önvezető autók persze sokkal bonyolultabb és szofisztikáltabb rendszereket használnak, azonban az alapjai ezekből a folyamatokból tevődnek össze. Ezen alkalmazások segítségével képes meghatározni a sávokat, klasszifikációval a felismert táblákat és más alapvető funkciók összességét, ami a biztonságos vezetéshez szükséges. Talán egyszer majd az útszéli dinnyeárusnál is megáll, ha egy mézédes görögre vágyik a sofőr – azt ugyanis már tudjuk, hogy a dinnye felismerésére is képes a technológia.

Könyvmolyproblémák: hogyan választ olvasnivalót egy magyar adattudós?

By | Data Science, Machine Learning, Python | No Comments

Itt a tél, az ünnepek után, a hosszú estéken pedig egyre többen találják meg a kikapcsolódást az olvasásban. A könyvmolyok azonban gyakran találkoznak azzal a problémával, hogy nehéz „spoilermentesen” információt szerezni egy-egy kötetről. Annál pedig kevés bosszantóbb dolog van, mint amikor egy háromszáz oldalas könyvben még a századik oldal körül is olyan dolgok történnek, amiket már olvastunk a fülszövegben. Szabó-Fischer Hanna erre keresett megoldást.

„Persze lehet találni jó fülszövegeket is, de én mára gyakorlatilag teljesen száműztem az életemből őket és igyekszem más forrásból beszerezni ezt az információt. A más forrás pedig nem más, mint a moly.hu közössége” – osztotta meg személyes tapasztalatait Szabó-Fischer Hanna adattudós, a budapesti United Consult szakértője. Mint fogalmazott, a könyvrajongók közösségi oldalán, az egyes adatlapokon a felhasználók címkéket tehetnek a könyvekre (például ifjúsági, kortárs, romantikus, fantasy, regény, novella, vers stb.). Ezek alapján viszonylag jól el lehet dönteni, hogy egy adott könyv tetszene vagy sem.

Az adattudós hangsúlyozza ugyanakkor, hogy a világirodalom olyan kiterjedt és sokszínű, hogy ez a magyar adatbázis és platform természetesen nem lehet „mindenható” a nemzetközi irodalom terén.

„Kiegészítésként a goodreads.com is a kedvenceim között van. Itt viszont sajnos nem létezik a címkézés, ami miatt elég zsákbamacska-szerűen válogatok a könyvek között. Megelégelve ezt az állapotot, arra az elhatározásra jutottam, hogy készítek magamnak egy automata címkéző rendszert” – számolt be elhatározásáról Szabó-Fischer Hanna, aki nem mindennapi projektbe kezdett a „könyvmolyproblémák” megoldására.

A projekt lépései

„Ha mi magunk olvasnánk egy fülszöveget, akkor viszonylag könnyen tudnánk besorolni kategóriákba, de ahhoz, hogy egy program értelmezni tudja, jóval több előkészületre van szükség. Először is kell egy adatbázis, amely tartalmaz sok fülszöveget és a hozzá tartozó címkéket. A program később majd ezekből a példákból fog mintázatokat megtanulni, ami alapján egy ismeretlen szöveget bekategorizál. A másik nagyon fontos lépés a fülszövegek előkészítése. A program nem egy szöveget, hanem szavak összességét fogja látni, ezért biztosítanunk kell azt, hogy a számunkra egyértelműen hasonló jelentéssel bíró szavakat (például könyv, könyvek, könyvről, könyvekről) a gép hasonlónak értelmezze” – ismertette az alapproblémákat a United Consult szakértője.


Szabó-Fischer Hanna a nyers fülszövegtől a működő programig az adatgyűjtéssel kezdve, a szövegfeldolgozáson, majd a dokumentummátrix felépítésén és az osztályozáson át – az ábrán látható folyamat segítségével – jutott el. Lássuk ezeket lépésről lépésre, kicsit a szakmai részletekbe is elmélyedve.

Adatgyűjtés

„Ahhoz, hogy osztályozót építsek szükségem volt egy viszonylag nagy tanulóhalmazra, melyet a moly.hu adatbázisát használva készítettem el. Ezer angol nyelvű könyv címét, fülszövegét és a felhasználók által rájuk aggatott címkéket töltöttem le. A scrapeléshez, azaz a tömeges adatletöltéshez a pythonban megírt BeautifulSoup nevű csomagot használtam” – ismertette a szakértő.

Szövegfeldolgozás

Szabó-Fischer Hanna tapasztalatai szerint a szövegfeldolgozás sokkal hatékonyabban működik angol szövegekre, ráadásul a Goodreads-en is többnyire angol nyelven vannak feltöltve a könyvek, így kézenfekvő volt, hogy angolra optimalizálja a programot.

A szövegfeldolgozáshoz az nltk csomag volt a segítségére, a munkát pedig a fülszövegek megtisztításával kezdte.

Forrás: Towards Data Science

 

„A tokenizálással szavakra bontottam a fülszöveget, majd minden szót kisbetűssé alakítottam, hiszen a szövegfelismerő rendszerek számára például a „Könyv” és a „könyv” sem ugyanaz. Ezután kiszűrtem a “stop szavakat”. Ezek olyan szavak, amik sokszor megjelennek a szövegekben, de önmagunkban nem hordoznak értéket. Ilyenek például a személyes névmások, létigék, segédigék vagy éppen a kötőszavak” – sorolta a lépéseket a szakértő.

Forrás: python nltk packedge


Fontos feladat volt a szavakat és mondatokat elválasztó, tagoló írásjelek értelmezése, kezelése is. A központozásnál és az egyedüli karaktereknél először a különböző szimbólumokat szűrte ki, majd a feldolgozás során egyedüli karakterként megmaradt elemek következtek.

„A lemmatization és a stemming két hasonló eljárás, összefoglaló néven szótövezésnek hívjuk. A lemmatization során minden szó leredukálódik a „gyökér szinonimájára”. A „playing” vagy a „played” például egyszerűen „play” lesz. Fontos kiemelni, hogy a lemmatization során az algoritmus figyel arra, hogy a redukált szó is szótári szó maradjon. A stemming hasonló logikával működik, azzal a különbséggel, hogy itt az algoritmus meghatározott szabályok alapján vágja vagy cseréli le a szóvégeket, így előfordulhat, hogy nem szótári szavakat kapunk eredményül” – ismertette a szövegfeldolgozás fontos mozzanatát az adattudós. Hozzátette: a számok konvertálásánál az arab számokat egyszerűen csak szöveggé kellett átalakítani.

Forrás: Towards Data Science

Dokumentummátrix-építés

Miután előállt a megtisztított adathalmaz, az adattudós elkészítette a szavakból az úgynevezett document-term mátrixot.

„Ez egy olyan mátrix melynek a sorai a dokumentumok – az én esetemben a fülszövegek –, az oszlopai pedig a szavak, amik előfordultak a fülszövegekben. Arra több megoldás is létezik, hogy az adott fülszövegek és szavak metszeteit miként érdemes feltölteni értékkel. A legegyszerűbb verzió, amikor 0 kerül abba az oszlopba, amely szó nem szerepelt a dokumentumban és 1-es oda, amely szerepelt. Ennél egy fokkal szofisztikáltabb módszer, amikor nem feltétlenül 1-es kerül a metszetbe, hanem a szó gyakorisága, az adott dokumentumban” – ismertette a szakértő.

Szabó-Fischer Hanna ugyanakkor nem az előbbieket, hanem egy harmadik féle módszer alkalmazott: úgynevezett tf-idf (Term Frequency — Inverse Document Frequency) mátrixot épített. Itt az egyes cellákba 0-1 közötti értékek kerültek, amelyek önmagukban reprezentálják az egyes szavak fontosságát (gyakoriságát) az adott dokumentumban és a corpusban (szókészletben) is.

Következőféleképpen számolható:

  • t – term (szó)
  • d – document (szavak összessége, itt: 1 db fülszöveg)
  • N – corpus nagysága (az összes előforduló szó száma)

tf(t,d) = t gyakorisága d-ben / összes szó száma d-ben
df(t) = t gyakorisága az összes dokumentumban

tf-idf(t,d) = tf(t,d) * log(N/(df(t)+1))

Forrás:Towards Data Science

Osztályozás

Elkészült a dokumentummátrix, kezdődhetett az osztályozás. A United Consult senior munkatársa a tanulóhalmazból leválasztotta a címkéket, majd felmérte, hogy mekkora volumennel van dolga.

„Nagyjából nyolcszáz különböző címke gyűlt össze az ezer darab könyvhöz. Ezeket gyakoriság szerint sorba állítottam és a legnépszerűbb ötvenből kiválasztottam azt a tizenötöt, ami számomra a leginkább fontos. Minden könyvről eltároltam, hogy a tizenöt címke közül melyik igaz rá, majd a címkékre egyesével építettem osztályozókat. Ehhez az sklearn csomagot használtam. Három féle algoritmussal próbálkoztam (KNeighbors, Naive-Bayes és SVM), és ezek közül az accuracy alapján döntöttem a Naive-Bayes mellett” – avatott be a szakmai részletekbe. Az eredményekről szólva hozzátette: a legtöbb címkére 70-90% közötti pontossággal működtek az osztályozók a teszthalmazon.

Eredmények

Az adatgyűjtés után megvolt a szövegfeldolgozás, elkészült a dokumentummátrix, majd lezajlott az osztályozás is. Már csak a program hiányzott, mely a nyers fülszövegekből címkéket generál. Szabó-Fischer Hanna az alábbi ábrán látható lépések segítségével ezt is megírta:

„Végigfuttattam a Goodreads-en lévő várólistámon, és megállapítottam, hogy tendál az egyhangúság felé. Illene szélesíteni a látókörömet” – összegezte az eredményeket az adattudós.

Néhány példa a program alkalmazására:

„Az eredményekből látszik, hogy vannak bizonyos címkék – kortárs, romantikus, fantasy, ifjúsági –, amiket nagyon jól felismer a program, de azokra, amelyek ritkábban szerepeltek a tanuló halmazban – például humoros, női/férfi főszereplő, váltott szemszög, sci-fi, disztópia –, nem tanult rá olyan jól, és az új fülszövegekre nem alkalmazza ezeket a címkéket” – konstatálta Szabó-Fischer Hanna.

Az okokról szólva megosztotta, hogy az alap tanulóhalmazt a moly.hu-ra angolul feltöltött könyvek jelentették, ebben a körben pedig magasan felül reprezentáltak az ifjúsági és kortárs szerzők könyvei, és talán a szórakoztató irodalom is a szépirodalommal szemben, hiszen ezt az adatbázist a felhasználók készítik, és a fiatalabb korosztályban sokkal valószínűbb, hogy valaki angolul olvas, mint az idősebbek között. Mindezek miatt a háborúkkal, gyásszal, történelmi regényekkel kapcsolatos címkék is kevésbé jelentek meg a tanuló halmazban.

„Javítani a felismert címkék sokszínűségén leginkább a tanulóhalmaz számbeli növelésével és a repertoár szélesítésével lehetne” – zárta a szakértő, aki mindezek ellenére jó szívvel ajánlja az előbbiekben ismertetett módszert arra, hogy bárki spoiler nélkül találjon az ízlésének megfelelő könyvet.

További eredmények:

A kód

Szabó-Fischer Hanna a kódot is megosztotta, hátha valakinek kedve támad továbbgondolni az ötletet. Íme…


# SCRAPE
from bs4 import BeautifulSoup
import requests

# go through links to retrieve blurbs and tags
url = 'https://moly.hu' + link["href"]
r = requests.get(url)

# collect html
soup = BeautifulSoup(r.text, 'html.parser')
cimkek = soup.find_all('a', class_='hover_link')
fulszovegek = soup.find_all('div', class_="text")

# TEXT-MINING
def preprocessing(fulszoveg):
    fulszoveg = lower_case_convert(fulszoveg)
    fulszoveg = tokenizing_own(fulszoveg)
    fulszoveg = stop_words_eliminator(fulszoveg)
    fulszoveg = punctuation_eliminator(fulszoveg)
    fulszoveg = apostrophe_eliminator(fulszoveg)
    fulszoveg = single_char_eliminator(fulszoveg)
    fulszoveg = converting_numbers(fulszoveg)
    fulszoveg = tokenizing_own(fulszoveg)
    fulszoveg = stop_words_eliminator(fulszoveg)
    fulszoveg = lemming_own(fulszoveg)
    fulszoveg = stemming_own(fulszoveg)
    return fulszoveg

# TF-IDF
import collections
# making a dictionary which collects all the words, and collect the doc IDs for every word
DF = {}
for i in range(len(fulszovegek)):
    tokens = fulszovegek[i]

    for word in tokens:
        try:
            DF[word].add(i)
        except:
             DF[word] = {i}

# instead of collecting the doc IDs, we need just the counts for every word
for i in DF:
    DF[i] = len(DF[i])
# all the words (keys in DF)
total_vocab = [x for x in DF]

# calcuating TF-IDF
tf_idf = {}
for i in range(len(fulszovegek)):
    tokens = fulszovegek[i]
    counter = collections.Counter(tokens)
    words_count = len(tokens)
    for token in np.unique(tokens):
        tf = counter[token]/words_count
        df = doc_freq(token)
        idf = np.log((len(fulszovegek)+1)/(df+1))
        tf_idf[doc, token] = tf*idf

    doc += 1

# CLASSIFICATION
from sklearn.naive_bayes import MultinomialNB
from sklearn.model_selection import GridSearchCV

# train/test split
data_train=data.sample(frac=0.8,random_state=200)
data_test=data.drop(data_train.index)

# set X
X_train = data_train.drop([cimkek], axis=1)
X_test = data_test.drop([cimkek], axis=1)

# classifier for every tag
tag_list = cimkek
for tag in tag_list:
    y_train = data_train[tag]
    y_test = data_test[tag]

    parameters = {'alpha': [0.1, 0.5, 1, 1.1, 1.2, 1.3, 1.4, 1.5, 2, 2.3, 2.6, 3, 4, 5, 6]}
    naiveB = GridSearchCV(MultinomialNB(), parameters)
    best_est = naiveB.best_estimator_
    best_est.fit(X_train, y_train)
    y_pred = best_est.predict(X_test)
    print('score', best_est.score(X_test, y_test))

# PRODUCT
processed_text = preprocessing(fulszoveg)
data = instert_into_tfidf(processed_text)
result = auto_tag(data)

 


							
						

Ingatlanok árazása

By | Data Science | No Comments

Az ingatlanok értéke könnyen összegezhető a telek elhelyezkedése, nagysága, befektetett különböző erőforrások értéke alapján. Ezzel szemben az ára nehezebben meghatározható egy “dinamikusan” változó környezetben, ahol más és más célok keverékével találnak újabb gazdára az ingatlanok.

Egyre nagyobb arányban jelenik meg a spekuláns, vagy kiadási célra vásárló kereslet, ami könnyen felborítja a piac megszokott működését. Emiatt az elmúlt években az ingatlan értékét kevésbé latba véve, az aktuális piacon lévő hasonló ingatlanok árát súlyozva volt helyesebb meghatározni az ingatlan árát. A problémát tovább nehezítette, hogy ezt az árazást elég sűrűn újra a piachoz kellett igazítani, hiszen akár egy hónap elteltével hasonló ingatlanok ára is százalékokkal változhatott. Ebben a kérdéskörben lehettünk segítségére egy projekt keretei között egy ingatlanközvetítő cégnek.

Mivel a jelenben szeretnénk megkapni az ingatlan árát és nem előrevetíteni ennek a változását egy következő periódusra, így a probléma egy egyszerű regresszióval is leírható. Első lépésként meg kell különböztetnünk a cél és magyarázó változót. A cél az ingatlan ára, a magyarázók pedig azok az attribútumok, amik legjobban meg tudják magyarázni az ár alakulását. Bár ezek a tényezők akár régiónként is nagy részben változhatnak, azonban legtöbb esetben a következő változók jelentik a minimum követelményt egy ingatlan árának a meghatározásához:

  • Időpont

Az ingatlan meghirdetésének vagy keresésének az időpontja. Elegendő az év-hónap esetleg a negyedév feltüntentése, így könnyebben követhető mely negyedévekben volt nagyobb az emelkedés vagy csökkenés, vagy ennek kombinációja, ami volatilitást szült. Fontos megjegyezni, hogy a meghirdetett ár és a ténylegesen eladásra került ingatlan ára között nem csupán marginális eltérések lehetnek, hiszen a meghirdetett ár, nem biztos, hogy fix és a vásárló is lehet elég szemfüles, hogy jól tud alkudni. Ezt nagyban befolyásolja, hogy az eladó milyen gyorsan akar túladni a ingatlanon.

  • Ingatlan tulajdonságai

Az ingatlan tulajdonságait két nagy csoportba sorolhatjuk. Az első és talán legfontosabb a különböző méretek, mint ingatlan, terasz, telek területek, szobák száma és ezek kialakítása, belmagasság és további az ingatlan állapotát nem tükröző adottságok. Ne feledkezzünk meg természetesen az építés évéről és a kiépített infrastruktúráról sem.

A szembetűnőbb és egyben szubjektívabb elemek fedik le az ingatlan állapotát, amit egyszerűség kedvéért egy szimpla pontozási rendszerrel is megoldhatunk, azonban, ha csak egy ötös skálát veszünk alapul, akkor nagy különbségek lehetnek akár az átlagos, akár a luxus ingatlanok között és nem jelölhetjük csupán hármassal az előbbit és ötössel az utóbbit. Ebben lehetnek segítségünkre a leírások, amelyek tartalmazhatják, hogy felújított vagy esetleg arra szoruló az ingatlan. Ha ezeket is alapul szeretnénk venni az ingatlan árának becslésnél, akkor ezeknek a mondatoknak a dekódolása is szükséges. Csak ezeket a leírásokat felhasználni a modellezéshez természetesen kockázatos, hiszen ez az egyéntől függ, hogy hogyan írja le az adott tényezőket, azonban kiegészítésének biztos segítség lehet.

  • Környék és elhelyezkedés

Nem mehetünk el szó nélkül az ingatlan elhelyezkedése mellett, hiszen hasonló ingatlan akár Pesten, vagy Budán helyezkedik el, vagy esetleg más és más városokban, az nagyon megszabja, hogy minek mennyi is az ára. Fontos megemlíteni az ingatlan esetében, hogy merre néz, hiszen nem mindegy, hogy egy csendes belső udvarra, vagy a forgalmas utca felé. Emellett számba kell venni az ingatlan közelségében lévő szolgáltatási lehetőségeket is, amelyek iránti igény életciklusonként eltérő lehet. Hiszen fiatalon még fontos, hogy akár a szórakozóhelyek, akár az iskola elérhetők legyenek, későbbiekben a munkahely, bevásárlási lehetőségek, gyógyszertár majd az óvoda, iskola, stb.
A közelben lévő szolgáltatások azonosításához a bárki számára elérhető OpenStreetMap-et használtunk, ami a Google Maps-hez hasonlóan nem csak az úthálózatokat, de a különböző szolgáltatásokat is felöleli a régiókban. A projekt során az ingatlanok koordinátáit felhasználva gyűjtöttük össze a közelségükben található szolgáltatásokat, amelyek pozitívan hathatnak az árak alakulására. Emellett összegeztük a tömegközlekedési lehetőségeket és a nagyobb utazási csomópontokat.

  • KSH adatok

Az ingatlanok árát befolyásolja a település de a régió adottságai is. Beszélhetünk akár a balatoni borvidék közelségéről, vagy a munkanélküliségi rátáról a körzetben, vagy egyszerűen az új lakások számáról. Bár nagy átlagban nem játszik nagy szerepet a régió KSH adatai, azonban ezeket a tényezőket is szükséges figyelembe venni, hogy minél pontosabb árat prediktálhassunk.

Természetesen az érdeklődőnek nem szükséges tudnia, hogy milyen messze helyezkedik el telkéhez a legközelebbi bevásárlóközpont, vagy mennyi az átlagkereset a településén, elegendő, ha csak a fontosabb tulajdonságait megosztja az ingatlanáról. De természetesen minél több információt oszt meg a felhasználó, annál pontosabban tud a modellünk prediktálni.

A fenti képen az ingatlan és régió tulajdonságait láthatjuk és ezek hatását az árra, ha a skála piros, akkor növeli az ingatlan árát, kékkel jelölve fordított az irány. Ezek a hatások az első pár változó esetében jól is látható, hiszen a bruttó és nettó méret növekedésével az ingatlan ára is egyre nagyobb lesz, de befolyásolja a korábban említett tranzakciós vagy kikiáltási ár is és hogy mikor lett létrehozva az ingatlan hirdetés.

De pontosan mi is mondja meg az árat és ez mennyire pontos, kérdezheti jogosan a felhasználó. Már a változókból is jól látható, hogy nem feltétlenül van meg minden egyes változó között a lineáris kapcsolat, így a lineáris regressziónál komplexebb modellezésre volt szükségünk. Hogy a felhasználóknak továbbra is egyszerű maradjon az értelmezés, egy döntési fák csoportjából álló modellezés mellett döntöttünk. Ekkor az egyes fák csupán gyenge tanulóként jelennek meg, csak a változók egy részével találkoznak, azonban ezek információk összevetésével egy erős tanuló hozható létre.

Bár elsőre meggyőzőnek tűnik, azonban mi lehet a probléma ezzel a modellezéssel? Az információk összevetésével átlagolás történik, ami információ vesztéssel is jár, azonban a nagy számban előforduló átlagos ingatlanok esetében nagyon jól működik az eljárás. Tehát az átlagos panelek, lakások, családi házak becslése megfelelő lesz, azonban a hatalmas loftok, vagy rózsadombi ingatlanok esetében alul becsli a modell az ingatlan árát.

Megnyugtatásul ez a probléma is kezelhető, ha a tanuló halmazokat rögtön ennek tudatában alakítjuk ki, hogy az egyedibb jellemzőkkel bíró ingatlanokat próbáljuk egy szegmensbe rakni és ezekre a kialakult csoportokra különböző modelleket fejleszteni. Ennek köszönhetően mindenki a lehető legjobb árat kaphatja meg a piacnak megfelelően pár perc alatt és nem kell átfésülni az összes hasonló ingatlant, hogy megszabhassuk a legjobb árat.

Fejlesztésünk eredményét az ingatlanközvetítő cég a dolgozóik támogatására használja, vagyis az ingatlanközvetítő kolléga a lakás adatainak megadása után azonnal kap egy becsült irányárat. Ezt összevetheti a saját vagy az eladó elképzeléseivel, így könnyebben kialakul egy reális eladási ár.

Az ajánlórendszerek használata ma már igen elterjedt, aki ilyen megoldást tervez bevezetni, több szolgáltató dobozos terméke közül is választhat. A döntés előtt érdemes azonban mérlegelni, hogy ezek a standardizált megoldások megfelelően illeszkednek-e a szolgáltatáshoz vagy a szolgáltatás speciális jellege miatt érdemes inkább egy egyedi megoldás fejlesztésében gondolkozni. Az alábbi írásban egy ingatlan ajánló rendszer fejlesztését mutatjuk be, amelynek bevezetésével a harmadával sikerült megnövelni az ingatlan megtekintések számát és a tényleges tranzakciók növekedéséhez több, mint 10%-kal járult hozzá.

Gyereknapi vizualizáció: miért nem együtt ünnepel a magyar és az osztrák gyerek?

By | Data Visualization | One Comment

Már nagyon várják a hétvégét a magyar lányok és fiúk, hiszen itt a gyermeknap. Az osztrák vagy éppen thaiföldi lurkók nem ilyen lelkesek, ami nem csoda, nekik ugyanis még hosszú hónapokat kell várniuk e jeles alkalomra. Utánajártunk és látványos, interaktív grafikán ábrázoltuk, hogy a világ különböző tájain mikor ünneplik a gyermeknapot.

 

A nemzetközi gyermeknap hagyománya Törökországból ered, ahol először 1920-ban, majd 1925-ben tartották meg ezt az ünnepet április 23-án. AZ ENSZ 1954-ben hirdette meg az egyetemes gyermeknapot, melynek célja az volt, hogy minden ország megemlékezzen a toleranciáról és az empátiáról a gyermekeink testvériségén keresztül. Az ünnep jó alkalom a gyermekjóléti törekvések fókuszba állítására is.

Magyarországon már a 20. század első évtizedében is rendeztek gyermeknapot, de rendszeressé csak az ‘20-as években vált. 1931 és 1947 között – amikor a háború engedte – gyermekhetet tartottak májusban vagy júniusban. 1948-től kezdve ez a rendezvény is kommunista párt befolyása alá került. 1953-ig június első vasárnapján ünnepelték, majd ‘54-től kezdve ünnepeljük május utolsó vasárnapján a nemzetközi gyermeknapot hazánkban. A világban az év egészen különböző napjain tartják a gyermeknapot, de sok helyen a nemzetközi gyermeknap dátuma egyezményesen június 1-je lett.

A leggyakoribb a nyári ünneplés – ami tehát a június elsejei nemzetközi napnak köszönhető –, de akad tavaszi és őszi időpont is bőven. Téli időpontot leginkább a forró éghajlatú országokban találhatunk.

DIY filmajánló

By | Data Science, Python | No Comments

Az elmúlt néhány évben az ajánlórendszerek egyre nagyobb teret foglalnak el az életünkben, szinte bármilyen online tevékenységet végzünk jelen vannak. Ott vannak az online kereskedelemben, a hirdetésekben és az ajánlórendszerek segítenek a filmek, zenék kiválasztásában is. Ezen rendszerek célja, hogy releváns elemeket javasoljon a felhasználónak. Data Scientist-ként is előfordulnak olyan feladatok, amelyeket ajánlórendszerek segítségével tudunk megoldani. Most a két hónapos otthon tartózkodásom alatt, nem a munkám kapcsán merült fel ez a problémakör. Miután véletlenszerűen rábukkantam egy filmes adatbázisra, úgy döntöttem építek egy egyszerű ajánlórendszert magamnak, amivel újabb filmeket javasolhatok, a már megnézett filmek értékelése alapján.

Adatbázis

Ezekben a feladatokban sokszor a megfelelő adatbázis hiánya okozza a legnagyobb problémát. Előfordul, hogy adott egy jó feladat, de sajnos nem található hozzá megfelelő mennyiségű vagy minőségű adat. Ennek oka lehet, hogy az adatok nem publikusak, vagy az adatkészlet megszerzése költségesebb, mint a projekt várható haszna. Abba a problémába is sokszor beleütközünk, hogy az adatok nem megfelelő minőségűek, hiányosak vagy nem konzisztensek. Olykor saját magunknak kell létrehozni az adatbázist, ami időigényes és költséges lehet. Szerencsére én rátaláltam egy 2013 óta épülő adatbázisra.

Az általam használt adatbázis a MovieTweetings, egy olyan adatkészlet, amely twitter felhasználók filmes értékeléseit tartalmazza. Naponta gyűjti össze az információt a Twitterről, az olyan jól strukturált tweetek alapján, amelyek tartalmazzák az „I rated #IMDb” kifejezést. Ez az adatkészlet Simon Dooms által végzett kutatás eredménye, amelyet a MovieTweetings: a Movie Rating Dataset Collected From Twitter tanulmány mutat be.

Miután az adatbázis rendelkezésre állt, először is ellenőriztem a használhatóságát. Ehhez megnéztem, hogy egy-egy filmet hányan értékeltek. A legtöbbet értékelt film a Gravity, amely 3086 szavazatot kapott. Ez lényegesen elmarad az IMDb értékelések számától. Sok olyan film is volt, ami nagyon kevés szavazattal rendelkezett, ezért leszűrtem a filmeket azokra, amelyek legalább 100 értékelést kaptak, és így 1644 film maradt az adatbázisomban. Ezután leellenőriztem, hogy hogyan viszonyulnak ezeknek a filmeknek az átlagos pontszámai egymáshoz, amit a Twitteren, illetve az IMDb-n kaptak. A következő táblázatban és ábrán jól látható, hogy érdekes módon az 1644 filmből csak 10 olyan volt, ami esetén nagyobb mint 1 az eltérés az átlagos pontszámok között, holott az IMDb-n nagyságrendekkel többen értékelik a filmeket.

filmek értékelése táblázatban

a Twitter és az IMDb filmértékelések összehasonlítása

Így jól használhatónak fogadtam el ezt az adatbázist és ezzel dolgoztam tovább. Kiszűrtem továbbá azokat a felhasználókat, akik kevesebb, mint 20 filmre adtak értékelést. Így a felhasználók száma 6883 maradt. A kezdeti tábla (twitterdataframe) a következőket tartalmazta: felhasználó (user_id), film (movie_title), értékelés (rating).

Ajánlórendszerek

Az ajánlórendszereknek három fő típusát különböztetjük meg: Az együttműködés alapú, a tartalom alapú és a hibrid módszert, amely az előző két megoldás keveréke.

Az együttműködés alapú megközelítés kizárólag a felhasználók és az elemek közötti korábbi kölcsönhatásokon alapul, új ajánlások előállítása érdekében. Ennek a módszernek a fő gondolata az, hogy a múltbeli felhasználó-elem-interakciók elegendőek a hasonló felhasználók és hasonló elemek megtalálásához és a számolt közelségek alapján a javaslatok elkészítéséhez. Az együttműködési megközelítés fő előnye, hogy nem igényel plusz információt a felhasználókról vagy az elemekről, és ezért sok helyzetben felhasználható. Sőt minél több felhasználó értékeli az elemeket, annál pontosabbak lesznek az új ajánlások.

Ellentétben az előző a módszerrel, a tartalom alapú megközelítés esetén kiegészítő információkra is szükség van a felhasználókról és az elemekről. Ilyen információ lehet az életkor, a nem vagy bármilyen más személyes adat a felhasználóról, valamint a kategória, a rendező, az időtartam vagy egyéb jellemzők a filmekről (elemekről).

Tekintve, hogy jelen helyzetben csak annyi információ áll rendelkezésre, hogy egy-egy felhasználó milyenre értékelte a filmeket, így az együttműködés alapú módszerrel dolgoztam.

Modell

Az együttműködés alapú módszer több fajtája közül a user-user megközelítéssel foglalkoztam. Annak érdekében, hogy új ajánlást nyújtson az adott felhasználónak, megpróbálja azonosítani a leginkább hasonló ízléssel rendelkező többi felhasználót. Ezt a módszert „user központúnak” nevezik, mivel a felhasználókat ábrázolja az elemekkel való interakcióik alapján, és méri a köztük lévő távolságot. Ezután kiszámol egy „hasonlóságot” az adott felhasználó és minden más felhasználó között. Ez a hasonlósági mutató közelinek tekint két felhasználót, akiknek azonos interakciói vannak ugyanazon elemekkel. Miután kiszámította a hasonlóságokat, megtalálja a felhasználóhoz legközelebbi szomszédokat, majd a szomszédok értékelései alapján ajánlja az új elemeket.

Ebben a feladatban új filmeket szerettem volna javasolni egy adott felhasználó számára. Ehhez először, minden felhasználót ábrázoltam a különféle filmekre adott értékeléseik vektoraként. A táblából (twitterdataframe) a vektorokat a pandas.DataFrame.pivot csomaggal hoztam létre, és a hiányzó értékeket kitöltöttem nullával.

felhasználók értékelése a filmekre

Ezek után megkerestem a szomszédokat a K legközelebbi szomszéd (K-nn) módszerével. Az algoritmus célja, hogy a film értékelések alapján megtalálja az adott felhasználóhoz legközelebb álló K számú legközelebbi szomszédot, azaz felhasználót. A szomszédok száma tetszőlegesen választható, figyelembe véve az alapbázis méretét és a feladat célját. Minél nagyobbra választjuk ezt a számot, annál távolabbi felhasználók is bekerülnek, így egyre kevésbé releváns elemeket fog javasolni a rendszer, viszont, ha nagyon kicsire állítjuk ezt a számot, akkor olyan filmeket is javasolhat, amit esetleg csak egy ember értékelt jóra. Itt a szomszédok számát 100-ra állítottam, hogy tényleg jó, de még releváns filmeket javasoljon a rendszer. A szomszédok kereséséhez az sklearn NearestNeighbors csomagját használtam. Alkalmaztam a modellt az adott felhasználóra, így megkaptam a legközelebbi 100 szomszédját.

Miután megtaláltam a legközelebbi szomszédokat, valamilyen módszerrel ki kellett választani a legnépszerűbb filmeket, majd azokat javasolni a felhasználónak, amiket még nem látott. A kiválasztás a céltól függ. Ki lehet választani azokat a filmeket, amiket a legtöbben 10-esre értékeltek, de lehet átlagos pontszám alapján is javaslatot adni. Én a következőképpen súlyoztam a pontszámokat: a rossz értékeléseket bűntettem, az átlagos értékeléseket figyelmen kívül hagytam, a jó értékeléseket pedig jutalmaztam. Ezután a kapott pontokat összegeztem minden filmre. Az így kialakult sorrendből az első 10 filmet javasoltam, amit a felhasználó még nem látott.

Ajánlás

Miután elkészült a modell, teszteltem a működését az általam értékelt filmeken. A következő táblázat azt a 20 filmet és pontszámot tartalmazza, ami alapján a legközelebbi szomszédokat kereste meg a rendszer.

az általam értékelt filmek

Az ajánló az alábbi filmeket javasolta nekem megnézésre:

Knives Out (2019), Avengers: Endgame (2019), Captain Phillips (2013), The Wolf of Wall Street (2013), The Shawshank Redemption (1994), Hacksaw Ridge (2016), American Hustle (2013), The Imitation Game (2014), Prisoners (2013), The Gentlemen (2019)

Mivel csak 20 filmet értékeltem előzőleg, így akadtak olyan filmek az ajánlatok között, melyeket már láttam, ennek köszönhetően tesztelni tudtam a javaslatokat. A remény rabjai (The Shawshank Redemption) és a Kódjátszma (The Imitation Game) kifejezett kedvenceim és a Phillips kapitányt is jó szívvel ajánlanám másoknak, ezért elégedett vagyok a rendszer működésével. Szerencsére azért akadt egy-két újdonság is a javaslatok között.

Felmerült problémák

A legtöbb ajánlási algoritmusban rendkívül óvatosnak kell lenni, hogy elkerüljük a népszerű termékek „gazdagabbá válását”. Más szóval, hogy rendszerünk csak népszerű elemeket javasoljon, és a felhasználók ​​csak olyan ajánlásokat kapjanak, amelyek rendkívül közel állnak azokhoz, amelyeket már kedveltek, ezáltal nincs esélyük megismerni új elemeket. Ennek elkerülésére növelhetjük a szomszédok számát, vagy az adott felhasználó értékelési listáját bővíthetjük változatosabb filmekkel.

A másik probléma, ami felmerült miután több kollégámnak is ajánlottam filmeket, hogy az egyik kollégám az 1644 filmből 1354-et látott és értékelt. Mivel az adatbázisban a következő legtöbbet értékelt felhasználó 869 filmet látott és 500-nál több filmet csak 13 felhasználó értékelt, így a szomszéd keresésnél csak egészen távoli szomszédokat talált hozzá az algoritmus. Valamint az ajánlható filmek listája nála lecsökkent 290-re, ezért nem biztos, hogy a legrelevánsabb filmeket ajánlja neki a rendszer. Ennek a problémának a megoldására az adatbázis növelése lenne a megoldás, ami költséges és időigényes lenne, de szerencsére ez ritka eset.

Tényleg jobb lett a levegő a karantén miatt?

By | Big Data News, Data Science | No Comments

António Guterres ENSZ-főtitkár a minap felhívást intézett a világ vezetőihez, hogy használják fel a koronavírus-járvány teremtette helyzetet a világ jobbá tételére és együttműködésükkel olyan más globális fenyegetésekkel is szálljanak szembe, mint a klímaváltozás. Mivel mi magunk, a United Consult munkatársai is elkötelezettek vagyunk a zöldebb jövő mellett, saját eszközeinkkel igyekeztünk utánajárni, hogy milyen konkrét összefüggések vannak a pandémia és a légszennyezettség csökkenése között.

 

Az MTI beszámolója szerint az ENSZ-főtitkár a Petersbergi Klímadialógus című kétnapos tanácskozás keretében szólalt fel videón keresztül. Guterres szerint a járvány rávilágított, hogy mennyire ki vannak szolgáltatva társadalmaink és gazdaságaink az ilyen jellegű sokkhatásoknak. Mint mondta, az egyedüli válasz ebben a helyzetben a bátor, jövőképpel rendelkező és együttműködő vezetés. „Ugyanilyen vezetésre van szükség a klímaváltozás egzisztenciális fenyegetése esetében is” – hangoztatta Guterres, aki szerint jelentős ára lesz annak, ha nem cselekszünk a klímaváltozás feltartóztatása ügyében, ugyanakkor – mint fogalmazott – a technológia a mi oldalunkon áll.

Húszéves múltra visszatekintő IT-cégként bátran megerősíthetjük az ENSZ-főtitkár szavait. A technológia valóban a jelen és a jövő szolgálatában áll, olyannyira, hogy kollégáink például már nem először hívták segítségül az adatokat és az adatelemzés módszerét a járványhelyzet kapcsán. Néhány hete arra kerestük a választ, hogy lehet-e Magyarországon adatokkal védekezni a járvány ellen, ezúttal pedig a Covid 19-járvány miatti kijárási korlátozások és légszennyezettség állapotának összefüggéseit vizsgáltuk meg.

NO2 és a hőmérséklet kapcsolata

A koronavírus-járvány kapcsán már sokat emlegetett légszennyezettség-csökkenés lehetséges okainak jártunk utána. Kíváncsiak voltunk arra, hogy a sok negatív hatással szemben ezt a pozitív változást át tudjuk-e menteni a vírus utáni időszakra.

A légszennyezettséget a levegő NO2 (nitrogén-dioxid) koncentrációján keresztül vizsgáltuk. A NO2 elsősorban a járművek üzemanyagának égéstermékeiből, valamint energia-termelésből és fűtésből származik. Ebből adódóan a hőmérséklet és a NO2 koncentráció természetesen erős kapcsolatot mutat. Mint a következő ábrán is jól látszik, a téli időszakban, amikor csúcson jár a fűtési szezon, mindig magasabb a légszennyezettség, és ahogy melegszik az idő, csökkennek az értékek.

 

Forrás: European Environment Agency, National Centers for Environmental Information

Mivel a koronavírus éppen ebben az amúgy is leszálló ágban ért el minket, az elemzés során figyelembe kellett vennünk az időjárási változásokat is. Ennek érdekében megnéztük, hogy tavalyhoz képest az idei tavasz gyorsabban vagy lassabban ért-e el minket. Azt tapasztaltuk, hogy a vizsgált városokban nincs szignifikáns különbség a tavalyi és az idei hőmérséklet alakulások között, így összehasonlíthattuk a tavalyi és idei NO2 értékeket.

A korlátozások hatása a légszennyezettségre

De akkor mi okozhatta mégis hirtelen a légszennyezettségi mutatók javulását a legtöbb koronavírussal sújtott országban? Nem kérdés, hogy a megbetegedéseken és az azokra adott társadalmi reakciókon túl a különböző vészhelyzeti intézkedések komoly hatással voltak minden ország működésére, ezek nyomán pedig visszaesett a közlekedés és ipari tevékenységek nagy része.

Vizsgálatunk során kísérletet tettünk arra, hogy egy időskálán bemutassuk, hogyan szigorodtak a korlátozások öt európai fővárosban. Egy 10-es skálán kategorizáltuk be az adott napi intézkedéseket az alábbi szempontok szerint:

A következőkben láthatjuk a NO2 és a korlátozások kapcsolatát. Az ábrákon feltűntettük a tavalyi és az idei év NO2 koncentrációját januártól kezdve és ezzel párhuzamosan mellé tettük, hogy a különböző városokban mikor, milyen erős korlátozások léptek érvénybe. Jól látható, hogy azokban a városokban, ahol a korlátozások erőssége elérte a legerősebb, 10-es szintet, ott jelentős csökkenést tapasztalunk a tavalyi NO2 koncentrációhoz képest.


Az eredményekből az is kitűnik, hogy bár Budapesten és Berlinben – ahol a korlátozások egyelőre megálltak a 7-es szinten és a hírek szerint nem is várható további szigorítás – is volt egy kezdeti csökkenés, hamar visszaállt a koncentráció az ilyenkor megszokott szintre.

A döntések gazdasági hatásai

Ezek a megfigyelések megerősítették, hogy a járvány miatt hozott döntések nem csupán egészségügyi, hanem komoly környezeti hatásokkal is bírnak. Mindemellett fontos szempont persze – és a döntéshozóknak természetesen ezt is mérlegelni kell –, hogy a korlátozások nem csupán a vírus terjedésének sebességét és intenzitását, illetve a légszennyezettséget befolyásolják. Az ilyen intézkedések a gazdaságra is komoly, jellemzően negatív hatással vannak. Kivételt talán csak az online kereskedelemmel, illetve bizonyos egészségügyi eszközök gyártásával és forgalmazásával összefüggő üzleti területek jelenthetnek.

A GDP adatok a márciusi-áprilisi időszakra vonatkozóan még nem álltak rendelkezésünkre, ezért a gazdasági hatások alakulásának vizsgálatára az úgynevezett PMI (beszerzési menedzser index) mutatót fogjuk használni, mely egy megkérdezésen alapuló mutató. Vállalatok vezetői nyilatkoznak az új megrendelések, készletek állománya, termelés, szállító teljesítések és a foglalkoztatási környezet változásairól. Ha a PMI értéke 50 feletti szám, akkor az gazdasági növekedést, az 50 alatti érték szűkülést, míg a kerek 50 változatlanságot vetít előre az előző hónaphoz képest.

 

Forrás: Investing.com

A fentebbi ábrán jól látható, hogy a gazdaságra éppoly drasztikus, ha nem erősebb hatása lesz hosszú távon „karanténban töltött” időszaknak, mint a légszennyezettségre. Összességében tehát elmondhatjuk, hogy igen komoly döntések előtt állnak a világ kormányainak vezetői: most ugyanis – ahogyan az ENSZ-főtitkár is hangsúlyozta – fontos lépéseket tehetnének a klímaváltozás ellen, nem mindegy azonban, hogy mindezt milyen áron teszik meg. Egyelőre a jövő kérdése, hogy a világ vezetői – például a COVID 19 nyomán csökkenő légszennyezettséget látva – megtalálják-e azokat az ideális intézkedéseket, melyek hosszú távon nem teszik tönkre a gazdaságot, de mégis látható javulást hoznak a környezeti mutatókra.

babygirl

Ők az anyukák kedvencei – látványos vizualizációk a trendi keresztnevekről

By | Big Data, Big Data News, Data Visualization | No Comments

Ezen a hétvégén lesz május első vasárnapja, amit Magyarországon 1925 óta az anyák napjaként ünneplünk. Az édesanyák első ajándéka újszülött gyermekeik számára a gondosan megválasztott keresztnév, mely életük végéig elkíséri őket. Anyák napja alkalmából a névadási trendeket vizsgáltuk az 1950-es évektől napjainkig.

 

Utánanéztünk, hogy a közel hét évtized alatt az édesanyák körében melyek voltak azok a leggyakoribb keresztnevek, amiket újszülött gyermekeiknek választottak, és hogy miként alakultak a névadási trendek Magyarországon.

Érdekes megfigyelni, hogy míg a fiúknál minden korszak között vannak átfedések, addig a lányoknál sokkal nagyobb a fluktuáció, és a top 15-ös listában többször is teljesen kicserélődnek a nevek. A látványos adatvizualizációkat figyelve – miként a való életben is – a szemünk láttára tűnnek el a Máriák és az Erzsébetek, és nem sokkal szerencsésebbek az Istvánok és a Józsefek sem. Az elemzésből kiderült, hogy míg a fiúknál már 2001 óta uralkodnak a Bencék, a lányoknál csak tíz évvel később kerültek az első helyre a Hannák.

Ráadásként pedig egy igazi kuriózum: a következő vizualizáción láthatod, hogy melyek a legnépszerűbb női és férfi keresztnevek Európa országaiban.

Európai trendek

Forrás: Belügyminisztérium Nyilvántartások Vezetéséért Felelős Helyettes Államtitkárság, Magyar Keresztnevek Tára
Vizualizáció: Flourish

Lehet Magyarországon adatokkal védekezni a járvány ellen?

By | Big Data, Cloudera, Data Visualization, Machine Learning, Python, Spatial data | No Comments

A kezdeti nehézségek ellenére meglehetősen jól alkalmazkodtunk a körülményekhez és – bár a többség számára nehezen érzékeltethető – de az IT világában igenis folyik a munka. Sok esetben meglehetősen hatékonyan. Egyik véglet, amikor munka közben négy gyereket kell menedzselni egy 80 nm-es lakásban, ahol a 2 nm-es erkélyre lehet maximum kimenni, a másik véglet a szingli életmód egy belvárosi lakásban, ahol hetek óta senkivel sem találkozol. Mindkettőre könnyű példát találni. Meggyőződésem, hogy egyik sem tartható fenn huzamosabb ideig anélkül, hogy valakinek az idegállapota ne változzon jelentős mértékben. Az előrejelzések alapján azonban a jelenlegi állapot hosszú hetekig még fenn marad, hiszen ha lazítanak a szabályokon, akkor a vírus terjedése elindul. Idén tehát valószínűleg sokaknak elmarad a nyár vagy a saját lakásra/kertre, esetleg nyaralóra, de mindenképpen a szűk családi körre koncentrálódik.

Hatékony járványkezelés, lehetséges?

A híreket olvasva kerestem példákat, hogy más országokban mi a helyzet. Azt már tudjuk, hogy hogyan ne kezeljük a helyzetet, látva az olaszországi, spanyol és francia példákat, ahol százak halnak meg naponta a vírustól. Vajon azt tudjuk hogyan lehetne másképp, jobban kezelni, hogy a vírus ne terjedjen, ugyanakkor a korlátozások se legyenek ilyen drasztikusak? Van erre példa, méghozzá Dél-Korea.

Dél-Koreában ugyan több, mint 9200 fertőzést regisztáltak (2020. március 26-i adat), a lakossághoz és a népsűrűséghez mérten ez egyáltalán nem sok. A megdöbbentő azonban, hogy milyen gyorsan úrrá lettek a vírus terjedésén: február 20-án regisztálták hivatalosan az első fertőzötteket és március 4-én már meg tudták törni a lendületet, majd 8-án újra egy törés, március 12-e óta pedig átlagban, kevesebb, mint 100 új esetet regisztrálnak naponta.

Sum Cases South Korea COVID-19
Daily Increase South Korea COVID-19

A Wikipédia szerint Dél-Korea lakossága körülbelül 51 millió fő, 1960 óta megduplázódott. (Érdekesség, hogy eközben, a hasonló népességű Irán lakossága majdnem megháromszorozódott.) Földrajzilag szomszédos Kínával (ahonnan a vírus elindult), de közvetlen szárazföldi kapcsolata Kínával nincs. Szárazföldi kapcsolata Észak-Koreán keresztül van, Észak-Korea zártsága miatt arra viszonylat kevesen járnak. Így a határai jól kontrollálhatóak, vízi és légi kikötőkre korlátozódnak. Azonban nem ennek a sajátos helyzetnek köszönhetik, hogy ilyen jól kordában tudták tartani a vírus terjedését. A háborút még ők sem nyerték meg, de sok csatát már megnyertek és jók a kilátásaik a végső győzelemre.

A Max Fisher NYT újságírójának beszámolója alapján Dél Korea a felkészültségének és a hihetetlen professzionizmussal végrehajtott „hadműveletének” köszönheti a hatékony védekezését. A „hadművelet” négy fontos részből áll:

  • Gyors beavatkozás, még a krízishelyzet kialakulása előtt (Lee Sangwon, an infectious diseases expert at the Korea Centers for Disease Control and Prevention said: “We acted like an army,”)
  • Korai tesztelés, gyakran és biztonságosan (hogy nehogy az orvos/nővér is megbetegedjen)
  • Kapcsolatok követése, izolálása és megfigyelése
  • Lakosság segítségül hívása, bevonása

Ezen pontok egyike sem egyszerű önmagában, de mind a négy pont hatékony végrehajtása és összehangolása nagyon komoly felkészültséget feltételez. Dél Koreában valószínűleg tanultak a 2002-2004-es első SARS hullámból. Sajnos vagy szerencsére abból Magyarország, de még a teljes Európa is majdnem kimaradt, az EU-ban mindössze Franciaországban volt halálos áldozata és a legtöbb országban hivatalosan nem is jelent meg a fertőzés. Dél-Koreában viszont igen, igaz csak 3 igazolt esetben.

Ennél is talán fontosabb a 2012-ben kirobbant Közel-keleti légúti szindróma (MERS) járvány, ami Dél Koreát 2015-ben érte el és “küldött” közel 6800 főt karanténba.

MERS Worldwide
MERS in South Korea

Forrás: https://en.wikipedia.org/wiki/2002%E2%80%932004_SARS_outbreak

Feltehetőleg ez készítette fel a koreai hatóságokat, hogy hogyan kell védekezni egy világjárvány ellen, hogyan védjék meg a lakosságot, főként azt a ~13,6%-ot (~7 millió embert), aki 65 éven feletti.

Az első két pont (gyors beavatkozás, gyors döntéshozatal, jó stratégia megalkotása és a korai tesztelés) abszolút a felkészültségről szól. (Van-e például a raktárban tömegesen olyan teszt, ami kimutatja a vírust?) A negyedik pont számomra evidens egy hatékonyan működő társadalomban a tájékoztatás, a kommunikáció nagyon fontos, hiszen bármit kitalálhatsz, ha az embereket nem tudod magad mellé állítani, akármilyen jó is az ötlet, nem fog működni.

Technológia jelentősége a járványkezelésben

A harmadik pont az ami engem érdekel, technológiai szempontból ez a legérdekesebb. Hogyan tudunk egy 51 millió fős lakosságot hatékonyan lekövetni, izolálni és megfigyelni?

A válasz nem is olyan bonyolult az adatok világában. Egyrészt nem 51 millió embert kell egyszerre megfigyelni, csak azt, aki közvetlen kapcsolatba kerül olyan emberrel, aki fertőzött. Miután a tömeges teszteléssel hatékonyan beazonosították egy adott területen, hogy ki a fertőzött és ki nem, már csak azokra kellett koncentrálniuk, aki fertőzött. A mobiltelefonok világában technológiailag nem túl bonyolult lekövetni, hogy ki merre jár. A Google Maps Timelineon például most is meg tudom nézni, hogy két éve március 15-én éppen merre jártam. Sőt még azt is, hogy mivel közlekedtem: gépkocsi, kerékpár vagy gyalog. Persze ez nem mindenkinél engedélyezett és egy más kérdés az, hogy kivel osztom meg, de a mozgás követése évekre visszamenőleg adott, hiszen egy globális helymeghatározó eszközt hordanak az emberek a zsebükben, aminek neve: okostelefon. Mindegy, hogy Android vagy iOS, legfeljebb az a különbség, hogy melyik gyártó szerverére küldi az adatokat, ha nincs ez a funkció letiltva.

Maps Timeline Example

Magyarországi helyzetkép

Jelenleg 5,3 millió (~57,4%) okostelefon használó van Magyarországon, úgyhogy ezzel még nem oldottuk meg fertőzöttek követését, csak nagyjából minden másodikét, feltételezve, hogy megkapjuk az engedélyt az adatok beszerzésére.

A GPS koordináták követésén kívül van azonban egy nem közismert, de más kontextusban gyakran használt megoldás. Bárkinek a mozgása, aki mobiltelefont használ a mobilhálózaton keresztül, ha nem is GPS pontossággal, de lekövethető. Az adatok magyarországi használata nem is példa nélküli, a Nemzeti Turisztikai Ügynökség például vásárolt és elemzett ilyen adatokat nem is olyan régen.

A pontosság a hálózat sűrűségétől és a beállításaitól persze nagy mértékben függ, de a célnak megfelelő és azt a tévhitet is el kell vetni, hogy csak azok a mobiltelefonok követhetőek le, amelyek éppen hívásban vannak. Minden bekapcsolt állapotú mobiltelefon lekövethető. Erre egyébként a hazai mobilszolgáltatók céges gépjárműflotta követésére már több, mint 10 éve nyújtanak szolgáltatást (Mobil Flotta, Flotta Helymeghatározó vagy Flottakövetés).

Itt jön képbe a Big Data

Tegyük fel, hogy az adatok elérhetőek. Innentől egyszerűen csak össze kell vetnünk a koordinátákat időben és térben és le kell fejlesztenünk az algoritmust, ami akár valós időben megmondja, hogy egy kiválasztott időpontban ki találkozhatott az útja során fertőzött személlyel. Ha ezt a megfigyelt körnél automatikusan végezzük az elmúlt két hétre, akkor az eredmény a másodperc töredéke alatt lekérdezhető. Igen, akár Magyarországon is!

Az adatok hatékonyt tárolását számos Big Data megoldás támogatja, és kapacitáshiányban sem szenvedünk a felhőmegoldásoknak (például AWS, Azure, GCP) köszönhetően, de ha például ez nemzetbiztonsági kockázatot jelent, akkor építhetünk magunknak Hadoop rendszert, például egy on-prem Cloudera clustert, amit “olcsó” hardveren üzemeltethetünk és tárolhatunk benne akár petabyte (10^15 byte) méretű adathalmazt is, amelyet másodpercek alatt fel lehet dolgozni.

Megtalálni a megfigyelt személy útját keresztező személyeket nem triviális. Számos oldalról meg lehet közelíteni és kis kutatással, kész algoritmust is találhatunk az Interneten, például itt. Az algoritmus (akármilyen hatékony is) feldolgozó-kapacitást igényel, de ez 2020-ban szintén nem lehet akadály. Megfelelően méretezett on-prem clusteren vagy a felhőben elérhető a megfelelő “processing capacity”. Sőt manapság már a tárolás és a feldolgozás nem feltétlenül kell egy helyen legyen, “csak” a két hely között mozgatott adatmennyiségre kell figyelni, hogy a hatékonyság ne vesszen el. Költséghatékonyan megoldani persze semmit sem egyszerű, de nem is lehetetlen. Minden technológia és tudás is adott hozzá a csapatunkban.

Az algoritmus eredménye birtokában, akár a fertőzési valószínűséget számító Machine Learning modellekkel, SMS formájában értesíthető minden potenciálisan érintett személy és ezáltal elirányítható egy tesztközpontba.

Személyiségi jogok

A járványkezelés kapcsán sokszor felmerül a személyiségi jog kérdésköre, úgy ahogyan bármilyen üzleti célú adatgyűjtés, BigData és Machine Learning alkalmazása kapcsán is.

Véleményem szerint a járványkezeléssel kapcsolatban, ahol a hatékonyság elmaradása emberéleteket követelhet – szemben mondjuk egy üzleti alkamazással, ahol “egyedül” a profit áll szemben a jogokkal – a társadalmi igény magasabb szintet kell, hogy képviseljen, mint az egyén személyiségi joga.

Ettől a morális vitától függetlenül, a vázolt technológiai megoldás, a cellainformációkon alapuló kontakt kutatás anonimizált módon tudna zajlani. A szolgáltatók az adatvagyonnal jelenleg is rendelkeznek és úgy vélem, hogy az adatok anonimizált “átadása” egy központi járványkezelő szerv számára semmilyen törvényi akadályt nem sértene, de ennek a kérdésnek a megválaszolása természetesen már a szakjogászok feladata.

Hogyan tovább?

A koronavírus kapcsán talán már késő egy ilyen megoldás megvalósítása, de addig érdemes a témát napirenden tartani, amíg forró, hiszen egy esetleges következő járvány során a megvalósításba fektetett költségek elenyészőek ahhoz képest, hogy akár a társadalom az emberéleteken keresztül, akár a gazdaság a szigorú és hosszan tartó korlátozások hatására mekkora károkat szenvedhet el.

A dél-koreai példából is jól látható, hogy ha erre valaki fel van készülve és tömegesen, hatékonyan tudja végrehajtani a védekező intézkedéseket, akkor a járvány komolyabb korlátozások nélkül, meglehetősen rövid idő alatt kordában tartható.

Azt hiszem egyik ország sem kezelheti másként a helyzetet, legfeljebb ellaposíthatja a szigorú intézkedésekkel a vírus terjedésést, és elodázhatja ezeket a feladatokat. Hosszú távon – véleményem szerint – ez a rendkívüli állapot nem fenntartható anélkül, hogy komolyabb – nem feltétlenül közvetlenül a vírus okozta – károkat szenvedjünk. Így vagy úgy, mindenesetre jobb ha megtanulunk mindezzel együtt élni.