Mesterséges Intelligencia II. kötelező feladat (3. forduló) - Ajánló rendszer 2.

Hasonló dokumentumok
Mesterséges Intelligencia I. kötelező program

JUnit. JUnit használata. IDE támogatás. Parancssori használat. Teszt készítése. Teszt készítése

Programozási alapismeretek beadandó feladat: ProgAlap beadandó feladatok téma 99. feladat 1

Algoritmizálás és adatmodellezés tanítása beadandó feladat: Algtan1 tanári beadandó /99 1

INFORMATIKAI ALAPISMERETEK

Algoritmizálás és adatmodellezés tanítása beadandó feladat: Algtan1 tanári beadandó /99 1

és az instanceof operátor

INFORMATIKAI ALAPISMERETEK

INFORMATIKAI ALAPISMERETEK

Java VIII. Az interfacei. és az instanceof operátor. Az interfészről általában. Interfészek JAVA-ban. Krizsán Zoltán

Java programozási nyelv 5. rész Osztályok III.

SZOFTVERES SZEMLÉLTETÉS A MESTERSÉGES INTELLIGENCIA OKTATÁSÁBAN _ Jeszenszky Péter Debreceni Egyetem, Informatikai Kar jeszenszky.peter@inf.unideb.

Programozás alapjai gyakorlat. 2. gyakorlat C alapok

Gyakorlati vizsgatevékenység A

Gépi tanulás a gyakorlatban. Kiértékelés és Klaszterezés

Szkeleton beadása. 100 Generalis faliora. Csapattagok: Konzulens: Szabó András március 29.

Bevezetés a programozásba Előadás: Objektumszintű és osztályszintű elemek, hibakezelés

3. Osztályok II. Programozás II

OOP. #6 (VMT és DMT) v :33:00. Eszterházy Károly Főiskola Információtechnológia tsz. Hernyák Zoltán adj.

Tájékoztató a szakdolgozat elektronikus feltöltéséről

Az XCZ állományban szereplő állományok nevének UTF-8 kódolásúnak kell lennie. Probléma esetén használjon ékezet nélküli állományneveket.

OBJEKTUM ORIENTÁLT PROGRAMOZÁS JAVA NYELVEN. vizsgatételek

E x μ x μ K I. és 1. osztály. pontokként), valamint a bayesi döntést megvalósító szeparáló görbét (kék egyenes)

A feladatok megoldásához felhasználandó annotációk leírásait az alábbi URL-en találja meg:

Programozás I. 1. gyakorlat. Szegedi Tudományegyetem Természettudományi és Informatikai Kar

Az importálás folyamata Felhasználói dokumentáció verzió 2.1.

Programozási nyelvek Java

OOP: Java 8.Gy: Abstract osztályok, interfészek

Programozási nyelvek Java

Már megismert fogalmak áttekintése

Interfészek. PPT 2007/2008 tavasz.

ÉVFOLYAM ZH PRÓBA. Feladat (projekt- és exe-név: miki; tömörített fájl neve: EHA-kód)

Technikai információk fejlesztőknek

Gépi tanulás a gyakorlatban. Bevezetés

INFORMATIKAI ALAPISMERETEK

Bevezető. Servlet alapgondolatok

Programozási nyelvek II. JAVA

Regionális forduló november 19.

Szerző Lővei Péter LOPSAAI.ELTE IP-08PAEG/25 Daiki Tennó

Abstract osztályok és interface-ek. 7-dik gyakorlat

Webes alkalmazások fejlesztése

OOP #14 (referencia-elv)

Objektum Orientált Programozás. 11. Kivételkezelés 44/1B IT MAN

Oktatási Hivatal. A 2014/2015 tanévi Országos Középiskolai Tanulmányi Verseny döntő fordulójának feladatai. II. (programozás) kategória

kodolosuli.hu: Interaktív, programozást tanító portál BALLA TAMÁS, DR. KIRÁLY SÁNDOR NETWORKSHOP 2017, SZEGED

Java I. A Java programozási nyelv

OpenCL alapú eszközök verifikációja és validációja a gyakorlatban

C++ programozási nyelv

Az osztályok csomagokba vannak rendezve, minden csomag tetszőleges. Könyvtárhierarhiát fed: Pl.: java/util/scanner.java

Mély neuronhálók alkalmazása és optimalizálása

Java programozási nyelv 6. rész Java a gyakorlatban

1. gyakorlat. Mesterséges Intelligencia 2.

PÁLYÁZATI FELHÍVÁS. nappali tagozatos hallgatói, oktatói és kutatói részére. A PÁLYÁZAT KATEGÓRIÁI

Segédanyag: Java alkalmazások gyakorlat

INFORMATIKAI ALAPISMERETEK

Szoftvertechnolo gia gyakorlat

MINISZTERELNÖKI HIVATAL. Szóbeli vizsgatevékenység

Operációs rendszerek. 9. gyakorlat. Reguláris kifejezések - alapok, BASH UNIVERSITAS SCIENTIARUM SZEGEDIENSIS UNIVERSITY OF SZEGED

Informatika A versenyzők a feladatlapot mindkét kategóriában a II. kategória első fordulójának kivételével csak elektronikus formában kapják meg

Concurrency in Swing

Bánsághi Anna 2014 Bánsághi Anna 1 of 31

Gépi tanulás a Rapidminer programmal. Stubendek Attila

Programozás alapjai Bevezetés

Adóhátralék kezelés egyszerűen. Telepítési útmutató. A program futtatásához Windows XP, Windows 7, 8 operációs rendszer szükséges.

Regionális forduló november 19.

Informatika Informatika

Tájékoztató. Használható segédeszköz: -

Áramlástan Tanszék Méréselőkészítő óra II.

A Matarka szerszámosládája

(Teszt)automatizálás. Bevezető

ELTE SAP Excellence Center Oktatóanyag 1

Programozási technológia

OOP: Java 8.Gy: Gyakorlás

Programozási nyelvek Java

Bevezetés a Python programozási nyelvbe

Teljesítmény Mérés. Tóth Zsolt. Miskolci Egyetem. Tóth Zsolt (Miskolci Egyetem) Teljesítmény Mérés / 20

Szakdolgozat feltöltési útmutató

A PiFast program használata. Nagy Lajos

Generikus osztályok, gyűjtemények és algoritmusok

V & V Feladatok. V & V Feladatok

A 2014/2015 tanévi Országos Középiskolai Tanulmányi Verseny döntő forduló javítási-értékelési útmutató. INFORMATIKA II. (programozás) kategória

7. Laboratóriumi gyakorlat: Vezérlési szerkezetek II.

Java Programozás 1. Gy: Java alapok. Ismétlés ++

Név: Neptun kód: Pontszám:

Útmutató a évi szabadidősportos pályázatok elektronikus beadásához

Útmutató a szakdolgozatok benyújtásához

Programozási alapismeretek 1. előadás

BitTorrent felhasználók értékeléseinek következtetése a viselkedésük alapján. Hegedűs István

Szerző. Varga Péter ETR azonosító: VAPQAAI.ELTE cím: Név: Kurzuskód:

Segédanyag: Java alkalmazások gyakorlat

Magyar Nemzeti Bank FELHASZNÁLÓI SEGÉDLET

Karbantartás. Az ESZR Karbantartás menüjébentudjuk elvégezni az alábbiakat:

2. Készítsen awk szkriptet, amely kiírja az aktuális könyvtár összes alkönyvtárának nevét, amely februári keltezésű (bármely év).

HVK Adminisztrátori használati útmutató

1. Bevezetés szeptember 9. BME Fizika Intézet. Szám. szim. labor ea. Tőke Csaba. Tudnivalók. feladat. Tematika. Moodle Házi feladatok

A TERC VIP költségvetés-készítő program telepítése, Interneten keresztül, manuálisan

A legalacsonyabb szintű tesztelés. A programot felépítő egységek tesztelése Unit: egy rendszer legkisebb önálló egységként tesztlehető része.

Unit Teszt. Tóth Zsolt. Miskolci Egyetem. Tóth Zsolt (Miskolci Egyetem) Unit Teszt / 22


Java-ról Kotlinra. Ekler Péter AutSoft BME AUT. AutSoft

Átírás:

Mesterséges Intelligencia II. kötelező feladat (3. forduló) - Ajánló rendszer 2. 1. Feladat kiírása A második forduló feladata hasonlóan az előző fordulóhoz egy ajánló rendszer modelljének elkészítése. Azaz egy programot kell készíteni és betanítani, amely az f : User Item Rate leképezés minél jobb közelítésére képes egy előre ismeretlen kiértékelési halmazon. A modell file elkészítéséhez felhasználhatóak a Weka programcsomag által nyújtott algoritmusok. 2. Rendelkezésre álló erőforrások A http://www.inf.u-szeged.hu/~ormandi/teaching/mi2/ oldalon elérhető egy tömörített állomány, amely a rendelkezésre álló segédanyagokat tartalmazza. Az állomány tartalmaz egy tanító adatbázist, valamint egy a feladat megvalósítását segítő API (és annak forráskódja). A jelenlegi forduló új keretrendszer változatot használ, így nyomatékosan kérek mindenkit, hogy ismételten töltse le azt! Tekintsük át részletesebben, hogy miből áll a tanuló adatbázis és az API. 2.1. A tanító adatbázis A tanító adatbázis a kitömörített segédanyag bin könyvtárában érhető el. Az adatbázist 3 darab file tartalmazza: u1.base: Ez az állomány tartamazza a tényleges preferencia mátrixot. Minden sor egy mátrix elemet ír le, az alábbi formában: UserId[TAB]ItemId[TAB]Rating[TAB]Timestamp u.user: Ez az állomány tartamazza az egyes user profilokat, azaz a egyes felhasználókról szóló többlet információt. Ennek a file-nak szintén minden egyes sora egy-egy felhasználót ír le. A file formátuma a 1

következő: UserId[TAB]Age[TAB]Gender[TAB]Occupation[TAB]ZipCode u.item: Ez az állomány hasonlóan az előzőhöz az egyes item profilokat, azaz az egyes mozifilmekhez tartozó kiegészítő információkat tartalmazza. Szintén minden egyes sor egy-egy mozifilmet ír le az alábbi formátum szerint: MovieId[TAB]movieTitle[TAB]ReleaseDate[TAB]VideoReleaseDate[TAB] IMDbURL[TAB]IsUnknown[TAB]IsAction[TAB]IsAdventure[TAB] IsAnimation[TAB]IsChildrens[TAB]IsComedy[TAB]IsCrime[TAB] IsDocumentary[TAB]IsDrama[TAB]IsFantasy[TAB]IsFilmNoir[TAB] IsHorror[TAB]IsMusical[TAB]IsMystery[TAB]IsRomance[TAB] IsSciFi[TAB]IsThriller[TAB]IsWar[TAB]IsWestern Az előzőekben leírt információk állnak rendelkezésre ahhoz, hogy ajánló rendszert készítsünk. A feladat tehát az, hogy dolgozzuk fel a fenti adatbázist és tetszőleges értékelést (amely a tanító adatbázisban nem szerepel), a lehető legnagyobb pontossággal jelezzen előre a rendszer. A következőkben tárgyalásra kerülő keretrendszer és API abban segít, hogy a fent leírt adatbázist könnyedén lehessen kezelni, illetve azt biztosítja, hogy a megoldások egységes formában készüljenek el. A következő fejezetben áttekintjük a keretrendszer felépítését és funkcióit. 2.2. A keretrendszer és API A keretrendszer lefordított változata a kitömörített állomány bin könyvtárában található, recommender.jar néven. A keretrendszer futtatható és a futása során két, jól elkülöníthető funkciót valósít meg: az egyik a tanítás, a másik a kiértékelés. A tanítás során a keretrendszer egy előre (paraméterként) megadott osztály egy példányát készíti el, amely képes megvalósítani a tanulást. A tanítás során a Weka csomag algoritmusai felhasználhatóak. A tanulás után előálló objektum példányt a rendszer serializálja! A kiértékelési fázisban a tanulási fázisban előállított objektum kerül beolvasásra és az így beolvasott objektum kerül kiértékelésre, azaz ez adja a 2

predikciókat. A teljes teszthalmaz kiértékelésére ebben a fordulóban 2 percnyi CPU idő áll a programok rendelkezésére! Abban az esetben, ha ez a tesztelési időkorlát letelik, a kiértékelés hibája Double.MAX_VALUE lesz! A két funkció szeparációjának az az oka, hogy a bíró rendszerben nem szeretnénk elvégezni a tanítást, így a megoldás forráskódja mellé egy betanított, serializált objektum példányt is csatolni kell 1. Az ajánlási feladat megoldását a keretrendszer recommendersystem.recommendersystem nevű absztrakt osztályának kiterejesztéseként kell elkészíteni. Ennek az absztrakt osztálynak két megvalósítandó metódusa van: void build(useritemmatrix trainmatrix): Ezt a metódust hívja meg a keretrendszer a tanítási fázisban. A metódusnak egyetlen paramétere van, amely lényegében a teljes beolvasott tanító adatbázis keretrendszerbeli reprezentációja. Ennek a bemenetnek a felhasználásával kell elkészíteni azt a modellt, ami a tesztelés folymán predikciókat ad az ajánláshoz. int getrate(int useridx, int itemidx): Ez a metódus ad közelítést a paraméterben kapott index-szel rendelkező felhasználó és mozifilm értékelésére. Ez egy 1 és 5 közötti egész szám! 2.3. Követelmények a megoldással szemben A megoldást tartalmazó forráskódnak minden körülmények között ki kell elégítenie a következő követelményeket: A megoldást tartalmazó osztálynak ki kell terjesztenie a recommendersystem.recommendersystem osztályt. A megoldást tartalmazó osztálynak részletes magyar osztálydokumentációt kell tartalmaznia, javadoc formátumban, illetve a kód dokumentációja is magyar kell hogy legyen. A kód nem használhat a keretrendszeren kívül semmilyen más osztálykönyvtárat, kivéve a mellékelt Weka programcsomagot. 1 Ennek technikai részleteiről a későbbi fejezetben olvashatunk. 3

A megoldást tartalmazó osztály nevének meg kell egyeznia a hallgató h-s azonosítójával (kis h betűvel). A megoldást tartalmazó osztály nem lehet csomagban. A megoldásban nem lehet képernyőre írás. A megoldás nem nyithat meg file-t, nem indíthat új szálat. Az implementált metódusoknak minden esetben vissza kell térniük. (Nem szerepelhet benn exit hívás például.) A megoldás nem lehet triviális 2! A tanítás során csak és kizárólag a közreadott tanító halmaz használható. Minden a tanítóhalmaz bővítésére irányuló kísérlet csalásnak minősül! Azonban a mellékelt tanító adatbázisból bármilyen információ kinyerhető! 3. Otthoni fejlesztés menete A könnyebb érthetőség kedvéért tekintsünk egy példa fejlesztés-kiértékelés ciklusra: 1. Töltsük le és tanulmányozzuk a közreadott keretrendszert, valamint a benne elérhető recommendersystem.model.randommodel példa megoldást. 2. Találjuk ki és implementáljuk a megoldásunkat Java programozási nyelven. Például: import recommendersystem.recommendersystem; import recommendersystem.useritemmatrix; public class h241696 extends RecommenderSystem { 2 Az, hogy mi számít triviális megoldásnak szubjektív megítélés alá esik, de például biztosan triviálisnak mondható a konstans ajánlás, a véletlen ajánlás vagy ezek egyszerű kombinációja. 4

public h241696() { //... public void build(useritemmatrix trainmatrix) { //... public int getrate(int useridx, int itemidx) { //... return 3; 3. Fordítsuk le azt. A fordítás során a class-path-ban szerepelnie kell a keretrendszernek. Például: javac -classpath "recommender.jar;weka.jar" h241696.java 4. Tanítsuk be a modell-t. Például (egy sorban): java -classpath "recommender.jar;weka.jar;." recommendersystem.engine -train h241696 h241696.model u1.base u.user u.item Ez a hívás előállítja a h241696.model állományt, amely tartalmazza a betanított objektumot! 5. Értékeljük ki a modellt. Például (egy sorban): java -classpath "recommender.jar;weka.jar;." recommendersystem.engine -test 120 h241696.model u1.base u.user u.item Érdemes több tesztet végezni! 5

6. Ha megfelelőnek ítéljük a stratégiánkat, akkor töltsük fel a Bíró rendszerbe, különben iteráljunk a forráskód változtatásától. A keretrendszer kiterjesztett RMSE hibafüggvényt használ a teszt hibájának mérésére. A kiterjesztés lényege, hogy: amennyiben a predikció kivül esik az értékelési tartományon, akkor a predikált és az elvárt érték különbsége 10 lesz, amennyiben a teljes tesztelés nem fejeződik be a rendelkezésre álló 2 perc alatt, akkor az RMSE érték Double.MAX_VALUE érték lesz! 4. Feltöltés és kiértékelés Miután befejeztük a fejlesztés egy szakaszát, a megoldást fel kell tölteni a bíró rendszerbe. Egészen pontosan két állomány feltöltését kell elvégeznünk: a megoldást tartalmazó forrás állományt (előző példában h241696.java), a betanított objektumot tartalmaztó modell állományt. (előző példában a tanítás kimeneteként előálló h241696.model). Ezt a két állományt egy feladat.zip nevű állománnyá kell összetömöríteni 3. Az így előállított tömörített állományt kell feltölteni. A feltöltött állományt a bíró rendszer kitömöríti, a forrás állományt lefordítja 4, majd meghívja a keretrendszer kiértékelő módban egy a fejlesztés során ismeretlen preferenciamátrix átadásával. A bíró rendszer 1 pontot ad, ha a feltöltés sikeres volt (nem lépett fel hiba a feltöltés, fordítás, kiérétkelés során), 0 pontot egyébként. Az 1 pontos feltöltések esetén a keretrendszer által mért hiba alapján kerülnek rangsorolásra a hallgatók. A rangsor elérhető a http://www.inf.u-szeged.hu/ ~ormandi/teaching/mi2/ oldalon keresztül. A végleges pontszámok megállapítása ezen rangsor alapján történik. 3 Ez az állomány nem tartalmazhat könyvtárat és csak ez a két állomány lehet benne! 4 Ez nem lenne feltétlen szükséges a kiértékeléshez, csak annak ellenőrzésére szolgál, hogy a feltöltött forrás fordítható-e. 6

Fontos megjegyezni, hogy a rangsorba történő bekerülés nem jelent automatikusan elfogadott fordulót! A forduló végén összesített újratanítás és tesztelés, valamint kódellenőrzés lesz. 5. Határidők A jelenlegi forduló beadásának határideje 2009. május. 4. 11:59. 6. Összefoglalás Az alábbi táblázat összefoglalva tartamazza a feladatra vonatkozó főbb adatokat. Probálkozások száma 10 Kapható maximális pontszám 15 Feladat beküldése 2009. május. 4. 11:59 Sikeres feltöltés pontszáma: 1 Sikertelen feltöltés pontszáma: 0 Feltöltendő file neve feladat.zip Tesztelési időkorlát 2 min Triviális megoldás engedélyezett nem Használható API-k Weka Hasznos és jó munkát kívánunk! 7