matematykaszkolna.pl
twierdzenie bayesa dane tabelaryczne Draken: rysunekWitam 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) 
 12 * 26 

 36 
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:
 P(A∧B) 
P(A|B) =

→ przykład: 1020
 P(B) 
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...... emotka
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ą emotka Dzięki raz jeszcze
21 wrz 16:59