Zgłębianie danych

Transkrypt

Zgłębianie danych
Zgłębianie danych
Projekt
Wymagania
Niezależnie jaki temat zostanie wybrany, projekt należy dobrze udokumentować. Na projekt składa
się:
• Sprawozdanie w formie pliku pdf / doc / odt. W sprawozdaniu należy w czytelny i jasny
sposób wykazać co się wykonało (tak, by kroki z projektu dało się w łatwy sposób
odtworzyć). W szczególności można uwzględnić nastepujące rozdziały:
◦ Wstęp. O czym jest projekt? Jakie ma potencjalne zastosowania?
◦ Narzędzia. Jakie narzędzie do pracy wybrałem, skąd je można ściągnąć? Jakie
wtyczki/paczki do narzędzia należy doinstalować i jak to zrobić?
◦ Dane. Na jakich danych pracuję? Skąd wziąłem bazę danych i jak ją dostosowałem do
własnych potrzeb. Należy podać link lub dołączyć bazę do sprawozdania projektu.
◦ Teoria. W przypadku zagadnienia teoretycznego: podanie teorii, wzorów stojącej za
daną techniką lub algorytmem. Obliczenia na małym przykładzie przedstawione w
sprawozdaniu.
◦ Opis eksperymentów. Jak przeprowadzałem eksperymenty, krok po kroku. W
sprawozdaniu należy zawrzeć wszystkie komendy lub zrzuty z ekranu. Sprawozdanie
ma służyć jako „samouczek” dla innych osób je czytających.
◦ Wyniki. Prezentacja wyników w formie tekstowej lub w formie wykresu. Analiza
wyników: np. obliczanie średniej, błędu, odchylenia standardowego.
◦ Interpretacja wyników: czy takich należało się spodziewać? Czy pewne wyniki były
zaskakujące? Co oznaczają?
• Dane w formie pliku csv / arff / inny. Nalezy je dołączyć do sprawozdania.
• Inne pliki np. Wykresy, pliki graficzne, paczki, programy napisane przez studenta.
Wybór i ocenianie
Należy wybrać jeden temat i zgłosić to prowadzącemu zajęcia (np. na email). Projekty nie powinny
się dublować, więc kto pierwszy zarezerwuje sobie dany temat, ten ma na niego wyłączność.
Oczywiście inna osoba również może wykonać dany projekt pod warunkiem, że wybierze inne dane
lub narzedzia (prosze doprecyzować w emailu). W razie zmiany zdania, należy ponownie zgłosić
chęć zamiany tematu projektu. Temat projektu, można wybrać z poniżej listy lub wymyślić
samemu, zgłaszając prowadzącemu zajecia.
Ocena będzie brała pod uwagę takie czynniki jak: dokładność, wyczerpujący opis, zgodność
z podpunktami w wymaganiach, ilość wkładu własnego (eksperymenty, przykłady), stopień
skomplikowania, sposób prezentacji. Punkty za projekt stanowią 1/3 oceny z laboratoriów.
Spakowany projekt nalezy wysłać prowadzącemu zajęcia na maila lub umieścić online i wysłać link
do projektu. Dodatkowo z projektu należy rozliczyć się na ostatnich zajęciach lub
przedegzaminowych konsultacjach (pewnie będą w dniu egzaminu lub tuż przed) przeprowadzając
krótką prezentację i odpowiadając na parę pytań.
Lista tematów
1. Kompresja twarzy
Wykorzystaj Principal Compnent Analysis oraz Latent Semantic Analysis do kompresji
bitmap zawierających obrazy np. różnych twarzy. Porównaj obie techniki i ich rezultaty
(skompresowane twarze). Przebadaj techniki dla różnych stopni kompresji (wybór
szerokości macierzy k) i oblicz stopień utraty informacji przy każdym z nich.
2. Sondażowe opinion-mining
Stwórz bazę danych tweetów z Twittera, które dotyczą tematyki budzącej różne emocje u
różnych ludzi. Przykładem mogą być aktualne wybory prezydenckie. Ściągnij po kilkaset
tweetów dotyczących głównych kandydatów wyszukując odpowiednich hasztagów.
Następnie dla każdego kandydata, zbadaj ile z tych tweetów jest pozytywnych a ile
negatywnych. Klasyfikacja tweetów jako pozytywne (dobre emocje) lub negatywne (złe
emocje) powinna się odbywac na podstawie specjalnie spreparowanej listy słów kluczy,
które uważane są pozytywne i negatywne. Wyniki zobrazuj na wykresach. Do ściągnięcia
tweetów wykorzystaj Twitter-Api. Można także zainstalować paczkę twitteR w pakiecie R.
3. Egzoplanety
Ściągnij katalog odkrytych planet spoza układu słonecznego (np. Tutaj
http://exoplanets.eu/ ). Następnie spróbuj dokonać klasteryzacji danych (być może po
wcześniejszej ich obróbce, zwłaszcza, że wiele danych jest pustych). Czy da się wyodrębnić
klastry planet będących gazowymiu olbrzymami albo skalistych podobnych do Ziemii? Czy
da się znaleźć planety zdatne do życia?
4. Zgłębianie danych w bioinformatyce
Zgłębianie danych przydatne jest olbrzymich bazach danych jaką stanową
zsekwencjonowane genomy ludzkie lub zwierzęce. Napisz referat o tym jak wykorzystuje
się zgłębianie danych w bioinformatyce. Następnie wykorzystaj bazy danych (np.
http://www.inf.ed.ac.uk/teaching/courses/dme/html/datasets0405.html) i narzędzia
znalezione w internecie, by dokonać eksperymentu na takich danych. Przykładowe techniki
i tabelka z narzędziami znajduje się np. w tym artykule:
http://arxiv.org/ftp/arxiv/papers/1205/1205.1125.pdf
Po wyborze techniki, programu należy doprecyzować ten projekt.
5. Zgłębianie danych w medycynie
Podobnie jak w temacie 4, ale referat i eksperymenty muszą dotyczyć bardziej medycznych
rzeczy (diagnozy, badanie zdrowia, choroby, itp). Tutaj również można wykorzystać bazy
danych ze strony: http://www.inf.ed.ac.uk/teaching/courses/dme/html/datasets0405.html lub
inne.
6. Badanie poczucia humoru
Czy dany żart jest dobry czy to marny suchar? Ocenianie żartów jest możliwe np. na stronie:
http://eigentaste.berkeley.edu/ . Zaś pod linkiem http://eigentaste.berkeley.edu/dataset/
znajdują się bazy danych żartów wraz z ich oceną przez użytkowników. Twoim zadaniem
jest zbadanie, które żarty są dobre, a które złe. W projekcie na pewno trzeba przeprowadzić
analizę tekstu i klasyfikację.
Inne wersje projektu mogą czerpać z innych źródeł lub np. za pomocą skryptu (jak choćby
http://www.seleniumhq.org/ ) stworzyć własny dataset pozyskując automatycznie dane ze
stron. Można na przykład pościągać słowaklucz (hasztagi) z demotywatory.pl i oceny
użytkowników i dokonac klasyfikacji obrazków.
7. Ocena produktów
Tak jak w temacie 6 można oceniać nie tylko poczucie humoru, ale też różne produkty:
komputery, filmy, książki, itp. Należy się jedynie zastanowić jak ma wyglądać baza danych
(atrybuty wraz z atrubtem ocena) i jak taką bazę pozyskać. Czasami są dostepne w
internecie, ale można i ją automatycznie pozyskać za pomoca specjalnych API jakie oferują
strony, albo za pomocą narzędzi automatyzujących pozyskiwanie informacji
(http://www.seleniumhq.org/ ). Pozyskane dane należy sklasyfikować (stworzyć "wzór na
dobry produkt"), można je też pogrupować albo wyszukać reguły asocjacyjne.
8. Prawo Zip'fa
Prawo Zipf'a mówi, że jeśli w języku najczęstsze słowo występuje x razy, to słowo na
drugim miejscu pod względem częstotliwości wystepuje x/2 razy, na trzecim x/3 razy, itd.
(http://en.wikipedia.org/wiki/Zipf%27s_law ), ogólnie: jeśli słowo na i-tym miejscu w
rankingu wszystkich słów w tekście wystepuje P razy, to i*P=0,1. Zbadaj czy prawo Zipf'a
działa również dla języka polskiego. Zgromadź dużą bazę tekstów (opowiadania, rozdziały
książek, wpisy do blogów, itp), następnie zlicz słowa i posortuj je malejąco wg częstości
wystepowania. Wyniki zinterpretuj.
9. Aplikacja Anty-trądzik
Czasami wstajemy rano, oglądamy się w lustrze i widzimy na nosie wielkiego pryszcza. Jak
temu zaradzić? Można przeanalizować tok poprzedniego dnia: co zjedliśmy (słodycze,
nabiał, chleb...), ile spaliśmy, jaka była pogoda, czy piliśmy alkohol, paliliśmy papierosy,
uprawialiśmy sport, itp. Dane z dnia zestawiamy w rekordzie tabeli, a w ostatniej kolumnie
opisujemy stan naszej cery następnego dnia rano. Nastepnie zapuszczamy klasyfikatory lub
reguły asocjacyjne, które wychwycą ukryte przed nami zależności. Być może okaże się, że
zła cera jest wynikiem jedzenia marchewki w pochmurne dni? By takie dane wygodnie
zbierać, stwórz aplikację (chętnie na telefon komórkowy), która powzowli użytkownikowi
wprowadzić dane i przekazać mu czy znalazła jakieś ukryte reguły żądzące jego zdrowiem i
zachowaniem. Aplikacja musi działać w oparciu o algorytmy zgłębiające dane –
zaimplementuj je lub skorzystaj z dostepnych bibliotek. Podczas prezentacji projektu
postaraj się, by aplikacja miała trochę danych do analizy.
Inne wersje aplikacji: badanie samopoczucia w skali 1-5, badanie wagi, itp.
10. Polski Stemmer
Przeprowadź klasteryzację polskich tekstów po uprzednim użyciu stemmera polskich
słów np. Morfologik-Stemming http://morfologik.blogspot.com/ lub
http://plwordnet.pwr.wroc.pl/wordnet/ . Opisz jak użyć narzędzia, podaj przykłady jego
poprawnego działania, i dokonaj klasteryzacji. Polskie teksty możesz pozyskać z blogów,
opowiadań, artykułów itp. (klasteryzacja po tematyce).
11. Przewidywanie pogody
Ze strony http://www.ncdc.noaa.gov (może znajdziesz inną?) można pobierać dane o
pogodzie z przestrzeni ostatnich dni, miesięcy i lat. Wśród stacji meteorolgicznych, które
dostarczają danych jest jedna w Łebie: http://www.ncdc.noaa.gov/cdoweb/datasets/GHCND/stations/GHCND:PL000012120/detail . Pobierz dane
meteorologiczne z tej stacji (im więcej tym lepiej) i postaraj się stworzyć
"Zautomatyzowanego Przewidywacza Pogody". Algorytm na podstawie wcześniejszych lat,
będzie mógł odgadnąć jaka pogoda będzie danego dnia w danym miesiącu w tym roku.
Przetestuj różne algorytmy klasyfikujące. Weź pod uwagę, że sporo danych jest pustych i
trzeba z tym sobie dać radę.
12. Speed-dating
a) Speed-dating to rodzaj nawiązywania znajomości, randkowania – polegający na
poznawaniu wielu osób w krótkim czasie (więcej tutaj:
http://pl.wikipedia.org/wiki/Speed_dating ). Czy taka inicjatywa jest lepsza, ciekawsza i
przynosi więcej znajomości? Kto korzysta z tej techniki: młodzi, starsi, kobiety, mężczyźni?
Czy metoda się sprawdziła i znaleziono swoją drugą połówkę? Dokonaj analizy
(klasyfikacja, grupowanie, asocjacje itp) danych ze strony
http://www.stat.columbia.edu/~gelman/arm/examples/speed.dating/ i spróbuj odpowiedzieć
na powyższe pytania.
b) Można alternatywnie przebadać bazę danych osób z pewnego portalu randkowego (to już
nie jest speed-dating), która udostępniana jest po wypełnieniu formularza
http://www.pewinternet.org/datasets/may-2013-online-dating-prelim/
13. Grupowanie metodą k-średnich harmonicznych
Centroidy w algorytmie k-średnich są wyliczane zwykle jako średnie arytmetyczne. Autor
artykułu http://www.siam.org/meetings/sdm01/pdf/sdm01_06.pdf przekonuje, że średnie
harmoniczne mogą być dobrą alternatywą. Zaimplementuj algorytm k-średnich
wykorzystując średnie harmoniczne. Porównaj wyniki z wyliczaniem za pomocą
standardowych średnich artymetycznych. Wybierz odpowiednio duży dataset i powtórz
eksperyment losując różne centroidy w obu przypadkach.
14. Alternatywne narzędzia
Korzystaliśmy głównie z WEKI i R. W sieci dostepnych jest jednak wiele innych narzędzi
do zgłębiania danych, przykładowe zestawienie jest na stronie:
http://www.predictiveanalyticstoday.com/top-15-free-data-mining-software/ . Wybierz jedno
z narzędzi i zrób tutorial jak z niego korzystać. W szczególności: czy da się klasyfikować
dane za pomocą różnych algorytmów? Czy możliwe jest grupowanie danych, szukanie
asocjacji? Czy narzędzie dobre jest do zgłębiania tekstu? Czy ma jakieś specjalistyczne
zastosowania? Konieczne jest zaprezentowanie działania narzędzia na danych. Być może
dobre będzie załączenie print-screenów z eksperymentów.
15. Bukmacherka sportowa
Wielu ludzi lubi obstawiać dużyny (np. piłki nożnej) i czasem uda się na tym zarobić.
Intuicja bywa jednak zawodna, więc dlaczego nie napisać programu, który dostanie historię
zwycieztw i porażek drużyn (w jakimś sporcie), wraz z różnymi danymi, a nastepnie
spróbuje odpowiedzieć na pytanie czy dana druyżyna ma szansę na wygranie, a nawet jaki
może być wynik meczu. Należy zebrać bazę danych, na której będzie można operować.
Fajnym artykułem referencyjnym jest praca magisterka o prognozowaniu wyników w
koszykówce: http://arrow.dit.ie/cgi/viewcontent.cgi?article=1040&context=scschcomdis
16. Kupony
W supermarketach, sklepach zwykłych i internetowych dostajemy często różnego rodzaju
zdrapki, punkty czy kupony. Czy korzystamy z tych kuponów, by potem mieć zniżkę na
produkty? Czy to działa? A może kupilibyśmy produkty nawet bez kuponów? Są to ważne
pytania z marketingowego punktu widzenia. Ze strony http://www.data-miningcup.de/en/dmc-competition/task/ można ściągnąć bazę danych transakcji w pewnym sklepie.
Problem jest szczegółowo opisany, bo jest to zadanie konkursowe. (Na marginesie: może
warto uczestniczyć w jakimś z przyszłych konkursów?)
17. Rozpoznawanie liter i cyfr
Zgromadź bazę danych (stwórz) jednakowej wielkości obrazków przedstawiającymi cyfry
lub litery. Spróbuj dokonać klasyfikacji na tych danych tj. nauczyć algorytm klasyfikujący
rozponawania jaki znak jest na obrazku. Jeśli obrazek jest mapą bitową to każdy piksel
można zakodować jako liczbę (0=czarny, 1=biały, ułamki=odcienie szarości). Wówczas
obrazek np. 64x64 piksele można zakodować jako wektor 4069 liczb. Pomocna może sie
okazać praca: http://www.is.umk.pl/~norbert/publications/07-ocr.pdf
Istnieje mnóstwo innych ciekawych tematów. Jeśli tematy z powyższej listy nie są dla Ciebie
interesujące możesz pogrzebać w internecie i poszukać czegoś innego. Wówczas proszę zgłosić na
maila swój temat i link do ewentualnej strony z dataset lub opisem.
Ciekawą stroną jest https://www.kaggle.com/competitions . Gdzie prowadzone są konkursy ze
zgłębiania danych (niektóre z nagrodą). Projektem mógłby być jeden z tematów tam zawartych.
Zwłaszcza te z kategorii "Knowledge" są przystępne.