Friday, August 22, 2014

KawalSuara: Hitung Suara Dengan CrowdSourcing Tanpa Supervisi? Kok Bisa?

Seperti diketahui pada pilpres 2014 yang lalu KPU merilis hasil scan formulir C1 yang berisi data perolehan suara dari masing-masing TPS di seluruh Indonesia yang berjumlah lebih dari 478,000. Karena berupa hasil scan, sulit bagi masyarakat untuk menghitung rekap perolehan suara. Untuk itu aplikasi berbasis web KawalSuara (http://kawal-suara.appspot.com) dibuat agar masyarakat dapat bergotong royong (crowdsourcing) mengentri data perolehan berdasarkan scan formulit C1 tersebut ke dalam database. Dengan demikian perolehan suara dapat direkap ke semua tingkat (kelurahan, kecamatan, kabupaten, provinsi & nasional). 

Keunikan KawalSuara adalah sistem gotong royong yang sangat terbuka:
  • Setiap orang dapat berpartisipasi tanpa pendaftaran,
  • Semua kontribusi dilakukan secara anonim
  • Tidak ada supervisi oleh sekelompok orang dengan hak khusus (special privilege)
Keterbukaan ini justru menjadi sumber pertanyaan: Bagaimana memastikan akurasi data karena orang bisa saja mengisi data salah baik sengaja maupun tidak.

Artikel ini akan mencoba menjelaskan bagaimana KawalSuara menerapkan mekanisme validasi yang sederhana namun efektif untuk mendeteksi entri-entri yang salah. Efektifitas dari mekanisme ini terbukti dengan hasil yang sangat mendekati hasil resmi dari KPU (selisih 0.37% pada tanggal 22 Juli 2014). 

Cara Kerja

Ada dua prinsip utama di sistem Kawal-Suara untuk memastikan akurasi dari data entri:
  • Pemilihan formulir C1 secara acak
    Hal ini untuk menghindari bias. Dengan pemilihan formulir secara acak, persentase perolehan suara akan cepat mencapai konvergensi (kurang dari 24 jam setelah Kawal-Suara dimulai, persentase perolehan suara sudah stabil dan tidak berfluktuasi lebih dari 1%).
  • Mekanisme verifikasi untuk mendeteksi entri yang salah.
    Sistem akan mengusahakan agar setiap TPS dientri lebih dari satu kali. Bila ada entri yang berbeda maka yang dipilih adalah angka yang paling banyak dientri (nilai modus tertinggi). Misal sebuah TPS di-entri 4 kali. Data perolehan suara utk salah satu capres yang dientri adalah 125, 500, 175 dan 125. Maka yang dipilih adalah 125. Asumsinya adalah kemungkinan data entri benar lebih besar daripada data entri salah.
Sebagai implementasi kedua prinsip di atas, Kawal-Suara menyediakan dua jenis mekanisme kontribusi dari relawan:
  • Entri Data
    Relawan mengentri data berdasarkan formulir C1 yang dipilih sistem. Sistem akan memilih formulir C1 secara acak namun dengan prioritas berdasarkan nilai modus total yang terkecil (nilai modus dihitung untuk setiap jenis data: suara Prabowo, suara jokowi, suara sah, & suara tidak sah).

    Sebuah TPS yang belum pernah dientri akan mempunyai nilai modus total = 0. Semakin banyak sebuah TPS dientri dengan data yang sama, maka nilai modusnya akan semakin tinggi. Perlu diperhatikan bahwa, sebuah TPS tidak akan pernah keluar dari daftar antrian untuk Entri Data. Jadi yang terjadi adalah saat nilai modus bertambah, TPS tersebut akan dilempar ke belakang antrian. Dengan demikian pada dasarnya proses data entri tidak pernah berakhir. Selama masih ada yang melakukan data entri, antrian tersebut akan terus berputar.
  • Verifikasi Data
    Relawan mengecek hasil entri dari relawan lain dan memberi tanda:
    • “BENAR” - efeknya adalah sama dengan mengentri dengan data yang sama persis, sehingga menguatkan tingkat kepercayaan dari entri data sebelumnya.
    • “SALAH” -- efeknya tidak serta merta menghapus data yang dientri sebelumnya, melainkan sekedar mereset nilai modus menjadi 0, sehingga menempatkan TPS tersebut kembali ke antrian Entri Data dengan prioritas tinggi. Diharapkan saat entri berikutnya akan diisi dengan data yang benar.
Sama seperti Entri Data, formulir C1 yang akan diverifikasi dipilih oleh sistem secara acak dan dengan prioritas yang berbanding terbalik dengan nilai modus.

Sebenarnya mekanisme Verifikasi Data tidak benar-benar diperlukan. Karena hanya dengan mekanisme Entri Data pun lama-kelamaan setiap TPS akan dientri berkali-kali dan akan terverifikasi dengan sendirinya (Definisi terverifikasi adalah nilai modus le bih dari 1 utk setiap jenis data).  Hanya saja dikhawatirkan jika hanya ada mekanisme Entri Data, antusiasme relawan akan sangat berkurang jika jumlah TPS yang telah dientri telah mencapai 100% meskipun sebagian besar belum terverifikasi. Hal ini akan mengurangi tingkat kepercayaan akan hasil keseluruhan.

Dengan adanya mekanisme Verifikasi, jumlah TPS yang terverifikasi akan cenderung mengikuti jumlah yang terentri. Dengan demikian tingkat kepercayaan akan hasil perhitungan dapat terus dijaga. Sebagai mekanisme keamanan tambahan, setiap alamat IP hanya dapat mengentri (dan memverifikasi) data satu kali per TPS.
  
Serangan Terstruktur, Sistematis & Masif

Mekanisme verifikasi di atas mendapat ujian ketika KawalSuara menerima flood attack, di mana dalam jangka waktu singkat muncul ribuan entri yang salah. Sebagian diantaranya dapat dipastikan di-generate oleh bot (IP tertentu melakukan entri  dengan data invalid hampir setiap detik). Dampak dari serangan ini persentase perolehan suara sempat berfluktuasi hingga hampir 1%.

Selama serangan praktis tidak ada tindakan yang dilakukan admin selain menyerukan kepada para relawan untuk lebih giat melakukan entri dan verifikasi data. Dalam waktu relative singkat (2-3) jam, persentase perolehan suara kembali ke posisi “normal”.
Analisa setelah kejadian berhasil menemukan sejumlah alamat IP yang menghasilkan setidaknya 15,000 entri yang invalid. Sebagian besar berhasil terdeteksi oleh mekanisme yang ada, namun diperkirakan ada beberapa ratus entri invalid yang “lolos” dan dianggap sebagai entri yang terverifikasi. 


Hal ini diperkirakan karena adanya kerja sama antara para pengganggu tersebut.  Sebagian pelaku bertugas melakukan entri data yang salah, sementara sebagian lagi melakukan verifikasi di mana jika ditemukan entri yang salah, mereka justru menandai entri tersebut sebagai entri yang “BENAR”. Akibatnya entri tersebut akan terlempar ke belakang antrian karena nilai modusnya bertambah. Akan butuh waktu lama sebelum entri tersebut mendapat kesempatan entri/verifikasi ulang tanpa intervensi.

Hal ini bisa dianggap sebagai kelemahan dari adanya mekanisme verifikasi data. Meskipun demikian, dampak dari usaha manipulasi ini sangat terbatas, pertama karena pemilihan formulir secara acak oleh sistem baik untuk entri maupun verifikasi, dan karena jumlah entri yang valid masih jauh lebih banyak dari entri invalid.

Setelah kejadian ini sistem KawalSuara diperkuat dengan mekanisme keamanan sebagai berikut:
  • Blokir IP untuk repeat offender.
  • Heuristics untuk menolak entri yang jelas-jelas tidak valid (misal jumlah suara lebih dari 900).

Hasil Perhitungan

Hingga KPU mengumumkan perolehan suara resmi tanggal 22 Juli, KawalSuara memang baru berhasil mengentri (dan memverifikasi) data dari 284,479 TPS (59.4%). Meskipun demikian persentase perolehan suara yang dihitung sangat mendekati hasil dari KPU. Sebagai perbandingan ditampilkan pula hasil perhitungan suara oleh KawalPemilu (http://www.kawalpemilu.org)


Prabowo-Hatta
Jokowi-JK
KPU
46.85%
53.15%
KawalSuara
47.22%
52.78%
KawalPemilu
46.99%
53.01%
 
Namun perlu diperhatikan, KPU tidaklah merekap langsung dari scan C1. Melainkan berdasarkan proses rekapitulasi berjenjang mulai dari kelurahan, kecamatan, hingga nasional. Sehingga meskipun entri data dengan cara crowdsourcing bisa 100% akurat, tetap akan ada perbedaan dengan hasil perhitungan resmi antara lain karena kesalahan2 pengisian formulir C1 (yang banyak ditemukan) yang diperbaiki terutama di tingkat kelurahan dan kecamatan, pemungutan suara ulang di beberapa daerah, dan masih adanya TPS yang belum tersedua scan formulir C1. 

Ukuran akurasi lainnya adalah dengan menghitung persentase TPS yang berhasil dientri dengan benar. Sayangnya KPU tidak merilis rekap C1 mereka. Untuk kita menggunakan data dari KawalPemilu sebagai pembanding. Data diambil dari KawalPemilu per tanggal 5 Agustus 2014.

Seperti diketahui, KawalPemilu juga memanfaatkan jasa relawan untuk melakukan data entri formulir C1. Perbedaannya KawalPemilu menggunakan proses rekrutmen untuk mendapatkan relawan yang diasumsikan dapat dipercaya. Dengan demikian data dari KawalPemilu dianggap sebagai golden standard untuk menentukan tingkat akurasi dari KawalSuara.

Dari hasil perbandingan ditemukan 3233 TPS dari 284,479 TPS (1.14%) yang telah dientri di KawalSuara dengan data berbeda . Sebagai catatan, yang dibandingkan hanyalah data perolehan suara masing-masing capres. Dari 3233 TPS tersebut, 636 di antaranya belum dientri di KawalPemilu (Suara Prabowo & Jokowi keduanya 0). Ada dua kemungkinan: pada saat dientri scan formulir C1 memang belum tersedia atau karena scan formulir C1 halaman 4 tertukar dengan halaman lain yang menyebabkan pengentri mengira tidak ada data.

Dengan demikian yang benar2 menunjukkan ada perbedaan adalah di 2597 TPS (0.91%). Hasil pemeriksaan secara acak diperkirakan ada 4 macam penyebab perbedaan tersebut:
  • Unsur Kesengajaan
    Ini adalah hasil serangan seperti yang telah dijelaskan di atas
  • Unsur Ketidak-sengajaan
    Dalam banyak kasus antara scan C1 dan data yang dientri hanya berbeda 1 digit. Tidak tertutup kemungkinan ini kesalahan ketik yang tidak disengaja.
  • Tulisan yang tidak jelas   
    Cukup banyak juga hasil scan yang tidak jelas atau memang tulisan yang tidak jelas. Terkadang ini menyebabkan data entri yang salah.
  • Data dari KawalPemilu tidak akurat
    KawalPemilu pun ternyata tidak sepenuhnya terlepas dari masalah data entri yang salah. Bisa karena ketidaksengajaan, tapi tidak tertutup kemungkinan ada relawan yang “nakal”.

Untuk poin satu sampai tiga, secara teori seharusnya mekanisme verifikasi akan banyak mendeteksi hal tersebut. Namun dalam prakteknya masih juga ada yang lolos. Seperti dijelaskan sebelumnya hal ini bisa disebabkan karena ada yang sengaja memberi tanda “BENAR” untuk entri yang salah. Selain karena proses verifikasi yang sangat cepat dan dalam sebagian besar kasus entri data sudah benar, bukan tidak mungkin hal ini menyebabkan turunnya ketelitian relawan hingga tidak sengaja membenarkan entri yang salah.


Mengapa Bisa (Relatif) Akurat?

Dalam beberapa kesempatan saya menyampaikan bahwa sistem KawalSuara ini akan bekerja dengan baik jika lebih banyak orang jujur yang mengentri dibandingkan orang tidak jujur. Salah satu tujuan saya mengatakan ini tentunya adalah untuk memotivasi para relawan.  Dan ini memang sangat masuk akal. Jika probabilitas entri benar lebih besar dari entri salah (entri oleh orang jujur lebih banyak dari entri oleh orang tidak jujur), maka untuk jumlah entri cukup banyak frekuensi entri yang benar akan cenderung lebih besar dari pada frekuensi entri salah. 

Jadi meskipun orang jujur hanya sedikit lebih banyak dibanding yang tidak jujur asalkan entri data bisa dilakukan terus menerus, cepat atau lambat hasil perhitungan akan menuju konvergensi (i.e. semakin mendekati hasil sebenarnya).

Tapi secara teori sebenarnya syarat untuk menuju konvergensi bahkan jauh lebih mudah lagi. Yaitu probabilitas nilai yang benar dientri lebih besar daripada probabilitas dientrinya nilai-nilai yang lain.

Jika S adalah himpunan seluruh nilai yang mungkin, sedangkan z adalah nilai yang benar maka konvergensi dapat dicapai jika

               P(z) > P(x)           untuk semua x (elementof) S dan x ≠ z

Logikanya adalah dua orang jujur akan cenderung mengisi angka yang sama, sedangkan dua orang tidak jujur (atau orang jujur yang kurang teliti) kecil kemungkinannya mengisi angka yang sama. 

Secara umum P(z) akan jauh lebih besar jika diasumsikan P(x) adalah sama untuk semua  x (elementof) S. Hal ini S mempunyai banyak anggota (untuk kasus pilpres  S adalah himpungan bilangan bulat dari 0 sampai 800).  

Sebagai contoh jika P(z) = 0.5 (dari seluruh relawan hanya setengah yang jujur), maka P(x) = (1 – 0.5) / 800 = 0.000625. Dengan demikian cukup dua orang saja menulis angka yang sama, kemungkinan sangat besar bahwa angka tersebut adalah angka yang benar.

Memang ada kasus tertentu di mana asumsi di atas tidak berlaku, yaitu jika terjadi serangan terstruktur dan sistematis di mana sejumlah orang tidak jujur sepakat mengentri angka salah yang sama. Sebagaimana telah disebutkan sebelumnya, diperlukan mekanisme tambahan untuk mengurangi resiko hal ini yaitu dengan pemilihan formulir secara acak, pembatasan entri per TPS dari satu IP, dan fitur-fitur keamanan tambahan lainnya.


Apa Yang Bisa Diperbaiki?

Kelemahan utama  sistem crowdsourcing yang terbuka adalah perlunya usaha ekstra untuk memvalidasi seluruh data entri karena relawan tidak bisa diasumsikan semuanya terpercaya. Dalam kasus KawalSuara jumlah total kontribusi (entri data dan verifikasi data) mencapai lebih dari 730,000. Seandainya semua kontribusi itu dianggap valid tentunya lebih dari cukup untuk entri data 478,000 TPS. Namun karena rata2 setiap TPS perlu lebih dari 2 kontribusi agar dianggap terverifikasi, maka perhitungan baru mencapai hampir 60%.

Mungkinkah efisiensi sistem ini ditingkatkan? Jawabnya sangat mungkin. Perlu diperhatikan bahwa dengan sistem yang sekarang, semua kontribusi dianggap memiliki tingkat kepercayaan yang sama. Artinya meskipun berdasarkan histori dapat diketahui bahwa seluruh entri dari IP tertentu adalah tidak valid, entri berikutnya dari IP tersebut tetap dianggap sama terpercayanya dengan entri dari relawan lainnya. Seharusnya histori tersebut dapat digunakan untuk menentukan tingkat kepercayaan seorang kontributor (berdasarkan alamat IP). Dengan demikian satu entri dari kontributor yang terpercaya mungkin sudah cukup untuk menganggap entri tersebut valid. Sebaliknya beberapa entri dengan angka yang sama sekalipun tapi datang dari beberapa kontributor yang tidak dapat dipercaya, tidak menjadikan entri tersebut valid. 


Tulisan saya berikutnya akan mencoba mengembangkan ide ini lebih lanjut (kalau sempat :)).

Saturday, June 7, 2014

"Edge of Tomorrow" Explained -- with Infographics


This latest sci-fi offering from Tom Cruise is a rare gem. It has all the ingredients of a great summer blockbuster and then more. Sure it’s got cool exoskeleton suit, lots of explosion and exotic aliens. But it also has interesting characters with good character development and surprisingly intelligent narrative. I've always been a sucker for movies involving time travel, especially time loops. So I usually end up over-analyzing the plots to see whether they make sense based on their own logic and premises. 

It’s the same case with "Edge of Tomorrow". With the premise of "Groundhog Day" meets "Starship Troopers", the plot can get quite convoluted. Throughout most of the movie, the plot is pretty air-tight. However, the ending left some viewers a bit disappointed. While I personally enjoy the ending, I can see why many people think it does not make much sense. In the first glance it does feel like it is breaking its own rule. Some say it's just lazy scriptwriting and yielding to pressures to come up with a happy ending. 

However, after long contemplation and being immersed in deep thought, I think I have found an explanation that may – well – explain how the ending came to be. What I am about to tell you may sound crazy. But the longer I talk, the more rational it gets. *wink*


SPOILER ALERT!!!
In case it's not clear already, this article will be full of spoilers and even more expositions that only true geek could care. 

The First Loop
Let’s start with the “fact” mentioned in the movie:
  • ·         If you kill an Alpha, time will be reset to a certain point in the past.
This is how the Mimics are always able to stay one step ahead of the humans. They learn from their mistakes and adapt accordingly in the next iteration. It seems that the only one aware of the loop is the organism that gets killed, while the rest of the universe is oblivious to it. Since all the Mimics are somehow telepathically controlled by the Omega, this could explain how the Omega is also aware of the loop. 

Expanding from this, I'm guessing that they cannot jump back to any arbitrary point in the past. It seems that the starting point cannot go further than 24 hours (give or take). My conjecture is that the Alphas (and the Omega) are continuously “recording” reality as it progress through time. However they have limitation. They only have enough “memory” for recording the last 24 hours of reality. Think of it like a Digital Video Recording that continuously records TV broadcast but only have enough space for 24-hour video. Thus older content are automatically purged.

When Cage kills the Alpha and absorbs its power, he is then thrown into the beginning of the recording, which is the moment when he wakes up on Heathrow tarmac. (It could be that the exact starting point is actually some time earlier while he is still unconscious).

Intermediate Loops
It appears that Cage only inherits the power to return to the starting point, but he doesn’t have the power to continue recording.  This would explain why he keeps starting at the same point in time even though he eventually manages to stay alive longer and longer.  Another curious thing is that the Alpha killed by Cage no longer appears in any subsequent loops.  It could be that the movie simply doesn’t show it again, but I’d like to think that this is deliberate and part of the rule of this time-looping mechanism. Hence, this is my postulate:
  • Under a particular condition (perhaps when it's time manipulating organ is blown to pieces and its blood all scattered around) an Alpha would cease to exist from any timeline.
So, under normal circumstances, when an Alpha gets killed, it will be back alive at the beginning of the loop. However, something particular happens when Cage (and Vrataski) kills the Alpha. Not only they absorb the time-looping ability, but the Alpha from which they got the power is completely removed from existence.


The Ending

After the blood transfusion, Cage no longer has looping ability from the Alpha. However, when he kills the Omega, he was once again soaked in that time-manipulating goo. Thus Cage is thrown back to the starting point of the Omega’s recording. Notice that the event happens few hours before the beach assault. Therefore the starting point is also few hours earlier. It’s the time when Cage wakes up in the helicopter just before he arrives in UDF headquarter.  


Just like before, because the time-looping power is somehow transferred to Cage, the Omega ceases to exist. That is why the death of the Omega becomes effective also in the past.Without a central mind to govern them, all other Mimics cannot survive and die on their own. 




Final Note:

I personally don't like the use of alien blood as the mechanism for time travel. I think it's too ... physical. If it were me I'd visualize the transfer of the power with some kind of energy wave or bubble that is released when the Alpha is blown up. Being engulfed in that energy causes someone to absorb the ability. As for the mechanism for losing the ability, I prefer something like electric shock, such as getting tasered or through the use of defibrillator.