piątek, 13 listopada 2015

SPSS Modeler & Spark


W ostatnich dnia września wypuszczona została nowa wersja programu IBM SPSS Modeler – wersja 17.1. Główną funkcjonalnością owej wersji jest integracja z silnikiem przetwarzania danych Apache SPARK


Wspomniana integracja oznacza, że wszystkie procedury, dla których dostępna była opcja Hadoop-Pushback, mogą być wykonane nie tylko z wykorzystaniem MapReduce, ale także SPARK-a, przy czym w pierwszej kolejności SPSS będzie wykorzystywał SPARK-a, a gdy ten nie jest dostępny, to SPSS wykorzysta MapReduce. Szczegółową listę procedur wspierających Hadoop-Pushback można znaleźć w dokumentacji.


Najnowsza wersja programu została także wzbogacona o dodatkowe, napisane pod kątem przetwarzania równoległego w klastrze Hadoop, algorytmy:

  • Random Trees – IBM-owska implementacja algorytmu lasy losowe,
  • drzewo AS – drzewo dezyzyjne Chaid,
  • GLE - uogólnione modele liniowe,
  • Liniowy AS - czyli modele liniowe,
  • LSVM – metoda wektorów nośnych.

Jak widać jedynie pierwszy z wymienionych węzłów wprowadza do SPSS nowy algorytm, pozostałe powstały w wyniku przepisania istniejących algorytmów w sposób pozwalający w pełni wykorzystać przetwarzanie równoległe w Hadoop.



W związku z tym, że algorytmów przepisanych na architekturę Hadoop przybywa, to doczekały się one osobnej zakładki na karcie Modelowanie.


Na tym jednak nie koniec ulepszeń. Idąc krok dalej, Kreator Niestandardowych Okien Dialogowych został rozbudowany o możliwość wykorzystania języka Python dla Spark (PySpark). Funkcjonalność ta zapewnia użytkownikom SPSS dostęp do algorytmów uczenia maszynowego napisanych w Sparku

Co więcej, kreator niestandardowych okien dialogowych został rozbudowany o możliwość wykorzystanie również języka Python dla Sparka - PySpark. Oznacza to, że użytkownicy SPSS Modeler zyskują dostęp do biblioteki modeli algorytmów uczenia maszynowego napisanych w SparkuMllib.


W bibliotece znajduje się m.in. algorytm do nadawania indeksów stronom internetowym – Page Rank () oraz stosowany często w silnikach rekomendacyjnych algorytm Collaborative Filtering .


Dużą przewagą rozwiązania jest fakt, że użytkownik nie jest zmuszony do programowania owych węzłów samodzielnie. Wspomniane procedury obudowane węzłami są do pobrania na IBM-owskim Githubie. Z moich informacji wynika, że kolejne 3 węzły są obecnie w przygotowaniu.

Na koniec chciałem jeszcze wspomnieć o jednej malej, ale dość istotnej zmianie dotyczącej integracji SPSS z R. W węzłach Transformacje R oraz Scoring R można ustawić wielkość paczek, w których rekordy wysłane są do R.


We wcześniejszych wersjach programu było to możliwe jedynie przez zmianę kodu źródłowego węzła, co z kolei nie było rekomendowane przez IBM

P.S. Szczegółowe informacje dot. technologii IBM SPSS można znaleźć na stronie: 
http://spss-polska.pl/




niedziela, 11 października 2015

Dokumentacja SPSS Modeler dostępna w języku polskim!

Od kilku dni dokumentacja SPSS Modeler dostępna jest także w języku polskim. Możną ją znaleźć tutaj.



Dokumentacja wezly modelowania po polsku do IBM SPSS Modeler


Odszkodowania za opóźnione loty http://www.pay4delay.pl/
Odszkodowania za odwołane loty  http://www.pay4delay.pl/
Odszkodowani za odwołany lot  http://www.pay4delay.pl/
Odszkodowanie za opóźniony lot  http://www.pay4delay.pl/
Opóźniony lot odszkodowanie  http://www.pay4delay.pl/
Odwołany lot odszkodowanie  http://www.pay4delay.pl/
Overbooking odszkodowanie  http://www.pay4delay.pl/
Opóźniony samolot odszkodowanie  http://www.pay4delay.pl/

P.S. Prośbę o przetłumaczenie dokumentacji udało nam się przeforsować jeszcze podczas pracy w IBM.

Odszkodowania za opóźnione loty http://www.pay4delay.pl/
Odszkodowania za odwołane loty  http://www.pay4delay.pl/
Odszkodowani za odwołany lot  http://www.pay4delay.pl/
Odszkodowanie za opóźniony lot  http://www.pay4delay.pl/
Opóźniony lot odszkodowanie  http://www.pay4delay.pl/
Odwołany lot odszkodowanie  http://www.pay4delay.pl/
Overbooking odszkodowanie  http://www.pay4delay.pl/

Opóźniony samolot odszkodowanie  http://www.pay4delay.pl/

P.S2. Szczegółowe informacje dot. technologii IBM SPSS można znaleźć na stronie: 
http://spss-polska.pl/

wtorek, 6 października 2015

Sieci neuronowe ukryte w SPSS Modeler



Kontynuując poprzedni temat chciałbym podzielić się odkryciem, którego dokonałem podczas przeglądania dokumentacji SPSS Modeler i Python. 

Odkrycie to sprowadza się do wniosku, iż w narzędziu IBM SPSS Modeler istnieją dwa węzły do budowy sztucznych sieci neuronowych. Jeden z węzłów dostępny jest standardowo w palecie węzłów na karcie modele, natomiast drugi, a właściwie pierwszy, można wywołać jedynie korzystając ze skryptu, np.:
import modeler.api
stream = modeler.script.stream()
stream.create("neuralnet", "Neural Net")


Ukryty węzeł pochodzi z czasów, gdy program IBM SPSS Modeler nazywał się jeszcze Clementine. Następnie po akwizycji przez (jeszcze wtedy nie IBM) SPSS nastąpił proces standaryzacji procedur analitycznych, podczas którego stary węzeł został zastąpiony nowym. Pierwotny węzeł nie został jednak całkowicie usunięty, co miało zapewnić, że strumienie danych napisane we wcześniejszych wersjach programu nie przestaną działać.

Tyle tytułem wprowadzenia. Między starym, a nowym węzłem występują dość duże różnice jeśli chodzi o funkcjonalności. Pierwotny węzeł dostarcza więcej opcji budowy sieci  oraz pozwala zachować większą kontrolę nad procesem uczenia. Dodatkowo, stary węzeł pozwalał na zapisywanie raportu z procesu uczenia sieci.

Po otwarciu węzła, w karcie model, użytkownik może wybrać jedną z sześciu opcji budowy sieci:
  • Szybka - zbliżona do opcji dostępnych w nowym węźle, czyli budowa sieci o wyspecyfikowanej topologii.
  • Dynamiczna – działa podobnie jak szybka, ale w procesie uczenia dodaje lub odejmuje neurony warstwy ukrytej w zależności od wartości błędu.
  • Wieloraka – buduje wiele sieci o różnej topologii, i wybiera najlepszą.
  • Przycinanie – proces w wyniku którego budowana i trenowana jest relatywnie duża sieć. Następnie przeprowadzona jest analiza wrażliwości i usuwane są najmniej istotne neurony warstwy wejściowej i ukrytej, a proces uczenia jest kontynuowany. Podejście to wydaję się bardzo efektywne, ale zajmuje też bardzo dużo czasu.
  • RBFN – tworzy sieć o radialnej funkcji bazowej. Metoda jest analogiczna do metody stosowanej obecnie.
  • Przycinanie wyczerpujące  - działa podobnie jak przycinanie tylko staruje od największej możliwej sieci, co czyni proces jeszcze bardziej czasochłonnym.
  • Powyższe fajnie ilustruje karta zaawansowane, która zmienia się dynamicznie w zależności od wybranego modelu sieci.

Karta zaawansowane dla metody szybka:

Karta zaawansowane dla metody przycinanie:

Karta zaawansowane dla metody przycinanie wyczerpujące:


Jak widać, w zależności od metody możemy wyspecyfikować parametry uczenia, topologię sieci oraz właściwości typowe dla poszczególnych metod. W zakładce Opcje znajduje się kolejna ciekawa opcja: Pokaż wykres sprzężenia zwrotnego, który pokazuje jak wygląda trafność modelu najlepszego w porównaniu z trafnością modelu obecnego.  Oprócz oglądania modelu użytkownik ma też możliwość zatrzymania procesu uczenia w dowolnym momencie. 

Zachęcam do testowania węzła!


P.S. Szczegółowe informacje dot. technologii IBM SPSS można znaleźć na stronie: 
http://spss-polska.pl/

piątek, 18 września 2015

SPSS Modeler i Python


Po wakacyjnej przerwie, którą z znacznej mierze poświęciłem na tworzenie własnej firmy, powracam do pisania bloga. Od pierwszego września nie jestem już pracownikiem firmy IBM.  Wraz z kolegą założyliśmy firmę Algomine, która zajmuje się sprzedażą oprogramowania IBM SPSS, IBM Pure Data for Analytics (daw. Netezza), IBM iLog oraz IBM Cognos BI, a także wdrożeniami oraz szeroko pojętymi usługami związanymi z tymże oprogramowaniem, w tym szkoleniami.  
W pierwszym wpisie w nowej post ibm-owskiej rzeczywistości chciałem pochylić się nad zagadnieniem wykorzystania języka programowania Python w narzędziu IBM SPSS Modeler. W celu zobrazowania działania owego języka w SPSS Modeler posłużę się, często wykorzystywanym przeze mnie, przykładem pętli, w której kolejne wartości z tabeli wyjściowej (węzeł Tabela) wykorzystywane są iteracyjnie w węźle Selekcja.  Zbudowany przepływ danych wygląda następująco:

Węzeł Selekcja wykorzystuje następujący warunek:
branch = '$P-Branches',
gdzie jako wartości parametru Branch podstawiane są kolejne wartości z tabeli wyjściowej ‘Branches’:

Wynikiem stworzonego przepływu danych są wykresy rozkładu zmiennej age osobno dla każdego z oddziałów:

 

Uruchomienie owego iteracyjnego przepływu danych wymaga skorzystania z edytora skryptów i napisania pętli. Pętlę taką można napisać zarówno korzystając ze ‘starej składni’ SPSS Modeler, jak i z języka Python. Na początek zobaczmy, jak wygląda skrypt napisany w ‘starej składni’:

Bardzo dużą zaletą owego skryptu jest zwięzłość i prostota. Do węzłów można się odnosić bezpośrednio poprzez ich nazwy. Skrypt może zawierać wyrażenia napisane w składni CLEM (składnia wykorzystywana w węzłach SPSS Modeler). Oczywistą wadą owego języka jest jednak fakt, że nie może on być wykorzystany nigdzie poza SPSS Modeler. Język jest ograniczony, nie można pisać w nim funkcji, ciężko jest się go nauczyć (brak podręczników i skryptów). Moim zdaniem będzie on w coraz mniejszym stopniu wspierany przez IBM i niedługo zaniknie. 

Python z kolei jest standardem wykorzystywanym również poza IBM. Za wikipedią: 

„Python – język programowania wysokiego poziomu ogólnego przeznaczenia, o rozbudowanym pakiecie bibliotek standardowych, którego ideą przewodnią jest czytelność i klarowność kodu źródłowego. Jego składnia cechuje się przejrzystością i zwięzłością.” 

W internecie można znaleźć wiele miejsc, z których można się nauczyć Pythona, np.:

Powyższy kod zapisany w języku Python wygląda w następujący sposób:

Na początku importuję API SPSS Modeler. Następnie deklaruję zmienną lokalną stream, która reprezentuje bieżący przepływ danych. W dziewiątej linii deklaruję zmienną lokalna table. Jak widać odwołanie do poszczególnych węzłów jest nieco bardziej pracochłonne niż w starej składni SPSS, w której wystarczyło podać nazwę węzła. Oczywiście wykorzystanie komendy findByType(), nie jest jedynym sposobem odwołania się do węzła. Kombinacja klawiszy Ctrl+Spacja pomaga nam znaleźć odpowiednie wyrażenie zaczynające się od zadanej frazy. Warto jeszcze dodać, że bardziej leniwi użytkownicy zamiast nazwy lub typu węzła mogą wpisać None.

Następnie uruchamiam węzeł końcowy tabelę ‘Branches’. Wywołać węzeł możemy na kilka sposobów. Oto przykładowe komendy:

  • runAll - uruchomienie wszystkich węzłów końcowych

  • runSelected – uruchomienie wskazanego węzła

  • runScript - uruchominie skryptu

W przypadku, gdybym chciał uruchomić więcej niż jeden węzeł, mogę stworzyć listę węzłów jako zmienną lokalną. Przykładem takiej zmiennej jest zmienna nodes. Węzły uruchamiam przy użyciu komendy runSelected. 

Wykorzystanie funkcji: getRowSet() oraz getRowCount() umożliwia mi obliczenie liczby oddziałów, dla których budowane będą histogramy. W ostatniej sekcji definiuje funkcję, która wykorzystując pętle tworzy histogramy zmiennej age w kolejnych oddziałach. Liczba iteracji równa jest liczbie oddziałów. W każdej iteracji nazwa kolejnego oddziału podawana jest do węzła Selekcja. W tym celu wykorzystuję komendę setParameterValue. Parametry każdego węzła można zmieniać korzystając z komendy setPropertyValue. 

Podsumowując, pisanie skryptów w języku Python wydaje się bardziej pracochłonne, ale nauczenie się owej składni jest wysiłkiem, który w dłużej perspektywie na pewno się opłaci. Głównym argumentem ‘za’ są bardzo szerokie możliwości zapewniane przez Pythona, które wykraczają daleko poza zaprezentowany przykład. 

Dla zainteresowanych pisaniem własnych skryptów w języku Python załączam link do oficjalnego przewodnika.

Odszkodowania za opóźnione loty http://www.pay4delay.pl/
Odszkodowania za odwołane loty  http://www.pay4delay.pl/
Odszkodowani za odwołany lot  http://www.pay4delay.pl/
Odszkodowanie za opóźniony lot  http://www.pay4delay.pl/
Opóźniony lot odszkodowanie  http://www.pay4delay.pl/
Odwołany lot odszkodowanie  http://www.pay4delay.pl/
Overbooking odszkodowanie  http://www.pay4delay.pl/

Opóźniony samolot odszkodowanie  http://www.pay4delay.pl/

P.S. Szczegółowe informacje dot. technologii IBM SPSS można znaleźć na stronie: 
http://spss-polska.pl/

środa, 1 lipca 2015

SPSS Modeler 17 Fix Pack 1

W ostatnim dniu czerwca IBM opublikował Fix Pack 1 do programu SPSS Modeler 17. Oprócz standardowych poprawek Fix Pack zawiera dwa nowe węzły służące do budowy modeli bezpośrednio na platformie Hadoop. (Czyżby ktoś się nie wyrobił na marcową premierę?:)) Pierwszy z węzłów umożliwia budowę modeli drzew decyzyjnych Chaid, a drugi modeli liniowych.

 

Są to kolejne węzły dedykowane budowie modeli bezpośrednio na platformie Hadoop. Dla przypomnienia, w 17. wersji programu wprowadzono możliwosć budowy modeli szeregów czasowych, analizy skupień oraz analizy asocjacji z wykorzystaniem modelu Map-Reduce. Więcej onformacji o nowościach w SPSS Modeler 17 do znalezienia we wcześniejszym wpisie: Nowości w SPSS Modeler 17.

Oczywiście algorytmy, dla których stworzono osobny węzeł nie są jedynymi procedurami, które mogą obliczane po stronie Hadoop. Pełną listę procedur można znaleźć w dokumentacji: SPSS Analytic Server 2.0.
 
Wprowadzenie kolejenych węzłów jednoznacznie pokazuje, że integracja z technologią Hadoop, oprócz integracji z R, stanowi kluczowy kierunek rozwoju produktu. Moim zdaniem niedługo możemy się spodziewać dalszych kroków w tym kierunku, czyli wsparcia dla technologii Apache Spark;)..

p.s. Oczywiście opisywany fix pack naprawia błędy zw. z wyświetlaniem wyników często używanych węzłów: Auto Grupowanie, Auto Klasyfikacja, Auto Predykcja.
Odszkodowania za opóźnione loty http://www.pay4delay.pl/
Odszkodowania za odwołane loty  http://www.pay4delay.pl/
Odszkodowani za odwołany lot  http://www.pay4delay.pl/
Odszkodowanie za opóźniony lot  http://www.pay4delay.pl/
Opóźniony lot odszkodowanie  http://www.pay4delay.pl/
Odwołany lot odszkodowanie  http://www.pay4delay.pl/
Overbooking odszkodowanie  http://www.pay4delay.pl/
Opóźniony samolot odszkodowanie  http://www.pay4delay.pl/


P.S. Szczegółowe informacje dot. technologii IBM SPSS można znaleźć na stronie: 
http://spss-polska.pl/