mXparser - wysoce elastyczny parser (interpreter) wyrażeń matematycznych dla JAVA oraz C# .NET

mXparser - parser matematyczny

Serdecznie zapraszam do zapoznania się z wysoce elastycznym interpreterem wyrażeń matematycznych. Oprogramowanie jest mojego autorstwa, powstało w 2010 roku i wtedy zostało opublikowane w serwisie SourceForge.net. Z racji, że teraz posiadam stronę o odpowiedniej tematyce, zdecydowałem się przygotować dedykowany opis, który znajdziecie pod tym linkiem. Dostępne są również tutorial oraz specyfikacja API.

Pozdrowienia,

Mariusz Gromada

Pobierz mXparser - parser matematyczny

Download mXparser

Download mXparser

Zasięg (TPR - czułość / TNR - specyficzność) i precyzja (PPV / NPV) - czyli ocena jakości klasyfikacji (część 2)

Schemat oceny klasyfikacji

Wpis z dnia 26 października 2015 "Confusion matrix, Macierz błędu, tablica pomyłek - czyli ocena jakości klasyfikacji (część 1)" przedstawia wstęp do macierzy błędu i jej podstawowych zastosowań. Poniżej prezentujemy kolejne miary jakości klasyfikacji oparte na poznanej macierzy błędu. Przypomnijmy kodowanie klas:

  • 1 - Positive
  • 0 - Negative

oraz 4 możliwe wyniki przewidywań:

  • True-Positive (TP - liczba przewidywań prawdziwie pozytywnych);
  • True-Negative (TN - liczba przewidywań prawdziwie negatywnych);
  • False-Positive (FP - liczba przewidywań fałszywie pozytywnych);
  • False-Negative (FN - liczba przewidywań fałszywie negatywnych).

Confusion Matrix

Czułość i specyficzność jako miary "zasięgu"

  • Czułość = TPR = \frac{TP}{TP+FN}True-Positive Rate, miara "zasięgu / pokrycia / dotarcia" wskazująca w jakim procencie klasa faktycznie pozytywna została pokryta przewidywaniem pozytywnym (np. procent osób chorych, dla których test diagnostyczny wskazuje wynik pozytywny). TPR zapisujemy również jako

TPR = P( pred = P | fakt = P ) = P( pred = 1 | fakt = 1)  = P( 1 | 1 )

  • Specyficzność = TNR = \frac{TN}{TN+FP}True-Negative Rate, miara "zasięgu / pokrycia / dotarcia" wskazująca w jakim procencie klasa faktycznie negatywna została pokryta przewidywaniem negatywnym (np. procent osób zdrowych, dla których test diagnostyczny wskazuje wynik negatywny). TNR zapisujemy również jako

TNR = P( pred = N | fakt = N ) = P( pred = 0 | fakt = 0)  = P( 0 | 0 )

PPV i NPV jako miary precyzji

  • Precyzja przewidywania pozytywnego = PPV \frac{TP}{TP+FP} - Positive Predictive Value, miara precyzji wskazująca z jaką pewnością możemy ufać przewidywaniom pozytywnym, tzn. w jakim procencie przewidywania pozytywne potwierdzają się stanem faktycznie pozytywnym (np. procent osób z pozytywnym wynikiem testu medycznego, u których następnie potwierdzono diagnozę). PPV można zapisać również jako

PPV = P( fakt = P | pred = P) = P( fakt = 1 | pred = 1 )

  • Precyzja przewidywania negatywnego = NPV \frac{TN}{TN+FN} - Negative Predictive Value, miara precyzji wskazująca z jaką pewnością możemy ufać przewidywaniom negatywnym, tzn. w jakim procencie przewidywania negatywne potwierdzają się stanem faktycznie negatywnym (np. procent osób z negatywnym wynikiem testu medycznego, u których następnie wykluczono chorobę). NPV można zapisać również jako

NPV = P( fakt = N | pred = N) = P( fakt = 0 | pred = 0 )

Miary zasięgu i precyzji na schemacie macierzy błędu

Czułość, specyficzność oraz precyzja klasyfikacji

 

Miary zasięgu i precyzji na schemacie błędu klasyfikacyjnego

Czułość, specyficzność oraz precyzja klasyfikacji

Zależność pomiędzy miarami jakości klasyfikacji

  • Czułość (TPR) vs Specyficzność (TNR) - teoretycznie miary niezależne, co dobrze obrazują powyższe schematy. W praktyce jednak zwiększanie czułości prowadzi często do zmniejszenia specyficzności.
  • PPV i NPV  vs Czułość (TPR) vs Specyficzność (TNR) - korzystając z twierdzenia Bayesa można łatwo wyznaczyć zależność pomiędzy miarami precyzji i miarami zasięgu

\quad

{\small PPV=P(fakt=1|pred=1)=}

{\tiny=\frac{ P(fakt = 1) \cdot P(pred = 1 | fakt = 1) }{ P( fakt = 1)\cdot P( pred = 1 | fakt = 1) +P(fakt = 0) \cdot P(pred = 1 | fakt = 0)}=}

{\small=\frac{ P(1) \cdot P(1 |1) }{ P(1)\cdot P(1|1) +P(0) \cdot P(1|0)}=}

{\small=\frac{ P(1) \cdot P(1 |1) }{ P(1)\cdot P(1|1) +P(0) \cdot \big(1-P(0|0)\big)}=}

{\small=\frac{ P(1) \cdot TPR}{ P(1)\cdot TPR+P(0) \cdot \big(1-TNR\big)}=}

\quad

{\small NPV=P(fakt=0|pred=0)}

{\tiny=\frac{ P(fakt = 0) \cdot P(pred = 0 | fakt = 0) }{ P( fakt = 0)\cdot P( pred = 0 | fakt = 0) +P(fakt = 1) \cdot P(pred = 0 | fakt = 1)}=}

{\small=\frac{ P(0) \cdot P(0|0) }{ P(0)\cdot P(0|0) +P(1) \cdot P(0|1)}=}

{\small=\frac{ P(0) \cdot P(0 |0) }{ P(0)\cdot P(0|0) +P(1) \cdot \big(1-P(1|1)\big)}=}

{\small=\frac{ P(0) \cdot TNR}{ P(0)\cdot TNR+P(1) \cdot \big(1-TPR\big)}}

\quad

  • PPV vs NPV - miary mocno od siebie zależą, np. zwiększając frakcję TP zmniejszamy frakcję FN, lub zmniejszając frakcję FP zwiększamy frakcję TN.

Ciąg dalszy nastąpi 🙂

Pozdrowienia,

Mariusz Gromada

 

Indukcja matematyczna jako przykład dedukcji :-)

Indukcja matematyczna

Wnioskowanie indukcyjne

Rozumowaniem indykcyjnym określa się wnioskowanie "od szczegółu do ogółu", przez co indukcja bywa uważana za jedno z głównych narzędzi tzw. nauk empirycznych (metody polegające na zastosowaniu eksperymentu, obserwacji, indukcji enumeracyjnej oraz indukcji eliminacyjnej).

Wnioskowanie dedukcyjne

Rozumowaniem dedukcyjnym określa się wnioskowanie "od ogółu do szczegółu". Dedukcja jest podstawowym  narzędziem stosowanym w logice i matematyce, gdzie z twierdzenia ogólnego (bądź założenia / aksjomatu) wysuwa się wniosek bardziej szczegółowy. Dedukcja jest także często wykorzystywana w naukach opierających się na doświadczeniach empirycznych, gdzie dobrym przykładem jest fizyka teoretyczna, która często wyprowadza twierdzenia i wnioski potwierdzane (lub nadal nie) eksperymentalnie dopiero po wielu latach (np. Ogólna Teoria Względności, Promieniowanie Hawkinga).

Indukcja matematyczna

Twierdzenie: Jeżeli:

  1. istnieje taka liczba naturalna n_0, że T(n_0) jest zdaniem prawdziwym,
  2. dla każdej liczby naturalnej n \geq n_0 z założenia prawdziwości zdania T(n) wynika prawdziwość zdania T(n+1)

to T(n) jest zdaniem prawdziwym dla każdego naturalnego n \geq n_0.

Przykład: Udowodnić, że dla każdej naturalnej liczby n \geq 3 spełniona jest nierówność 2^n > 2n.

Forma zdaniowa T(n) przyjmuje postać  T(n) : 2^n > 2n, gdzie n_0 = 3

  1. dla n=3 mamy 2^3 = 8 > 2 \cdot 3 = 6,
  2. zakładamy, że nierówność 2^n > 2n jest prawdziwa dla n \geq 3 - przeprowadzany mnożenie nierówności przez 2:

2 \cdot 2^n > 2 \cdot 2n

2^{n+1} > 2n+2n, ale dla n \geq 3 mamy 2n > 2, zatem

2^{n+1} > 2n+2 = 2(n+1), ostatecznie

2^{n+1} > 2(n+1)

Nierówność powyższa oznacza, że z założenie prawdziwości T(n) wynika prawdziwość T(n+1), co na podstawie twierdzenia o indukcji matematycznej kończy dowód.

Wniosek: Stosując ogólne twierdzenie (zasadę indukcji matematycznej) wykazaliśmy prawdziwość wniosku szczegółowego (tzn. poprawność wyżej opisanej nierówności) - zatem stosowanie zasady indukcji matematycznej jest wnioskowaniem dedukcyjnym 🙂 .

Pozdrowienia,

Mariusz Gromada

 

 

 

 

 

 

Relacja z IV Konferencji Customer Intelligence

Konferencja Customer Intelligence

W dniach 14-15 października odbyła się IV Konferencja Customer Intelligence organizowana przez Blue Business Media. Miałem przyjemność uczestniczyć w Konferencji w roli prelegenta przybliżając obszar "Skutecznej operacjonalizacji środowiska analitycznego - czyli powtarzalnego i efektywnego procesu tworzenia oraz wdrażania modeli predykcyjnych". Prezentacja skupiała się na poniższych aspektach:

  • Z jakich komponentów powinno składać się dojrzałe środowisko analityczne
  • Jak integrować środowisko analityczne z systemem klasy Campaign Management
  • Jak efektywnie budować, wdrażać i monitorować jakość modeli predykcyjnych
  • Jak mierzyć wartość biznesową płynącą z wykorzystania środowiska analitycznego

Prelekcja spotkała się z dobrym odbiorem, co mnie niezwykle cieszy 🙂 . Zapraszam do zapoznania się z relacją z wydarzenia!

Pozdrawiam,

Mariusz Gromada

TensorFlow - czyli Machine Learning od Google udostępniony na zasadzie open source!

TensorFlow by Google

Kilka dni temu Google udostępnił na zasadzie open source (licencja Apache 2.0) własną platformę "TensorFlow" przeznaczoną do uczenia maszynowego. TensorFlow obecnie wspiera większość usług Google, między innymi transkrypcja mowy na tekst, rozpoznawanie pisma ludzkiego, Google Translate, rozpoznawanie i kategoryzowanie obrazów, Gmail, i wiele innych. TensorFlow dostarcza wysokowydajne API w językach C++ i Python również w wersjach dla urządzeń mobilnych.

Geneza powstania TensorFlow

TensorFlow jest następcą rozwiązania DistBelief (Large Scale Distributed Deep Networks), którego Google używał z sukcesem od 2011 roku np. zwyciężając w konkursie Large Scale Visual Recognition Challenge 2014. DistBelief koncentrował się wyłącznie na sieciach neuronowych i był mocno osadzony w infrastrukturze Google, co uniemożliwiało udostępnienie platformy w ramach open source.

Na stronie www.tensorflow.org znajdziecie kody, pakiety instalacyjne, tutoriale i dokumentacje.

Pozdrowienia,

Mariusz Gromada

Miara zbioru jako przykład potęgi matematycznych uogólnień

Miara zbioru

Osiągnięcia matematyczne są tym większe im bardziej uogólnione rezultaty są przedstawiane. Teorie matematyczne zawsze dążą do systematyzowania i generalizowania pojęć, umożliwiając ich aplikację w znacznie szerszej klasie problemów. Przykładowo matematyk nie zgłosi trudności z wyobrażeniem sobie 4 wymiarów, zwyczajnie analizuje n-wymiarów i podstawia n = 4 🙂 .

Teoria miary i całki

Jednym z ciekawszych przejawów tego trendu jest teoria miary i całki, która wyrosła z potrzeby ujednolicenia pod pojęciem rozmiaru zbioru jego długości, pola powierzchni, czy też objętości. Nową dziedzinę matematyki zaproponował na początku XX wieku Henri Lebesgue swoimi pracami na temat całki.

Podstawowe własności miary

Zastanawiając się jakie cechy powinna posiadać "dobra" funkcja miary najlepiej jest rozważać wspomniane wyżej "miary" naturalne takie jak: objętość, długość, waga. Dobrze skalibrowana waga nigdy nie pokazuje wartości ujemnych. Taka waga powinna wskazać zero jeżeli nic nie ważymy. Ponadto, jeżeli ważmy różne produkty, oczekujemy łącznej wagi równej sumie wag poszczególnych produktów. Idąc jeszcze dalej, jeśli podzielimy ważony element na części, które można zważyć, również oczekujemy zgodności odpowiednich pomiarów.

Co możemy mierzyć

Na tym etapie rozważmy dowolny niepusty zbiór \Omega. Mówiąc o pomiarach na zbiorze \Omega będziemy myśleli o pomiarach na jego podzbiorach \big(\Omega jest "maksymalnym" zbiorem podlegającym pomiarowi - np. może to być cała płaszczyzna \mathbb{R}^2\big) - niech zatem \mathfrak{F} oznacza rodzinę mierzalnych podzbiorów zbioru \Omega. Od takiej rodziny mierzalnych zbiorów oczekujemy spełnienia jedynie 3 warunków:

  1. Możemy zmierzyć "nic" - tzn. zbiór pusty jest mierzalny, co zapiszemy \emptyset \in \mathfrak{F}
  2. Jeżeli możemy zmierzyć zbiór A, możemy również zmierzyć to co pozostało (tzn. \Omega \setminus A), co zapisujemy \big(A \in \mathfrak{F} \big) \Rightarrow \big( \Omega \setminus A \in \mathfrak{F} \big)
  3. Jeśli dysponujemy wieloma zbiorami, które można zmierzyć, to o ile można je ponumerować, również można zmierzyć ich sumę, co zapisujemy \big(A_i \in \mathfrak{F}  dla i=1,2,\ldots \big) \Rightarrow \bigg(\displaystyle \bigcup_{i =1}^\infty A_i \in\mathfrak{F}\bigg)

Powyższe warunki (i ich konsekwencje) określają jakiego typu podzbiory przestrzeni \Omega mogą zostać zmierzone. Oczekuje się, że jeżeli można zmierzyć podzbiór, to można również zmierzyć jego dopełnienie. Jeżeli można zmierzyć wiele podzbiorów przestrzeni, można również zmierzyć ich sumę, jak też ich część wspólną. Ponadto, jeżeli można zmierzyć dwa dowolne podzbiory przestrzeni, można również zmierzyć ich różnicę. W szczególności zakłada się, że możliwe jest dokonanie pomiaru na zbiorze pustym, jak też na całej przestrzeni. Rodziny \mathfrak{F} podzbiorów zbioru \Omega spełniające powyższe warunki nazywa się sigma-ciałami.

Funkcja miary zbioru

Miarą zbioru nazwiemy funkcję, która każdemu zbiorowi, który można zmierzyć (elementy sigma-ciała), przyporządkuje wartości liczbowe (również nieskończoność) spełniające poniższe 3 warunki:

  1. Miara zbioru (\mu) nie przyjmuje wartości ujemnych, ale może być zerowa, co zapisujemy \forall ~A \in \mathfrak{F},  \mu(A) \mathfrak{\geq} 0
  2. Miara "nic" jest zawsze równa 0, co zapisujemy \mu(\emptyset)=0
  3. Jeśli podzielimy zbiór na rozłączne części, to miara zbioru jest równa sumie miar jego części, co zapisujemy \big( A_i \cap A_j = \emptyset \quad \mathrm{dla} \quad i \ne j \big) \Rightarrow \Bigg( \mu \bigg(\bigcup_{i = 1}^\infty A_i \bigg) = \sum_{i = 1}^\infty \mu(A_i) \Bigg)

Powyższe warunki są wystarczające, aby funkcja miary zbioru dodatkowo spełniała poniższe:

  • Miara podzbioru jest nie większa niż miara wyjściowego zbioru, co zapisujemy \big( A \subseteq B \big) \Rightarrow \big( \mu(A) \leq \mu(B) \big)
  • Dodatkowo \big( A \subseteq B \big) \wedge \big( \mu(B) < +\infty \big) \Rightarrow \big( \mu(B \setminus A) = \mu(B) - \mu(A) \big)

Prawdopodobieństwo i miara - Patrick Billingsley

Miara zbioru (i ogólnie mierzalność) jest zupełnie podstawowym pojęciem w probabilistyce, to właśnie na przestrzeniach mierzalnych oparty jest cały model probabilistyczny, a w konsekwencji też model statystyczny. Wykorzystując okazję serdecznie polecam niesamowitą książkę Patrick'a Billingsley'a pod tytułem "Prawdopodobieństwo i miara".

Miara Lebesgue’a

W kolejnych artykułach przedstawimy miarę Lebesgue’a, która stanowi podstawę określania rozmiarów zbiorów w przestrzeniach euklidesowych.

Pozdrawiam,

Mariusz Gromada

 

 

 

Precyzja liczby Pi a obwód obserwowalnego Wszechświata

Obserwowalny Wszechświat

Znana obecnie (06.11.2015) precyzja liczby Pi

Alexander J. Yee i Shigeru Kondo w grudniu 2013 roku wyznaczyli liczbę Pi z dokładnością do ponad 12 bilionów cyfr - zdumiewająca precyzja! Dalszych obliczeń zaniechano w związku z wyczerpaniem się przestrzeni dyskowej. W poniższym tekście chciałbym przybliżyć co tak wielka dokładność może oznaczać w praktyce.

Obwód obserwowalnego Wszechświata

Rozważmy rozmiar Obserwowalnego Wszechświata zadając pytanie jakiej precyzji liczby Pi potrzeba do wyznaczenia jego obwodu z dokładnością rzędu 1 atomu wodoru? Promień walencyjny wodoru to 37 pm = 3.7×10 ‾¹¹ m. Rozmiar Obserwowalnego Wszechświata to suma odległości jaką światło przebyło od momentu Wielkiego Wybuchu (13.8 miliarda lat świetlnych) oraz dystansu, o jaki oddaliły się (przez ten okres) najodleglejsze galaktyki. Obecnie szacowana średnica Obserwowalnego Wszechświata to 92 miliardy lat świetlnych.

Promień obserwowalnego Wszechświata

Promień rzędu 46 miliardów lat świetlnych zdaje się sugerować, że oddalanie się galaktyk musiało się odbywać z prędkością większą niż prędkość światła. "Oddalanie się galaktyk" to uproszczenie myślowe - faktyczne oddalanie się jest konsekwencją ekspansji Wszechświata, która to jest rozszerzaniem się przestrzeni. Wielki Wybuch jest momentem rozpoczęcia ekspansji, czyli początkiem rozszerzania się przestrzeni. Fotony, które teraz obserwujemy, "leciały" do nas 13.8 miliarda lat, ale w momencie kiedy "startowały" to punkt startu i punkt docelowy były znacznie bliżej siebie. Wraz z podróżą fotonu przestrzeń się rozszerzała sprawiając, że przebyta droga była dłuższa, jak i dłuższa (niż początkowo) jest droga jeszcze "do przebycia". Niezgodność z zasadą niemożliwości przekroczenia prędkości światła jest w tym przypadku pozorna, gdyż to sama przestrzeń (i jej współrzędne) się rozszerzają, co jest wyrażone w odpowiednim zakrzywieniu czaso-przestrzeni opisywanej w Ogólnej Teorii Względności. O samej prędkości światła też jest wygodniej myśleć jako o prędkości "przyczynowo-skutkowości", wtedy łatwiej jest zrozumieć idee stożków świetlnych, etc. A jeszcze lepiej przyjąć c = 1 🙂

No to liczymy 🙂

  • Prędkość światła w próżni w przybliżeniu to c = 3 \times 10^8 \frac{m}{s}
  • Rok świetlny w przybliżeniu to 9.46 \times 10^{15} m
  • 46 miliardów lat świetlnych w przybliżeniu to 4.35 \times 10^{26} m
  • Obwód koła o takim promieniu to około 2.73 \times 10^{27} m
  • Zatem dokładność o rząd mniejszą niż rozmiar atomu wodoru uzyskamy przy wykorzystaniu 27 + 11 + extra 1 = 39 cyfr liczby Pi.

To niesamowite, że jedynie 39 cyfr liczby Pi wystarczy do osiągnięcia tak niezwykłej dokładności obliczeń dla obrzeży Obserwowalnego Wszechświata - 39 (=3.141592653589793238462643383279502884197) z poznanych 12 bilionów!

Na zakończenie filmik od Numberphile przedstawiający wyżej opisany problem.

Pozdrowienia,

Mariusz Gromada

 

Potęga i piękno - Ekstremalne zjawiska w kosmosie - Bryan Gaensler

Potęga i piękno - Ekstremalne zjawiska w kosmosie - Bryan Gaensler

Potęga i piękno - Ekstremalne zjawiska w kosmosie - Bryan Gaensler

Gorąco polecam książkę "Potęga i piękno - Ekstremalne zjawiska w kosmosie" autorstwa Bryan'a Gaenslera. Tematem "Potęgi i piękna" są niewyobrażalne temperatury, masy, wielkości i siły, które potrafimy zmierzyć i opisać, jednak trudno uznać, że jesteśmy w stanie je pojąć. Książka Genslera jest bardzo ciekawą rozpiską różnorakich "rekordów" (najmniejszych i największych) we Wszechświecie i stanowi niezwykle interesujące i przystępne wprowadzenie do astronomii. Dla zachęty poniżej kilka ekstremów opisywanych w książce 🙂

Przykłady omawianych ekstremów

  • Ekstrema temperatury (np.: Mgławica Bumerang, wybuch supernowej)
  • Ekstrema światła (np.: centrum ciemnej mgławicy, rozbłysk GRB 080319B)
  • Ekstrema czasu (np.: wiek Wszechświata, Betelgeza, gwiazdy neutronowe)
  • Ekstrema wielkości (np.: gwiazda neutronowa, Wielka Ściana Sloan)
  • Ekstrema prędkości (np.: gwiazdy neutronowe, cząsteczka "O mój Boże!")
  • Ekstrema masy (np.: gwiazdy III populacji, supermasywne czarne dziury)
  • Ekstrema dźwięku (np.: wybuch supernowej)
  • Ekstrema elektryczności (np.: zorza polarna, dżety radiogalaktyk)
  • Ekstrema magnetyzmu (np.: plamy słoneczne, magnetary)
  • Ekstrema grawitacji (np.: białe karły, gwiazdy neutronowe, czarne dziury)
  • Ekstrema gęstości (np.: pustki kosmiczne, gaz międzygalaktyczny, czarna dziura o masie gwiazdowej GRO J0422+32)

Pozdrowienia,

Mariusz Gromada