twierdzenie bayesa dane tabelaryczne
Draken:

Witam serdecznie!
Jestem programistą, pracującym dla firmy zajmującej się tworzeniem rozwiązań z zakresu Business
Intelligence i analizy danych.
Ostatnio pracujemy nad systemem ekspertowym, który będzie wyciągał prawdopodobieństwa z danych
tabelarycznych. Problem polega na tym, że nie mogę w żadnej książce znaleźć przykładów,
odpowiadających sytuacji przed którą stoję. Prosiłbym o pomoc i podpowiedź. Chodzi o sposób
liczenia prawdopodobieństw z tabel WYLICZAJĄCYCH poszczególne przypadki (a nie stanowiących
podstumowanie np. 2 zmiennych).
Sorry za krzywą tabelkę, nie umiem rysować

Ważne jest to, żę każdy wiersz to opis
POJEDYNCZEGO LOTU a nie jakieś podsumowanie wielu czy coś w tym rodzaju.
Oto przykładowe pytania, na które chciałbym znaleźc odpowiedź:
L − linia lotnia
Op − opłaty dodatkowe
T − czas spóźnienai
1. P(L = Linia1 ∩ Op = 20 EUR) =
16
Spośród WSZYSTKICH wierszy wybierz te, które mają L = Linia1 i Op = 20EUR i policz ilośc tych
wierszy do całości
| | P(T=20 min | L − Linia1) * P(L = Linia1) | |
2. P(L = Linia1 | T = 20 min) = |
| = |
| | P(T = 20min) | |
Z twierdzenia Bayesa:
Licznik:
a) weź wszystkie wiersze zawierające L = Linia1 (2 z 6).
b) weź wszystkie wiersze z punktu a dla których T = 20 min (1 z 2)
Mianownik:
Weź wszystkie wiersze, dla których T = 20 min (3 z 6).
3. P(T = 20min | L = Linia1 ⋀ Op = 10 EUR) = ? Czy tak jak poprzednio − tj. ze wszystkich
wierszy wybieramy L = Linia1 i Op= 10EUR itd.?
To może się wydawać śmieszne, ale we wszystkich podręcznikach i kursach są zwsze wcześniej
przygotowane tabele z prawodopodobieństwami, albo tabele z prawdopodobieństwami brzegowymi dla
poszczególnych wartości. Program komputerowy nie będzie specjalnie tworzyć tabeli brzegowej,
tylko będzie operował na danych podstawowych, stąd moje pytanie.
Z góry dziękuję i pozdrawiam serdecznie.
21 wrz 10:23
Trivial:
Twierdzenie Bayesa służy do "odwrócenia zależności". Jeżeli mamy bezpośredni dostęp do danych,
możemy od razu policzyć P(B|A) bez liczenia P(A|B).
Na przykład jeśli A jest zdarzeniem „u pacjenta występuje wysoka gorączka”, a B jest zdarzeniem
„pacjent ma grypę”, twierdzenie Bayesa pozwala przeliczyć znany odsetek gorączkujących wśród
chorych na grypę P(A|B) i znane odsetki gorączkujących P(A) i chorych na grypę P(B) w całej
populacji, na prawdopodobieństwo, że ktoś jest chory na grypę, gdy wiemy że ma wysoką gorączkę
P(B|A).
Źródło: Wikipedia.
Podstawowy wzór na prawdopodobieństwo warunkowe jest taki:
Co w języku SQL może być zapisane jako:
P(
A |
B) =
SELECT
(
SELECT count(*)
FROM tabela
WHERE A AND B) /
(
SELECT count(*)
FROM tabela
WHERE B);
Albo z tabelą tymczasową:
P(
A |
B) =
WITH
filtered AS (
SELECT *
FROM tabela
WHERE B
)
SELECT
(
SELECT count(*)
FROM filtered
WHERE A) /
(
SELECT count(*)
FROM filtered);
21 wrz 16:30
Trivial:
Poza tym, w przykładzie drugim masz błąd. W tabeli jest 2 wiersze, gdzie T = 20m, więc
| | 12*26 | | 1 | |
P(L = Linia1 | T = 20 min) = |
| = |
| |
| | 26 | | 2 | |
Ale można i jest o wiele prościej policzyć to ze wzoru
| | |{L = Linia1 ∧ T = 20 min}| | |
P(L = Linia1 | T = 20 min) = |
| |
| | |{ T = 20 min }| | |
| | |{ (L1,20E,20min) }| | | 1 | |
= |
| = |
| |
| | |{ (L1,20E,20min), (L2,20E,20min) }| | | 2 | |
21 wrz 16:55
Draken: Hmmmm....Dzięki wielkie.
Czyli odnosząc się do mojego przykładu wystarczy, że po prostu (przekładając na SQL):
Przykład 2 (P(L = Linia1 | T = 20min) będzie to:
SELECT
(
SELECT count(*)
FROM Loty Where Linia=Linia1
AND Spoznienie=20) /
(
SELECT count(*)
FROM Loty
WHERE Spoznienie=20);



Nie wierzę że to jest aż tak proste, a ja się tyle z tym męczyłem......
21 wrz 16:55
Draken: Co do błędu w treści − jasne teraz to zauważyłem.
Super, wielkie dzięki, nie sądziłem że to będzie AŻ tak łatwe do policzenia
21 wrz 16:56
Trivial: Tak, to jest aż tak łatwe.

Twoje tłumaczenie na SQL jest OK.
21 wrz 16:58
Draken: Ale to jest częste z algorytmami uczenia maszynowego − samo twierdzenie matematyczne jest ok,
jak przychodzi do implementacji na jakiś język programowania / konkretną technologię, to sens
się gubi i potem takie rzeczy wychodzą

Dzięki raz jeszcze
21 wrz 16:59