eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.comp.programming › Klasyfikacja bayesowska stron kodowych
Ilość wypowiedzi w tym wątku: 13

  • 11. Data: 2010-08-04 19:19:44
    Temat: Re: Klasyfikacja bayesowska stron kodowych
    Od: "Borneq" <b...@a...hidden.pl>

    Użytkownik "Segmentation Fault" <c...@o...eu> napisał w
    wiadomości news:4c595e1a$0$2604$65785112@news.neostrada.pl...
    > A jak liczysz i porównujesz histogramy ?
    > Ja bym policzył "ile każdego znaczka", potem bym znormalizował
    > ( podzielił wystąpienia każdego znaczka przez ilość wszystkich znaczków
    > w tekście ). Przy 12.000 znaków "najmniejsza" liczba to będzie 0.000083,
    > więc jeszcze mieści się we float, na pewno w double.

    Najpierw przechodzę plik i zliczam wystąpienie znaku w tablicy 256 wordów.
    Więcej niż połowa pól tej tablicy jest zwykle zerowa. Mam
    prawdopodobieństwa, czyli ilość wystąpień znaków podzieloną przez np.12000.
    Prawdopodobieństwo to np. 1/100. Teraz gdy mnożę 1/100*1/100*..1/100 np.
    tysiąc razy otrzymuję liczbę mniejsza niż najmniejsza możliwa rzeczywista,
    dlatego potrzebna jest normalizacja. Normalizuję w ten sposób że ustawiam
    cechę na 1023 co oznacza że liczba staje się z przedziału (1;2) oraz sumuję,
    ile do kolejnych cech dodałem.
    Otrzymuję bardzo zdecydowane rozkłady prawdopodobieństw - jedynka dla klasy
    z którą się zgadza i liczby bardzo bliskie zera dla pozostałych klas. Kłopot
    jest z Unicodem który ma ten sam histogram niezależnie czy kolejność bajtów
    w znaku jest młodszy-starszy czy odwrotnie. Nie opłaca się robić tablicy par
    znaków zamiast znaków bo oznaczałoby to 256 krotne powiększenie tablicy
    (albo trochę mniej po odrzuceniu pustych i zorganizowaniu tego jako nie
    tablicy). Zamierzam zrobić dwie tablice po 256 znaków specjalnie dla
    Unicode - częstości parzystych i nieparzystych bajtów, z których to tablic
    program korzystałby gdyby zaklasyfikował już tekst jako Unicode.

    > Potem te znormalizowane histogramy porównywał bym np. licząc korelację
    > ( albo poeksperymentował bym z innymi metodami; wzorki tu:
    > http://opencv.willowgarage.com/documentation/histogr
    ams.html#comparehist

    Ciekawe, można by jeszcze porównywac dwa histogramy.

    Pozdrawiam


  • 12. Data: 2010-08-04 20:15:09
    Temat: Re: Klasyfikacja bayesowska stron kodowych
    Od: Segmentation Fault <c...@o...eu>

    On 08/04/2010 09:19 PM, Borneq wrote:
    > Użytkownik "Segmentation Fault" <c...@o...eu> napisał w
    > wiadomości news:4c595e1a$0$2604$65785112@news.neostrada.pl...
    >> A jak liczysz i porównujesz histogramy ?
    >> Ja bym policzył "ile każdego znaczka", potem bym znormalizował
    >> ( podzielił wystąpienia każdego znaczka przez ilość wszystkich znaczków
    >> w tekście ). Przy 12.000 znaków "najmniejsza" liczba to będzie 0.000083,
    >> więc jeszcze mieści się we float, na pewno w double.
    >
    > Najpierw przechodzę plik i zliczam wystąpienie znaku w tablicy 256
    > wordów. Więcej niż połowa pól tej tablicy jest zwykle zerowa. Mam
    > prawdopodobieństwa, czyli ilość wystąpień znaków podzieloną przez np.12000.
    > Prawdopodobieństwo to np. 1/100. Teraz gdy mnożę 1/100*1/100*..1/100 np.
    > tysiąc razy otrzymuję liczbę mniejsza niż najmniejsza możliwa
    > rzeczywista, dlatego potrzebna jest normalizacja.

    Ale dlaczego mnożysz tyle razy ?
    Czy nie wystarczy policzyć histogram, znormalizować i porównać go ze
    wzorcowymi, znormalizowanymi histogramami dla każdego z kodowań?
    I wybrać "najbardziej podobne" kodowanie ?

    ( Znormalizować znaczy żeby sumował się do 1, jak rozkład
    prawdopodobieństwa )

    Wzorcowy histogram może być z dużego tekstu; jeśli histogramy z różnych
    długich tekstów w tym samym języku i kodowaniu będą się dużo różnić, to
    i tak pomysł z histogramem nie zadziała ).


    Normalizuję w ten
    > sposób że ustawiam cechę na 1023 co oznacza że liczba staje się z
    > przedziału (1;2) oraz sumuję, ile do kolejnych cech dodałem.
    > Otrzymuję bardzo zdecydowane rozkłady prawdopodobieństw - jedynka dla
    > klasy z którą się zgadza i liczby bardzo bliskie zera dla pozostałych
    > klas. Kłopot jest z Unicodem który ma ten sam histogram niezależnie czy
    > kolejność bajtów w znaku jest młodszy-starszy czy odwrotnie. Nie opłaca
    > się robić tablicy par znaków zamiast znaków bo oznaczałoby to 256 krotne
    > powiększenie tablicy (albo trochę mniej po odrzuceniu pustych i
    > zorganizowaniu tego jako nie tablicy). Zamierzam zrobić dwie tablice po
    > 256 znaków specjalnie dla Unicode - częstości parzystych i nieparzystych
    > bajtów, z których to tablic program korzystałby gdyby zaklasyfikował już
    > tekst jako Unicode.
    >
    >> Potem te znormalizowane histogramy porównywał bym np. licząc korelację
    >> ( albo poeksperymentował bym z innymi metodami; wzorki tu:
    >> http://opencv.willowgarage.com/documentation/histogr
    ams.html#comparehist
    >
    > Ciekawe, można by jeszcze porównywac dwa histogramy.
    >
    > Pozdrawiam


  • 13. Data: 2010-08-05 11:43:33
    Temat: Re: Klasyfikacja bayesowska stron kodowych
    Od: "Borneq" <b...@a...hidden.pl>

    Użytkownik "Segmentation Fault" <c...@o...eu> napisał w
    wiadomości news:4c59ca48$0$19184$65785112@news.neostrada.pl...
    > Ale dlaczego mnożysz tyle razy ?
    > Czy nie wystarczy policzyć histogram, znormalizować i porównać go ze
    > wzorcowymi, znormalizowanymi histogramami dla każdego z kodowań?
    > I wybrać "najbardziej podobne" kodowanie ?

    Patrzyłem na różne funkcje dotyczące histogramów na przykładzie
    rozpoznawania spamu. Występują małe różnice w d(H1,H2) i nie zachowują się
    jak trzeba (różnica między spamem a niespamem ma być większa niż między nimi
    a testowym). Korelacja raczej sprawdza czy wykres punktów (Xi,Yi) leży
    bliżej prostej y=x czy y=-x, u mnie to nie występuje. Za to Bayes nadaje się
    do tego, mamy wielokrotne mnożenie prawdopodobieństw i kolosalne różnice
    między najlepszym histogramem a innymi.
    Nie stosuję wzoru
    http://en.wikipedia.org/wiki/Bayesian_spam_filtering
    #Combining_individual_probabilities
    nie wiem czy jest dobry i skąd się wziął a także jest niepotrzebny skoro
    możemy po prostu mnożyć prawdopodobieństwa z histogramu przez siebie.


strony : 1 . [ 2 ]


Szukaj w grupach

Szukaj w grupach

Eksperci egospodarka.pl

1 1 1

Wpisz nazwę miasta, dla którego chcesz znaleźć jednostkę ZUS.

Wzory dokumentów

Bezpłatne wzory dokumentów i formularzy.
Wyszukaj i pobierz za darmo: