piątek, stycznia 27, 2017

Logistic Regression wykrywa clickbaity lepiej od Bayesa ;-)

Kiedyś sprawdzając który język jest szybszy używałem całkowania numerycznego, innym razem porównując języki programowania pisałem sobie programiki do wyświetlania planu lekcji.

Bawiąc się teraz Machine Learning'iem używam szukania clickbaitów jako problemu, który atakuję różnymi sposobami.

Użyłem już naiwnego klasyfikatora Bayesa, ostatnio zaś spróbowałem użyć logistic regression.

Bayes dawał sobie radę z rozpoznaniem 94% clickbaitów ze zbioru uczącego i 97.4% poprawnych artykułów.

Logistic regression daje sobie radę lepiej ;-) bo ma wykrywalność równą 100% dla obu przypadków ;-)
Jest jednak możliwe, że cierpi na overfitt.

We wszystkim wykorzystałem kod, który napisałem w ramach zabaw z kursem z Machine Learningu na Coursera.
Kod ten działa w GNU Octave, czyli klonie MathLab'a.

Jest różnica ;-)

Policzenie czy dany artykuł jest clickbaitem czy nie w Octave to:

sigmoid(xi*Theta)

a w JavaScript'cie:

function classify(vec2Classify) {
  var sum = theta[0];
  for (var i=0; i<vec2Classify.length; i++) {
    sum+=vec2Classify[i]*theta[i+1];
  }
  return sigmoid(sum);
}

Oba te fragmenty kodu zwrócą liczbę, która w razie jest większa niż 0.5 znaczy, że rozpoznano wejście jako clickbaita.

Nauka klasyfikatora odbywała się w Octave, ale że Octave działa tylko na wektorach/macierzach/skalarach to musiałem popełnić kawałek dla NodeJS, który przekonwertował zbiór uczący w macierz i zapisał ją w formacie zrozumiałym dla Octave (dość powiedzieć, że to było ponad 64 miliony liczb 0 i 1 ;-)).
Później zaś musiałem przekonwertować wynik z Octave do JavaScripta (tablica z 10330 liczb zmiennoprzecinkowych).

Jak dobrze pójdzie za jakiś czas zrobię wersję, która będzie działa w oparciu o sieci neuronowe ;-)

Źródła rozszerzenia do Chrome, które rozpoznaje clickbaity (w wersji z Bayesem i z Logistic Regression) jak zwykle na moim GitHub'ie :-)


Podobne postybeta
ClickbaitDetector - to działa :-)
Clickbait detector ;-) - czyli próbujemy użyć naiwnego klasyfikatora Bayesowskiego do rozpoznawania clickbaitów ;-)
Naiwny klasyfikator bayesowski nie jest jednak dobry do rozpoznawania clickbaitów ;-)
Dwie książki komputerowe na długi weekend :-)
Raspberry Pi to nie jest demon prędkości ;-)