seth: Artikel-Review: Bayesscher Spam-Filter für Weblogs

Beitrag lesen

gudn tach!

Da kommt dann in zweierlei Hinsicht Müll raus:
Erstens kann (int)round(100*exp($irgendwas)) niemals eine negative zahl ergeben (dachte ich zumindest).
Zweitens kommt die Spam-Wahrscheinlichkeit 0 in den Spams angeblich in 99% aller Fälle vor.

exp(x) waechst *trommelwirbel* exponentiell. ;-)
durch die konvertierung in int, werden zahlen, die groesser als 2^31-1 sind, nicht mehr so verwaltet, wie man's gerne als normaler mensch haette.
siehe http://php.net/int.
in deinem fall genuegt es schon, wenn $irgendwas groesser als ln((2^31-1)/100) ist, also z.b. 17. ab dann kommt nie wieder das richtige ergebnis heraus, sondern irgendeine zahl im int-bereich.

loesungsansaetze:

  1. vermeide grosse zahlen (z.b. einfach durch weglassen von exp, ist eh bloss eine skalierung),
  2. vermeide int oder
  3. binde ein bignum-paket ein (laaaangsaaaam)

wenn du exp weglaesst, macht das ja nix, dann rechnest du eben mit ln(V) und achte darauf, dass der ln nicht auf V angewendet wird, wenn V=0 ist.
das wuerde bedeuten:

ln(V) ist aus dem intervall (-\infty,\infty), also ganz R.
bei ln(V)>0 ist die wahrscheinlichkeit groesser, dass es spam ist.
bei ln(V)<0 ist die wahrscheinlichkeit groesser, dass es ham ist.
ln(V)=0 macht einen nicht schlauer.

eine ganz andere moeglichkeit waere, nicht den quotienten, sondern die differenz zu bilden, dann drueckt man sich zumindest vor grossen zahlen, da V somit nur im intervall [-1,1] liegen kann. ob das praktikabl ist, weiss ich allerdings aus dem stegreif nicht.

prost
seth

0 56

Artikel-Review: Bayesscher Spam-Filter für Weblogs

Alexander Brock
  • programmiertechnik
  1. 0
    Felix Riesterer
    1. 0
      Mathias Brodala
      1. 0
        Alexander Brock
        1. 0
          Mathias Brodala
          1. 0
            Alexander Brock
  2. 1
    Robert Bienert
    1. 0
      Alexander Brock
      1. 1

        kleine anmerkung zum multiplikations-zeichen

        seth_not@home
        • sonstiges
        1. 0
          Alexander Brock
  3. 6
    Vinzenz Mai
    1. 1
      seth
      1. 0
        Alexander Brock
        1. 1
          seth_not@home
        2. 1
          Blaubart
          1. 1

            kleine anmerkung zur kommasetzung

            seth_not@home
            1. 1
              Auge
              1. 0
                seth
                • sonstiges
                1. 0
                  Auge
                  1. 0

                    ole, ole, metadiskussionen ueber komma-diskussionen

                    seth
                    1. 0

                      "ole, ole" ... die alten Schweden, die!

                      Auge
      2. 1
        Blaubart
        1. 1
          seth_not@home
          1. 1
            Blaubart
    2. 0
      Alexander Brock
      1. 3
        Vinzenz Mai
  4. 2
    seth
    1. 0
      Alexander Brock
      1. 1
        seth_not@home
        1. 0
          Alexander Brock
          1. 1
            seth
            1. 0
              Alexander Brock
              1. 1
                seth_not@home
                1. 0
                  Alexander Brock
                  1. 1
                    seth_not@home
                    1. 0
                      Alexander Brock
                      1. 0
                        seth_not@home
                        1. 0
                          Alexander Brock
                          1. 1
                            seth
                            1. 0
                              Alexander Brock
  5. 0
    Alexander Brock
    1. 1
      Robert Bienert
      1. 0
        Alexander Brock
        1. 1
          Robert Bienert
          1. 0
            Alexander Brock
            1. 1
              seth
              1. 0
                Alexander Brock
                1. 1
                  seth
                  1. 0
                    Alexander Brock
                  2. 0
                    O'Brien
    2. 1
      Der Dicki
      1. 0
        Alexander Brock
    3. 0
      Christian Seiler
      1. 0
        Alexander Brock
        1. 0
          Christian Seiler
          1. 0
            Alexander Brock