Artur Suchwałko - Blog, kategoria analiza danych
Feb
04
Często spotykam się z potrzebą udostępnienia programu analizującego dane czy budującego modele predykcyjne napisanego w języku R użytkownikom, którzy systemu R nie znają. Idealnym rozwiązaniem w takiej sytuacji jest stworzenie graficznego interfejsu użytkownika (GUI) dla skryptu wykonującego tę analizę.
Możliwe jest na przykład połączenie R z dowolnym językiem programowania, w którym później zostanie napisane GUI. Można wykorzystać Tcl/Tk (tak, jak w pakiecie RCommander). Kolejna opcja to stworzenie aplikacji analitycznej działającej na serwerze i dostępnej przez przeglądarkę internetową. Skorzystanie z każdego z tych rozwiązań wymaga jednak sporo czasu. Oprócz kilku innych możliwości istnieje bardzo proste, ale – jak sądzę – niezbyt powszechnie znane, rozwiązanie.
RGG – R GUI Generator jest narzędziem bardzo upraszczającym pisanie w języku R programów wyposażonych w GUI. Tworzenie interfejsu użytkownika polega na utworzeniu odpowiedniego pliku składającego się ze znaczników XML opisujących kontrolki GUI
oraz z kodu analizy napisanego w R. Do działania programu z GUI konieczne jest posiadanie zainstalowanego R, Javy oraz dodatkowego “środowiska uruchomieniowego”. Przykłady można znaleźć na stronie RGG.
Oczywiście, rozwiązanie to ma ograniczenia i czasami jest konieczne wybranie innego narzędzia umożliwiającego komunikację programu napisanego w R z jego użytkownikiem.
Autorem postu jest Artur Suchwałko
Feb
04
Parę tygodni temu dostałem książkę “Super Crunchers: Why Thinking-By-Numbers is the New Way To Be Smart” autorstwa I. Ayresa. Wciągająca lektura, przeczytałem ją błyskawicznie.
Książkę naprawdę przyjemnie się czyta. Pokazuje ona robiące duże wrażenie nietypowe zastosowania prostych modeli predykcyjnych. Wyjątkowo ciekawy jest przykład pozwalający na dosyć dobrą prognozę przyszłej ceny wina na podstawie warunków pogodowych panujących w rejonie i okresie uprawy winorośli, z których to wino było wyprodukowane.
Oto link do strony książki: http://www.randomhouse.com/bantamdell/supercrunchers/ oraz link do strony jej autora: http://islandia.law.yale.edu/ayers/indexhome.htm
Polecam tę książkę wszystkim!
Autorem postu jest Artur Suchwałko
Jan
13
We środę 21. stycznia będę prowadził w ramach inicjatywy OpenAcademy ogólnodostępny wykład “Wprowadzenie do języka GNU R”. Podczas wykładu przedstawię środowisko R, jego unikatowe cechy oraz podstawy korzystania z tego systemu.
Czas i miejsce: środa 21.01.2009, godzina 17:30, sala 0.32 budynku C-13 Politechniki Wrocławskiej.
Zapraszam wszystkich zainteresowanych!
Autorem postu jest Artur Suchwałko
Jan
13
W The New York Times opublikowano 06.01.2009 artykuł o GNU R. Jest naprawdę interesujący. Pokazuje, jak potężne jest to narzędzie i jak bardzo R jest niedoceniany w naszym kraju. Oto cytat z artykułu:
”The great beauty of R is that you can modify it to do all sorts of things,”
said Hal Varian, chief economist at Google.
”And you have a lot of prepackaged stuff that’s already available, so you’re standing on the shoulders of giants.”
Autorem postu jest Artur Suchwałko
Jan
06
Dzisiaj chciałbym polecić wyjątkowe wprowadzenie do systemu R: Quick-R (autor: Rob Kabacoff). Jest naprawdę dobrze przygotowane i zwięzłe.
Autorem postu jest Artur Suchwałko
Jan
06
Pakiet fortunes dla R zawiera cytaty wypowiedzi twórców R oraz jego znanych użytkowników. Jest kilka możliwości użycia tej biblioteki:
> library(fortunes)
> fortune() # losowanie cytatu
> fortune(92)
If you don't go with R now, you will someday.
-- David Kane (on whether to use R or S-PLUS)
R-SIG-Finance (November 2004)
>
Moje ulubione cytaty to (oprócz podanego w przykładzie wyżej): fortune(109), fortune(184).
Autorem postu jest Artur Suchwałko
Dec
10
Jedną z wad systemu R jest trudna praca z dużymi danymi. Dlaczego? Dane, na których pracuje R, powinny mieścić się w pamięci operacyjnej komputera. Istnieje kilka sposobów obejścia tego problemu.
Ciekawym przykładem jest pakiet biglm. Pozwala on na budowę modeli regresji liniowej i uogólnionych modeli liniowych (do tej grupy należy na przykład często używana w budowie systemów scoringowych regresja logistyczna) dla danych, które nie mieszczą się w pamięci komputera.
Autorem postu jest Artur Suchwałko
Dec
10
Często zdarza się potrzeba przeprowadzenia bardziej skomplikowanych obliczeń w arkuszu Excel. Przykładem takiego zadania mogą być bardziej zaawansowane testy statystyczne. Jednym z rozwiązań jest napisanie odpowiedniego kodu w Visual Basic’u. Druga z opcji to skorzystanie z GNU R jako silnika obliczeniowego.
Jednym z wykorzystywanych do tego celu rozwiązań jest RExcel. GNU R staje się dostępny z menu Excel’a, w formułach umieszczonych w komórkach Excel’a oraz z poziomu Visual Basic’a.
RExcel wykorzystuje technologię (D)-COM, dzięki której GNU R może być wykorzystywany przez oprogramowanie praktycznie w dowolnym języku na platformie Windows (patrz: R (D)COM Server).
Ten wpis to kontynuacja postu dotyczącego pakietu xlsReadWrite.
Autorem postu jest Artur Suchwałko
Nov
28
PMML (Predictive Model Markup Language) jest opartym na XML językiem, który umożliwia wygodny eksport modeli predykcyjnych z narzędzia analitycznego, w którym model powstał, do systemu, w którym model będzie wykorzystywany (na przykład definiującego listy mailingowe dla kampanii marketingowej). Oczywiście, wyeksportowany w PMML model można wczytać do dowolnej innej aplikacji używającej standardu PMML i kontynuować pracę.
Specyfikacja PMML dostępna jest na stronie Data Mining Group.
System R posiada możliwość eksportu modeli zgodnie ze standardem PMML. Pakiet nazywa się PMML i oferuje możliwość eksportu podstawowych modeli. Według mnie najważniejszy z nich to drzewa klasyfikacyjne budowane z wykorzystaniem pakietu rpart. Pozostałe modele to sieci neuronowe, SVM, regresja liniowa i logistyczna oraz wyniki analizy skupień (k-means) i odkrywania reguł asocjacyjnych.
Można obejrzeć wideo pokazujące, jak z GNU R eksportuje się modele w formacie PMML.
Wyobrażenie o częstości korzystania z PMML dają wyniki ankiety ze strony KDNuggets.
Autorem postu jest Artur Suchwałko
Nov
14
Text mining to grupa metod analizy danych tekstowych wykorzystujących metody data mining. W języku angielskim text mining bywa czasem nazywany text data mining, co idealnie wyjaśnia, na czym on polega (oto definicja text miningu z Wikipedii).
Jeszcze do niedawna R był pozbawiony pakietu umożliwiającego wygodną analizę eksploracyjną danych tekstowych. Sytuacja zmieniła się, kiedy pojawił się pakiet tm. Informacje o nim dostępne są tutaj.
Warto przeczytać rozdział “An Introduction to Text Mining in R” w najnowszym wydaniu R-News. Zaprezentowano tam naprawdę ciekawe przykłady analizy danych tekstowych wykonane przy pomocy pakietu tm.
Lista pakietów dla GNU R przydatnych w analizie tekstu dostępna jest w odpowiednim dziale CRAN Task Views.
Do ciekawych rozwiązań należy też ReadMe: Software for Automated Content Analysis (strona projektu ReadMe).
Znane narzędzie data miningowe Open Source RapidMiner również oferuje dodatek (plug-in) do analizy tekstu.
Informacje o innych narzędziach oferujących metody text mining można znaleźć na stronie KDnuggets.
Autorem postu jest Artur Suchwałko
Nov
12
Jak wczytać do GNU R dane z arkusza Excela? Jest wiele możliwości. Między innymi eksport do pliku CSV, kopia przez schowek, wykorzystanie ODBC, czy bezpośrednie użycie technologii COM.
Warto sprawdzić działanie pakietu xlsReadWrite (oto jego strona). Pakiet jest prosty w użyciu i zawiera dwie funkcje podstawowe:
- read.xls – odczyt danych,
- write.xls – zapis danych
oraz kilka funkcji pomocniczych do konwersji daty i czasu między formatami Excela i GNU R.
Autorem postu jest Artur Suchwałko
Nov
10
System R potrafi (w bardzo ograniczonym zakresie) wykonywać obliczenia symboliczne. Oto przykład:
D(expression(x^2+3),'x')
W tym przykładzie wyznaczana jest pochodna wyrażenia x^2 + 3 względem zmiennej x.
W podobny sposób można stworzyć funkcję, która umożliwia łatwe numeryczne wyznaczanie pochodnych funkcji podanej symbolicznie:
funkcja <- deriv((y ~ x^2 + .5 * x^4), "x", func = TRUE)
Z nowej funkcji korzystamy jak z każdej innej: funkcja(0). Uwaga: nowa funkcja nie składa się z pochodnych cząstkowych funkcji podanej symbolicznie, ale umożliwia wyznaczanie tych pochodnych oraz wartości wyjściowej funkcji. Bardziej złożony przykład powinien wyraźniej pokazać przewagę wariantu z pochodnymi liczonymi symbolicznie.
Symboliczne wyznaczanie pochodnych znajduje zastosowanie w optymalizacji numerycznej. Umożliwia to zastosowanie bardziej zaawansowanych i skutecznych metod, na przykład nlm i optim. Oto przykład porównujący optymalizację z wykorzystaniem symbolicznie wyznaczonej pochodnej:
nlm(funkcja, 3)
oraz bez niej:
funkcja.num <- function(x) {x^2 + .5 * x^4}
nlm(funkcja.num, 3)
Jak widać, oszczędzamy jedną / połowę iteracji.
Autorem postu jest Artur Suchwałko
Oct
28
Model CreditMetrics (obok CreditRisk+ i KMV) jest jednym z podstawowych podejść do portfelowego modelowania ryzyka kredytowego. Parę lat temu pracowałem nad zastosowaniem podobnych modeli w praktyce bankowej. Wykorzystanie systemu R bardzo ułatwia takie zastosowania.
Pakiet bardzo upraszczający pracę z modelem CreditMetrics nazywa się (oczywiście) CreditMetrics i jest dostępny na serwerach CRAN.
Wprowadzenie do modelowania ryzyka portfela kredytowego można znaleźć w artykułach Wojciecha Kuryłka: Modelowanie ryzyka portfela kredytowego. Część I oraz Modelowanie ryzyka portfela kredytowego. Część II.
Zainteresowanym modelem CreditMetrics proponuję przejrzenie jego dokumentacji: CreditMetrics – Technical Document.
Przy okazji, wszystkich zainteresowanych tematem zachęcam do spojrzenia na CRAN Task View: Empirical Finance. Wymienione są tam pakiety R użyteczne w zaawansowanych analizach i modelowaniu finansowym.
Autorem postu jest Artur Suchwałko
Oct
28
Światowy kryzys finansowy przypomniał mi czasy, kiedy zajmowałem się typową matematyką finansową. Od tego czasu wiele się zmieniło w dostępnym oprogramowaniu. Okazuje się, że R doskonale sobie radzi z analizą danych finansowych. Oprócz metod analizy system R umożliwia wygodny dostęp do danych finansowych online.
Analizujemy jeden indeks oraz ceny akcji trzech znanych firm:
- ^NYA – New York Stock Exchange Composite (“^” oznacza, że mamy do czynienia z indeksem),
- KO – Coca Cola.
Nazwy dwóch pozostałych firm łatwo można odgadnąć analizując kod.
Korzystamy z pakietu fImport. Jest on jednym z pakietów oferowanych na stronie Rmetrics. Rmetrics jest zestawem pakietów dla R przydatnych w inżynierii finansowej.
Wczytujemy dane z Yahoo oraz obliczamy korelacje przyrostów (zwrotów) cen akcji i indeksu giełdowego. Oto krótki kod:
library(fImport)
dane <- as.data.frame(yahooSeries(symbols = c("^NYA", "KO", "IBM", "DELL"), from = "2008-01-01", to = "2008-10-24")) # wczytujemy dane z Yahoo
dane <- dane[, grep("Close", names(dane), value=TRUE)] # bierzemy tylko kursy zamknięcia (korzystamy z wyrażeń regularnych)
# wyliczamy zwroty
n <- dim(dane)[1]
dane.zwroty <- (dane[2:n,] - dane[1:(n-1),]) / dane[1:(n-1),]
# liczymy i pokazujemy macierz korelacji
print(cor(dane.zwroty))
heatmap(cor(dane.zwroty), cexRow=.8, cexCol=.8, symm=T, rewC=T)
Ciekawostką jest wykorzystanie w kodzie wyrażeń regularnych (funkcja grep).
Oczywiście, można wykonać na naszych danych także całkiem inne analizy i wykresy.
Zachęcam w związku z tym wszystkich zainteresowanych do odwiedzenia strony pakietu
quantmod. Pakiet ten umożliwia on wczytywanie do R danych finansowych z Google Finance oraz operacje na nich. Można budować i testować modele dla traderów oraz tworzyć atrakcyjne wykresy. Pakiet quantmod jest także dostępny standardowo na serwerach CRAN.
Autorem postu jest Artur Suchwałko
Oct
02
Czasami zdarza się konieczność wczytania do systemu R wielu plików z pewnego katalogu. Ja wykorzystywałem taką możliwość podczas obróbki obrazów (rozpoznawanie twarzy). Do R były wczytywane pliki z odpowiednim rozszerzeniem. Oto krótki przykład:
lista.plikow <- list.files(path=".", full.name = TRUE, pattern = ".jpg")
print(lista.plikow)
Po wczytaniu listy plików wystarczy odczytać z niej kolejne nazwy i wczytać pliki. Niestety, ten przykład zwróci najprawdopodobniej pustą listę. Po prostu w domyślnym katalogu roboczym R nie powinno być plików z rozszerzeniem *.jpg. Można zmienić katalog roboczy na taki, w którym odpowiednie pliki są ("Change dir..." z menu "File" albo instrukcja setwd.
Co ciekawe, parametr pattern może być dowolnym wyrażeniem regularnym. Oto kolejny przykład. Tym razem tworzymy listę plików sztucznie, zamiast wczytywać z dysku. Wyrażenie regularne z drugiej linii kodu poniżej może zostać użyte w parametrze pattern:
lista.plikow <- paste("Plik", 0:110, sep="_")
grep("Plik_[2-9][0-9]$", lista.plikow, value=TRUE)
Przy okazji, inna przydatna funkcja to file.choose. Umożliwia ona łatwe wybieranie pliku przez użytkownika.
Autorem postu jest Artur Suchwałko