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.