Játék az adatokkal

Társasjáték trendek elemzése a BGG adatbázisa alapján

Bevezető helyett: néhány kérdés és válasz a projektről

2020. február 20. 20:18 - Jatek_az_Adatokkal

Mielőtt belevágnánk az elemzésbe, megpróbálok válaszolni a legfontosabb kérdésekre. Azaz mit, miért és hogyan?

bgg_wordcloud_jo.jpg

Mi ez a projekt és mi a célja?

Az utóbbi években két izgalmas úri huncutsággal töltöttem a szabadidőm jelentős részét: a társasjátékozással és a data science kihívásokkal teli világának felfedezésével. Hobbi projektként a kettőt ötvözve nemrég nekikezdtem a BoardGameGeek adatbázisának elemzésébe. Őszintén kíváncsi vagyok, hogy mit mondanak az adatok, milyen összefüggések rajzolódnak ki és milyen trendeket tudok majd beazonosítani. Emellett fontos célom a tanulás és a gyakorlás egy olyan adatbázis elemzése által, ami tényleg érdekel. A blogot azért indítottam, hogy az izgalmasabb eredményeket bemutassam. Hátha más is annyi örömet talál benne, mint én.

Több hasonló projektet találtam már a neten (lásd később), tehát úttörőnek semmiképp sem nevezhető, amit csinálok. Ha mégis érvelnem kéne, hogy miért érdemes követned a bejegyzéseket, akkor az adatbázis aktualitását hoznám fel. Úgy érzem, hogy nagyon gyorsan változik a társasjátékok ökoszisztémája, és én a lehető legfrissebb adatokat felhasználva igyekszem dokumentálni ezt a folyamatos átalakulást.

Honnan vannak adatok?

Az adatbázist a BoardGameGeek (BGG) oldal adatai alapján építettem fel. A BGG egy társasjátékos gyűjtőoldal, amelyen minden olyan játék megtalálható, amelyik számít. Minden játék önálló al-oldallal rendelkezik, ezeken számtalan információ morzsa próbálja elhelyezni az adott elemet a társasjátékos univerzumban. A BGG mögött aktív felhasználói közösség áll, akik élettel töltik meg az oldalt és folyamatosan karbantartják az adatokat. A lelkes felhasználók emellett értékelnek is, így a játékok népszerűsége is nyomon követhető.

Hogy készült az adatbázis?

Részletes keresési lehetőségek megtalálhatók az oldalon, de egy széleskörű adatbázis elkészítéséhez ez kevés. Így egy Python alapú web scraper programot írtam, amely szisztematikusan begyűjtötte az általam fontosnak vélt adatokat. Ez két lépcsőben történt:

  1. Először a játékok rangsorát tartalmazó oldalakon végigmenve begyűjtöttem minden játék azonosítóját. Ezekkel az azonosítókkal lehet hozzáférni a játékok részletes adataihoz az al-oldalukon.
  2. Ezután már a BGG API-jától kértem további adatokat a játékok egyedi azonosítóját használva. Az API által megküldött adathalmazból Regular expression pattern matching módszerrel bányásztam ki a szükséges adatokat. Ez messze nem a leghatékonyabb módszer, de így legalább sikerült elmélyíteni a kapcsolatomat a RE könyvtárral!

Az oldal felhasználói szabályait betartottam. Az adminok kérésének megfelelően nem küldtem a szervereiknek több oldalletöltési kérelmet, mint amennyit egy hús-vér ember kattintgatva képes lenne. Ez azt jelentette, hogy a programom kb. 3 másodpercenként kért adatot, amely összhangban van a korábbi hasonló programok által kialakított konszenzussal. Fontos szempont volt, hogy a második lépcsőben egyszerre 25 játék adatait tudtam lekérni egy oldalletöltési kérelemben, így gyorsítva meg a program futását. A két lépcső együtt körülbelül 10 órán keresztül építette fel az adatbázist.

Hány elemet tartalmaz az adatbázis?

A teljes minta 113.973 elemet tartalmaz, amelyből 92.519 tekinthető önálló játéknak, míg 21.454 kiegészítőnek.

Mennyire naprakészek az adatok?

Az adatbázis a BGG 2020. február 4-i állapotát tükrözi. Ami addig felkerült az oldalra, az az én adatbázisomban is benne van.

Milyen adatok érhetők el?

A következő változók szerepelnek az adatbázisban:

  • hányadik helyen áll a játék a BGG ranglistáján
  • kiadás éve
  • „Geek rating”: a BGG rangsor számításához használt, mesterségesen korrigált értékelés (értéke 1 és 10 közé eshet)
  • „Average rating”: a felhasználók szavazatai alapján számított értékelések átlaga (értéke 1 és 10 közé eshet)
  • hány értékelő szavazat érkezett az adott játékra
  • önálló játék vagy kiegészítő
  • minimum és maximum játékosszám
  • játékidő
  • milyen kortól ajánlják a játékot
  • hány felhasználónak van meg az adott játék („owned”)
  • átlagos nehézség-komplexitás („weight”), értéke 1 és 5 közé eshet
  • hány értékelő szavazat érkezett a nehézségre
  • a játék típusa, kategóriái, mechanikái és családja

Ezekkel dolgozom majd, és próbálom a legtöbbet kihozni belőlük.

Milyen technológiát használok?

Az adatgyűjtéshez, elemzéshez és vizualizációhoz a Python programnyelvet használom. Leghasznosabb könyvtárak: Pandas, Numpy, Regular expressions, Matplotlib, Seaborn.

Meddig szeretnék eljutni?

Addig, hogy a sok-sok számolgatás után ráereszthessek egy machine learning modellt az adatokra, ami a végén kidobja, hogy milyen társasjáték lesz a következő világsiker. Mondjuk egy jó zombis-madaras-gazdálkodós-munkáslehelyezős-minis-engine building szösszenet, 2.93-as nehézséggel!

Milyen gyakran lesznek új posztok?

Igyekszem 1-2 hetente új posztot felrakni. Sok kutatási kérdés megfogalmazódott már bennem, néhány példa:

  • A komplexitás és az értékelések közti összefüggés: jobban szeretjük a bonyolultabb játékokat?
  • A kickstarter játékok hogyan teljesítenek az értékelések és a komplexitás szempontjából?
  • Hogyan változott az időben egyes mechanikák (pl. dice rolling, worker placement, hand management) előfordulása? Mi a trend ezen a téren?
  • Milyen játékaink vannak? Az „owned” statisztikák elemzése.
  • A kiegészítők felemelkedése: hogyan nőtt meg ennyire a számuk és milyen átlagos értékelést kapnak?

Elkérhetem az adatbázist?

Igen, innen tudod letölteni. Cserébe az lenne kérésem, hogy ha letöltöd, segítsd a blog népszerűsítését egy megosztással.

Más is csinált már ilyet?

Igen, nem is kevesen! Ha szereted a spoilereket és nem ijedsz meg az angol nyelvtől, nyugodtan nézz bele a lenti remek elemzésekbe:

Szólj hozzá!

A bejegyzés trackback címe:

https://jatekazadatokkal.blog.hu/api/trackback/id/tr6115483718

Kommentek:

A hozzászólások a vonatkozó jogszabályok  értelmében felhasználói tartalomnak minősülnek, értük a szolgáltatás technikai  üzemeltetője semmilyen felelősséget nem vállal, azokat nem ellenőrzi. Kifogás esetén forduljon a blog szerkesztőjéhez. Részletek a  Felhasználási feltételekben és az adatvédelmi tájékoztatóban.

Nincsenek hozzászólások.
süti beállítások módosítása