Cvika z Dotazování s preferencemi, LS 2015

Ladislav Peška, S309, peska@ksi.mff.cuni.cz

Cvičení 18.5.

Poslední cvičení: výsledky soutěže, prezentace jednotlivých řešení, zápočty.
Slidy ke cvičení

Cvičení 27.4.

Čeká nás poslední várka algoritmů (rozhodovací stromy, meta algoritmy) a nakonec něco málo o semantizaci webu. Slidy ke cvičení
Na cvičeních 4.5. a 11.5. si poslechneme vaše referáty, 18.5. pak proběhne vyhodnocení soutěže, zápočty a dopočítání bonifikací ke zkoušce.

Cvičení 20.4.

Na cvičení mrkneme na nějaké další doporučovací algoritmy. Stihneme doufejme učení modelu desetiboje a faktorizace matic. Slidy ke cvičení

Cvičení 13.4.

Na cvičení jsme dopracovali seznam referátů - viz. následující tabulka:
Jméno, Název článku, Odkaz, Termín prezentace
Emanuel Buzek Restricted Boltzmann Machines for Collaborative Filtering ICML 2007 4.5. 2015
Javkhlan Naranbaatar Each to his own: How Different Users Call for Different Interaction Methods in Recommender Systems RecSys 2011 4.5. 2015
Jan Vinárek Evaluating Recommender Behavior For New Users RecSys 201411.5. 2015
David VondrákQuestion Recommendation with Constraints for Massive Open Online CoursesRecSys 2014?

Cvičení 30.3.

Na cvičení 30.3. se podíváme na 2 základní doporučovací algoritmy, zkusíme si je rozebrat trochu více do hloubky a podívat se na varianty jak je vylepšovat/upravovat.
Nejprve se mrkneme na K Nearest Neighbors (KNN) ve variantě hledání podobných uživatelů (collaborative-filtering) i ve variantě content-based podobnosti objektů.
Dále (snad zbyde čas) se mrkneme na Vector Space model (VSM), což je stále ještě jeden z nejpoužívanějších Content-based algoritmů.

Pro rozšiřující studium vřele doporučuji přednášku dr. Vomlelové o strojovém učení.
Slidy ke cvičení

Cvičení 23.3.

Na cvičení 23.3. jednak vyhodnotíme splnění DU1 a případně dořešíme problémy, které mohly vzniknout
Dál se zaměříme především na analýzu dat k soutěži - viz. MySQL tabulky a Excelovský dokument.

Cvičení 23.2.

- slidy ke cvičení

Zadání referátu z vědeckého článku

- vyberte si článek z některého ročníku konference RecSys (http://recsys.acm.org/), UMAP (http://www.um.org/umap2014/), případně po dohodě jiné obdobně zaměřené konference. Konference RecSys je zaměřená více prakticky - konkrétní algoritmy, studie použití, nové problémy z oblasti doporučovacích systémů. Konference UMAP je o něco víc teoretičtější, zeměřuje se spíš na uživatelské preference obecně a jejich různé možnosti použití. Z vybraného článku zpracujte referát na 20-30 minut, který odprezentujete na cvičení v druhé polovině semestru.

Výběr článku mi dejte vědět nejpozději na cvičení 30.3., s prezentacemi počítám ideálně na cvičeních v dubnu nebo květnu, po domluvě lze i jiný termín.

Zadání zápočtové soutěže

  • Uživatelské preference (UP) a doporučování - zápočtová soutěž
    Jedna z ne příliš známých aplikací metod strojového učení jsou doporučovací systémy. Doporučovací systém má za cíl(obvykle na nějaké webové stránce) fungovat jako doplněk ke klasickému vyhledávání či katalogové struktuře a na základě zjištěných preferencí uživatele mu doporučit objekt(y), které by pro něj byly vhodné, ale které by zároveň jen složitě hledal, nebo o jejich možné existenci ani neví.
    V rámci Vaší zápočtové práce si zkusíte takový doporučovací systém sami naprogramovat. Samozřejmě původní use-case dost zásadně zjednodušíme. Zaměříme se pouze na tzv. off-line experimenty, kde použijeme dříve získaná data o chování uživatelů, z první části se pokusíme naučit preference jednotlivých uživatelů (trénovací sada) a druhou část použijeme k ověření našeho modelu UP (testovací sada).
    Budeme chtít znát pouze předpokládané hodnocení uživatele k předem zadaným objektům (testovací sada) a porovnáme je s jejich skutečným hodnocením.
    Vašim cílem tedy bude napsat program, který na vstupu zpracovává hodnocení objektů uživateli a atributy objektů a následně pro libovolný pár uživatel-objekt spočítá předpokládané hodnocení tohoto objektu zadaným uživatelem.

    Jako datová sada byly zvoleny tweety uživatelů, kteří mají propojený svůj IMDB účet s twitterem. Ten pak automaticky vytváří tweety cca ve tvaru: "Viděl jsem film [název_filmu] a ohodnotil ho na [0-10]/10."
    K dispozici budete mít data o objektech (filmech) z IMDB api (omdbapi.com) a data o tweetu a jeho odesilateli z twitter API.

    Zvolená platforma / programovací jazyk není podstatný (použijte váš oblíbený). Hodnocení bude prováděno pouze na základě dodaných predikcí (ale zdrojáky samozřejmě ve finále odevzdáváte taky - jen pro kontrolu).

  • Vstupní a výstupní data
    Váš program bude zpracovávat následující soubory: Výstupem Vašeho programu pak bude soubor solution.csv, který má stejný formát jako trainNDBI021.csv, ale obsahuje páry uživatel-objekt z testNDBI021.csv doplněné o Vaše předpokládané hodnocení.

  • Jak se bude hodnotit?
    Potom co váš program vytvoří soubor solution.csv je třeba jej uploadovat přes formulář na adrese http://www.ksi.mff.cuni.cz/~peska/challenge_evaluator_formNDBI021.php

    Úspěšnost Vašeho řešení se bude počítat na základě metriky RMSE, která zjednodušeně řečeno udává průměrnou odchylku mezi Vaším předpokládaným a skutečným hodnocením (čím menší, tím lepší).
    V nejbližší době zveřejníme výsledky několika jednoduchých modelů UP (náhodné, user average, UP na základě baseline predictors). Vaším prvním cílem, je dosáhnout lepších výsledků, než tyto modely.
    Dále bude na adrese http://www.ksi.mff.cuni.cz/~peska/challenge_hiscoreNDBI021.php zveřejněna tabulka nejlepších dosažených výsledků.

    Proběhnou celkem 2 kola vyhodnocování průběžných výsledků, kde bonifikaci ke zkoušce získá vždy student s nejlepším výsledkem a závěrečné vyhodnocení, kde získáte bonifikaci ke zkoušce na základě procenutálního zlepšení výsledků oproti baseline algoritmům.
    Baseline algoritmy jsou: Random, User average, Item average, Baseline predictors (viz. níže), počítat se bude zlepšení oproti nejlepšímu baseline. Úkol se považuje za splněný (máte nárok na zápočet), pokud vaše řešení překoná všechny baseliny.
    Deadliny pro odevzdání řešení jsou:
  • Jak na to? probereme detailněji na dalších cvičeních. Řada z vás má zapsaný předmět Strojové učení, kde můžete získat dobrou inspiraci (doporučovací systémy jsou v zásadě specifickým příkladem strojového učení).
    Existuje řada algoritmů pro zjišťování uživatelských preference a doporučování, níže uvedený seznam není kompletní, ale představuje rozumný průřez.
    - Globální algoritmy (které neberou v úvahu uživatele), např. průměrné hodnocení daného objektu.
    - Baseline prediktory (hodnocení = global_average + item_average + user_average)
    - Collaborative filtering založené na podobnosti uživatelů skrze podobné hodnocení(k-nearest neighbors)
    - Různé varianty algoritmů založené na Faktorizaci matic - Různé varianty content-based algoritmů založených na podobnosti objektů skrze atributy (Vector space model, Attributes based similarity, ...)
    - Model desetiboje
    - Kombinace a metamodely z výše uvedených algoritmů
    - Metody pro strojové učení (rozhodovací stromy, neuronové sítě,...)
    V žádném případě nezakazuju použití již existujících řešení/algoritmů - např. Weka, RapidMiner, MyMediaLite aj. ale nechci řešit situaci, kdy 2 lidé odevzdají zcela stejné výsledky.
    Navíc vzhledem k tomu, že se jedná o veřejně dostupná data, teoreticky by nebyl problém zjistit si správné výsledky z testovací sady. Nedělejte to:) Baseliny nejsou nijak závratné, takže k získání zápočtu se moc nenadřete a stejně budu chtít vidět vaše zdrojáky.

  • Program a deadliny
    Kostra jednoduchého dummy doporučovače v PHP
    Pěkný úvod do problematiky doporučovacích systémů