Latarnik Wyborczy – nie ufaj wynikom

Już w najbliższy weekend wybory prezydenckie. Kampania z przyległościami w toku, tradycyjnie niewiele się dzieje merytorycznego, bardziej plebiscyt popularności kandydatów. Media się cieszą, bo „to ważne”. Ponieważ ludzie mało naprawdę (AKA dogłębnie) interesują się polityką, powstały narzędzie mające pomóc w wyborze kandydata. Chyba najpopularniejszy jest Latarnik Wyborczy.

Już 22 kwietnia VaGla na Twitterze pokazał coś, co mną wstrząsnęło. Dla nie mam zdania dla wszystkich kwestii system pokazuje kandydata. W twittnięciu jest napisane, że wynik mylący, bo B. Komorowski nie wziął udziału[1], ale zupełnie nie o to chodzi. Wyniki są mylące, bo traktują nie mam zdania kandydata i nie mam zdania ankietowanego jako zbieżność poglądów. To błąd, bo nie mam zdania nie wskazuje tylko brak stosunku do danej rzeczy, ale obejmuje także zupełną niewiedzę o jej istnieniu oraz totalnie inne rozwiązania.

Weźmy na przykład stwierdzenie (nie ma takiego w pytaniach LW i celowo takie biorę) podatek VAT powinien być obniżony. W tym momencie odpowiedź nie mam zdania obejmuje zarówno niewiedzę co to podatek VAT, zmianę zasad opodatkowania w ogóle (np. likwidacja VAT) jak i faktyczną obojętność.

Żeby sobie unaocznić jak fatalny jest algorytm Latarnika Wyborczego, proponuję spojrzeć na wyniki (dziś rano), gdzie dla wszystkich pytań jest nie mam zdania oraz kwestia mało ważna:

Latarnik Wyborczy nie mam zdania, mało ważne

To samo, tylko ze zmianą wagi kwestii na ważna:

Latarnik Wyborczy nie mam zdania, ważne

I wisienka na torcie. Wszędzie nie mam zdania, a kwestia bardzo ważna:

Latarnik Wyborczy nie mam zdania, bardzo ważne

Nie chodzi zatem o samą kwestię doboru pytań, choć tu oczywiście jest największe pole do wypaczenia wyników. Zakładam, że pytania są sensowne. Oczywiście ciężko jest zredukować całe spektrum poglądów kandydata do raptem 20 kwestii, ale taki urok tego typu ankiet.

Natomiast to, co się dzieje w algorytmie LW jest IMO co najmniej dziwne. Po pierwsze to, o czym pisałem wyżej. Nie mam zdania powoduje przewagę określonych kandydatów. Ja bym po prostu odrzucił te odpowiedzi i normalizował wagę pozostałych (najprostsze, nieidealne).

Po drugie, ustawienie bardzo ważne powoduje jak widać wypłaszczenie wykresu. To też słabość algorytmu, bo jeśli działa tak jak przypuszczam, to sprowadza się do przesunięcia wyniku. No i niska istotność danego pytania to spadek wprowadzenie mnożnika 0,5 dla zgodności, a wysoka istotność – wprowadzenie mnożnika 2. Czyli tak naprawdę zmiana istotności w górę jest bardziej znacząca, niż zmiana w dół. Może zamierzone, ale IMO bezpieczniej byłoby przesuwać o stałą wartość. Typu mało istotne pytanie to 75%, bardzo istotne – 125%. Czy tam 50% i 150%, odpowiednio, ale nie nagły boost do 200%…

Last but not least… Teoretycznie między mało ważne a ważne jest po prostu mnożnik, przynajmniej tak wygląda dla większości kandydatów. Ale już JKM w pierwszym ma 26%, w drugim 50% (podobnie jak ci kandydaci, którzy mieli w pierwszym 25%), natomiast w trzecim spada na 95%. Jako jedyny. Bug w algorytmie? A może cichy nerf JKM?

Pozytyw jest taki, że LW dostarcza gotowe odpowiedzi poszczególnych sztabów. Jeśli ktoś ma ochotę, to łatwo można przerzucić do tabeli i zrobić własną, niezależną, poprawioną wersję LW. Choćby w arkuszu kalkulacyjnym. Tymczasem nie sugerowałbym się zbytnio wynikami LW…

[1] Obecne wyniki są inne, bo 24. kwietnia Latarnik Wyborczy dodał odpowiedzi B. Komorowskiego.

UPDATE: Latarnik Wyborczy przyjął do wiadomości uwagi nt. algorytmu i wyjaśnia (może niezupełnie mnie to przekonuje, ale zapewne przyczyna jest trafnie wskazana, a moje niezrozumienie pewnie rozbija się o detale algorytum) z czego wynika różnica w przypadku JKM. Szczegóły w dyskusji na Twitterze.

UPDATE2: Siadłem i popełniłem własną wersję. Oparta o arkusz kalkulacyjny, brzydka (bez frontendu, bez odporności na błędy), ale algorytm wydaje się działać poprawnie. Czas realizacji (wliczając przeklepanie odpowiedzi kandydatów z LW, na co zeszła większość czasu – 45 min). Publikacja prawdopodobnie jutro.

Rzeczywistość przerasta wyobrażenia

Przeczytałem ostatni wpis na blogu Blox i trochę mi wszystko opadło. Po kolei, rozwijając komentarz zamieszczony pod ww. wpisem:

Edge Rank

Ze swoim rzekomym 100k parametrów Edge Rank jest IMO niezłą klapą totalną porażką. Z tego co widzę u mnie na FB, cały algorytm sprowadza się do trzymaj usera przy kompie czyli jak zareagował, to dorzuć mu więcej tego samego. Bąbelkowanie ( dontbubble.us/ ) w najlepszym wydaniu. Mnie osobiście wkurza takie podejście, podobnie jak opisywane u Boniego (nie mogę znaleźć wpisu, znajdę to poprawię) bardzo podobne podejście przy reklamach. W skrócie: klient wpisał w wyszukiwarkę kasa fiskalna, to od tej pory pojawia mu się to cały czas w reklamach. Mimo, że kasę fiskalną kupił dwa tygodnie temu.

Bardzo kojarzy mi się to z wpadnięciem w jakieś ekstremum lokalne przy poszukiwaniu optimum z wykorzystaniem algorytmów genetycznych. Niby dobrze (zwł. lepiej, niż losowo), ale tak naprawdę bardzo niedobrze. Oczekiwałbym jednak jakiejś finezji typu skoro ktoś interesuje się X, to za chwilę zacznie Y. No i oczywiście algorytm wie, kiedy to za chwilę nastąpi. Albo skoro użytkownik czytał już N wpisów/czasu o X, to się nasycił. Tymczasem rozwiązań tego typu brak, zamiast tego bombardowanie do znudzenia tym samym.

Publikowanie wpisów o określonych porach

Gdy pisałem wpis o pięciu sposobach na poprawienie zarobków, to raczej się nabijałem, że ktoś będzie sobie zawracał tym głowę w kontekście bloga, ale właśnie w tym miejscu rzeczywistość przerasta wyobrażenia. Nie tylko temat kiedy publikować na Facebooku jest opisywany w wielu artykułach czy nawet FAQ, ale nawet istnieją serwisy (Sotrender), które za drobną opłatą typu 13 euro czy 49 zł miesięcznie zbadają tę aktywność u naszych fanów. Znaczy naszego profilu na FB.

Pomysł z dorzuceniem uwzględnienia prognozy pogody w opisany w linkowanym wyżej wpisie sposób nie wygląda już wcale na niedorzeczny. Przecież mamy dość dokładne dane dotyczące położenia geograficznego czytelników. Do tego historia pogody dla miast, prognoza pogody (dowolny serwis, masa tego…) i załatwione. Z moich obserwacji z pracy u ISP wynika, że korelacja między pogodą a wykorzystaniem internetu przez użytkowników końcowych jak najbardziej istnieje. Zresztą, daje się to zauważyć nawet na blogu. Niezbyt skomplikowane do napisania, zresztą.

W sumie mam Piwika, więc mógłbym się pobawić w wyciąganie danych dotyczących miejscowości użytkowników stamtąd… Plus prosta baza z pogodą (historia) i gotowe. Tylko niestety widzę, że darmowa wersja bazy GeoIP dla Polski ma skuteczność rozpoznawania dla miast na poziomie 26% dla przybliżenia 50 km i 32% dla 100 km. Trochę niska ta skuteczność… Komercyjna wersja ma odpowiednio 58% i 70% i wtedy może to mieć sens…

Facebook to nowe Google

Pamiętam, jak zupełnie niedawno jedyną wyrocznią w sprawach tego, co jest dobre a co jest złe w sieci było Google. Wszyscy patrzyli, co Google lubi, co promuje w wyszukiwaniach (ostatnio: wersje mobilne). Oczywiście na Google nadal ludzie patrzą, ale to co zobaczyłem odnośnie FB przypomniało mi o wpisie, gdzie pisałem, że Facebook to nowy internet. I faktycznie, ilość treści i narzędzi pomocniczych pozwala sądzić, że FB w dziedzinie social media jest już tym, czym Google w „reszcie sieci”.

Nawet nie to, że się tego wszystkiego nie spodziewałem, ale… już?

Docker.io Debian Jessie HOWTO

Parę dni temu pojawiła się nowa wersja Debiana o nazwie Jessie. O upgrade i drobnych i niedrobnych perypetiach napiszę innym razem, dziś krótkie rozwiązanie problemu, który pojawia się dość często na IRCu. Chodzi o to, że pakiet docker.io nie jest dostępny w Jessie. A ludzie chcą dockera używać. Widzę trzy rozwiązania:

1. Pobranie pakietu docker.io w wersji dla Debiana unstable.

Rozwiązanie najprostsze, ale potencjalnie najbardziej problematyczne. Wchodzimy na https://packages.debian.org/sid/docker.io wybieramy architekturę, następnie mirror, pobieramy paczkę deb (akualnie jest to docker.io_1.3.3~dfsg1-2_amd64.deb). Instalujemy ją w systemie, mniej lub bardziej ręcznie spełniając zależności.

2. Dodanie repozytoriów unstable w systemie oraz odpowiedni pinning pakietów.

Po pierwsze czytamy dokładnie i ze zrozumieniem jak działa pinning pakietów (man apt_preferences), żeby nagle nie zaktualizowało systemu do unstable, albo nie pomieszało pakietów ze stable i unstable przy spełnianiu zależności. Następnie dodajemy wpisy dla unstable w sources.list. Aktualizujemy listę pakietów i docker.io powinien być dostępny do instalacji.

3. Samodzielnie robimy backport pakietu docker.io dla Jessie.

Wersja najdoskonalsza, bo nie robi bałaganu związanego z mieszaniem wersji stable i unstable w systemie. Po pierwsze zaopatrujemy się w debianowe źródła pakietu. Można dodać wpisy deb-src dla unstable w sources.list, zaktualizować listę pakietów. Następnie:

cd /usr/srcwajig source docker.iocd docker.io-1.3.3~dfsg1/wajig builddepends docker.iodpkg-buildpackage
cd ..
wajig install docker.io_1.3.3~dfsg1-2_amd64.deb

W tym momencie powinniśmy mieć zainstalowanego dockera w systemie. Nie sprawdzałem, czy działa, ale zarówno metoda druga jak i trzecia powodują, że pakiet instaluje się czysto, więc raczej będzie działać. Przykłady dla wersji 1.3.3, być może z czasem może się coś zmienić.