Perbedaan: precision, recall & accuracy

Tulisan ini terinspirasi gara-gara Vivi yang bingung perbedaan penggunaan dari accuracy, precision & recall.

Dalam “dunia” pengenalan pola (pattern recognition) dan temu kembali informasi (information retrieval), precision dan recall adalah dua perhitungan yang banyak digunakan untuk mengukur kinerja dari sistem / metode yang digunakan. Precision adalah tingkat ketepatan antara informasi yang diminta oleh pengguna dengan jawaban yang diberikan oleh sistem. Sedangkan recall adalah tingkat keberhasilan sistem dalam menemukan kembali sebuah informasi.

Sedangkan di “dunia lain” seperti dunia statistika dikenal juga istilah accuray. Accuracy didefinisikan sebagai tingkat kedekatan antara nilai prediksi dengan nilai aktual. Ilustrasi berikut ini memberikan gambaran perbedaan antara accuracy dan precision.

Accuracy vs Precision [4]

Accuracy vs Precision [4]

Agar lebih jelas, mari kita bahas dengan menggunakan contoh.

Misalkan kita ingin mengukur kinerja dari sebuah mesin pemisah ikan yang bertugas memisahkan ikan-ikan salmon dari semua ikan yang telah didapat. Untuk mengujinya kita akan memasukkan 100 ikan salmon dan 900 ikan lain (bukan ikan salmon). Hasilnya mesin tersebut memisahkan 110 yang dideteksi sebagai ikan salmon. Ke 110 ikan tersebut kemudian dicek kembali oleh manusia, ternyata dari 110 ikan tersebut hanya 90 ekor yang merupakan ikan salmon, sedangkan 20 lainnya merupakan ikan lain.

Dari kasus tersebut maka kita dapat simpulkan bahwa mesin tersebut memiliki precision sebesar 82%, recall sebesar 90% dan accuracy sebesar 97% yang didapatkan dari perhitungan berikut: Continue reading

Merubah Fedora 18 Hostname

Oke langsung saja, bila pada versi-versi sebelumnya kita bisa merubah hostname pada fedora dengan mengedit file

/etc/sysconfig/network

dan menambahkan baris

HOSTNAME="<newhostname>"

maka pada fedora 18 cara tersebut sudah obsolete.
Untuk merubah hostname pada fedora 18 adalah dengan perintah berikut:

hostnamectl set-hostname <newhostname> --static

Source:
http://forums.fedoraforum.org/showthread.php?p=1625871

Penggunaan Memori Per Proses di Linux

Sebagai system administrator kita kadang ingin mengetahui jumlah penggunaan memory dari program yang berjalan di linux. Permasalahannya adalah kadang ada satu program yang memiliki banyak proses, contohnya httpd. Httpd membentuk banyak proses untuk melayani request dari client.

Ada script sederhana yang sama dapatkan dari abdussamad.com yang dapat kita gunakan untuk mengetahui total memory yang digunakan oleh program tertentu dalam linux.

#!/bin/bash
ps -C $1 -O rss | gawk '{ count ++; sum += $2 }; END {count --; print "Number of processes =",count; print "Memory usage per process =",sum/1024/count, "MB"; print "Total memory usage =", sum/1024, "MB" ;};'

Simpanlah script tersebut ke dalam sebuah file (misal: psmem.sh), ubah permission menjadi executable (misal: chmod 700 psmem.sh) lalu jalankan menggunakan terminal. contoh:

#./psmem.sh http

bila sukses maka ankan mendapatkan tampilan seperti ini:

[root@somewhere ~]# ./psmem.sh httpd
Number of processes = 129
Memory usage rate per process = 54.0758 MB
Total memory usage = 6975.77 MB

Firewall di Fedora 18

Fedora, salah satu distro linux yang perkembangannya sangat cepat dibanding yang lain, saking cepatnya sampai-sampai selisih satu versi saja standar yang digunakan bisa jadi berbeda. Seperti standar firewall pada Fedora versi 17 dan versi 18.

Pada Fedora 18, program standar untuk mengenlola firewall adalah firewalld, bukan lagi iptables. Walaupun program iptables juga masih disediakan, namun secara default tidak diaktifkan. Bila anda masih terbiasa dengan iptables maka langkah berikut cocok buat anda. Langkah ini  akan menonaktifkan firewalld dan mengaktifkan kembali iptables.

yum -y install iptables-services iptables-utils
systemctl disable firewalld.service
systemctl stop firewalld.service
systemctl enable iptables.service
systemctl enable ip6tables.service
systemctl start iptables.service
systemctl start ip6tables.service

Oke, that’s all. Welcome back iptables 🙂

referensi:

Record Radio Streaming Menggunakan AIMP2

Dengerin radio streaming memang asyik, cukup dengan koneksi 20 kbps kita sudah bisa mendengarkan berbagai jenis radio, mulai dari aliran rock, pop, jazz sampai yang religius seperti radio kegemaran saya, Radio Dakwah Islamiyah. Masalahnya adalah saya bukan tipe orang yang “rajin mencacat” tapi lebih ke tipe “listener” dan “observer”, efeknya adalah banyak poin-poin dalam ceramah agama di radio online tersebut yang kadang miss atau terlupakan setelah sekian lama. Akhirnya muncul ide bagaima caranya merekam radio streaming tersebut hehehe. *lazy person always has a trick to make their job easier* :p

Setelah googling akhirnya menemukan program bagus yang bisa digunakan untuk merekam audio streaming, AIMP2. Langkah-langkah untuk merekam audio streaming menggunakan AIMP2 adalah sebagai berikut:

  1. Download AIMP2 dan AIMP Tools disini lalu installlah keduanya.
  2. Buka program AIMP2 lalu bukalah AIMP2 options dengan menekan shortcut di ujung kiri atas window atau tekan [CTRL P].
  3. Click pada sub menu “Streaming”. Disini kita bisa memilih format recording yang kita inginkan dan dimana kita ingin menyimpan file hasil rekaman tersebut. Tutuplah window option ini bila telah selesai.

    AIMP2 Options

    AIMP2 Options

  4. Bukalah file playlist radio streaming yang ingin kita dengarkan lalu tekan tombol play. Untuk mulai merekam tekanlah tulisan “Radio Cap” yang berapa di bagian atas tombol play (lihat gambar di bawah). Tulisan “Radio Cap” akan terus berkedip selama proses merekam berlangsung.

    Radio Cap

    Radio Cap

  5. Untuk menghentikan proses record tekan kembali tulisan “Radio Cap”.
  6. Untuk melihat hasilnya, bukalah folder tempat anda menyimpan rekaman tadi.

Easy right? Selamat mendengarkan radio streaming…

Referensi:

Setup Proxy Server Sederhana Menggunakan Squid

In computer networks, a proxy server is a server (a computer system or an application) that acts as an intermediary for requests from clients seeking resources from other servers.

Tutorial berikut ini berisi cara sederhana bagaimana kita membangun sebuah proxy server menggunakan linux CentOS, RedHat atau Fedora. Karena ini turorial singkat, maka target utamanya adalah “pokonya squid servernya bisa jalan”. Mengenai keamanan, protocol yang diijinkan, dll. akan dibahas di lain waktu Insyallah.

Oke, langkah-langkahnya adalah sebagai berikut:

Install squid


[root@someserver ~]# yum install squid

Backup konfigurasi default squid


[root@someserver ~]# cp /etc/squid/squid.conf /root/squid.conf

Buat konfigurasi squid yang baru


[root@someserver ~]# vim /etc/squid/squid.conf

Hapus semua konfigurasi lama lalu isi dengan konfigurasi berikut:


http_port 8080

acl CONNECT method CONNECT
# range you allow to access
acl lan src 192.168.1.0/24
acl localhost src 127.0.0.1/32

http_access allow localhost
# allow only "lan" above
http_access allow lan
http_access deny all

# add at the bottom
request_header_access X-Forwarded-For deny all
request_header_access Via deny all
request_header_access Cache-Control deny all

# add at the bottom ( specify hostname )
visible_hostname www.someserver.com

# forwarded_for on
# add at the bottom ( hide IP address )
forwarded_for off

ganti nilai pada acl lan src menjadi alamat jaringan yang dibolehkan mengakses proxy ini.

Jalankan service squid

[root@someserver ~]# service squid start

Aktifkan service squid

[root@someserver ~]# chkconfig squid on

Pastikan setting firewall mengijinkan akses lewat port 8080 yang kita gunakan untuk squid.

[root@someserver ~]# iptables -n -L

pastikan terdapat line berikut:

...
ACCEPT     tcp  --  192.168.1.0/24        0.0.0.0/0           tcp dpt:8080
...

Selesai… Selamat mencoba proxy server baru anda.

Blocking IP atau MAC Address Menggunakan iptables

Para mimin (baca: administrator) jaringan pasti pernah dijengkelkan oleh ulah user “menyebalkan” dan ingin “menendang” user tersebut keluar dari jaringan dengan “cara halus”. Block IP atau MAC adress dari user tersebut adalah cara halus yang saya sukai untuk  menangani user-user menyabalkan seperti itu. Tools yang saya gunakan adalah iptables (bila router yang kita gunakan adalah linux). Perintahnya pun sederhana, cukup:

iptables -I FORWARD -s <alamat ip yang ingin di block> -j DROP

atau

iptables -I FORWARD -m mac --mac-source <mac address yang ingin di block> -j DROP

Masalahnya adalah bila harus menuliskan perintah block tersebut berkali akan menjadi sebuah pekerjaan yang sangat menyebalkan. Itulah sebabnya akhirnya saya membuat script sederhana yang dapat memblock IP atau MAC Address user dan dapat juga memblock alamat server yang menjadi masalah (misalnya sebuah alamat server yang diakses oleh user tersebut). Script ini saya digunakan di sebuah server bebasis centos 5 yang berperan sebagai router dan NAT server.

Berikut isi dari script tersebut:

#!/bin/bash

blockSource=(192.168.1.13 192.168.1.21 192.168.1.3)
blockDestination=(175.103.59.118 175.103.59.118)
blockSourceMac=(08:00:27:00:FC:D6)

#bloc mac source
for x in ${blockSourceMac[@]};
do
 iptables -I FORWARD -m mac --mac-source ${x} -j DROP
 iptables -I PREROUTING -t nat --mac-source ${x} -j DROP
done

#block ip source
for y in ${blockSource[@]};
do
 iptables -I FORWARD -s ${y} -j DROP
 iptables -I PREROUTING -s ${y} -j DROP
done

#block ip destionation
for z in ${blockDestination[@]};
do
 iptables -I FORWARD -d ${z} -j DROP
 iptables -I PREROUTING -d ${z} -j DROP
done

Masukkan ip yang ingin di block ke dalam array blockSource atau array blockDestination, pisahkan antar ip dengan spasi.

Untuk memblock mac address, masukkan mac address ke dalam array blockSourceMac, pisahkan antar mac address dengan spasi.

Setelah itu simpan file (misal: block.sh), ubah permissionnya menjadi executable (chmod +x block.sh) dan jalankan file tersebut (./block.sh).

Selesai, user menyebalkan telah dienyahkan jadi jaringan!

Gabungkan script ini dengan script setting firewall anda biar lebih praktis (lihat posting Setup Firewall di Fedora 17).