Category: Programming

Calling Python’s scikit-learn machine learning library from Julia

It turns out to be very easy.

Here’s a python code for SVM classification

import sklearn.svm as sv
clf = sv.SVC()
clf.fit(X, y)
y_pred = clf.predict(X_test)

And here’s Julia code – utilizing PyCall module

using PyCall
@pyimport sklearn.svm as sv
clf = sv.SVC()
clf[:fit](X, y)
y_pred = clf[:predict](X_test)
Advertisements

Komputasi Statistik

Secara umum, permasalahan utama komputasi statistik dibagi menjadi dua, optimization dan integration; mewakili dua mazhab yang ada di ilmu statistik, frequentist dan bayesian.

1. Optimization untuk Frequentist Statistics

Permasalahan komputasi di frequentist statistics biasanya berupa pencarian estimasi parameter. Teknik esimasi yang paling banyak digunakan yaitu Maximum Likelihood Estimation (MLE), dimana parameter yang mempunyai nilai likelihood tertinggilah yang dipilih sebagai estimasi. Untuk model sederhana seperti Linear Regresion, solusi dari MLE dapat dihitung secara exact melalui manipulasi matrix (dikenal juga sebagai Least Square Estimation). Akan tetapi untuk sebagian besar model statistik, seperti Logistic Regression, Generalized Linear Models, ARIMA, dll; tidak ada metode eksak untuk mendapaiakan nilai parameter MLE.

Disinilah numerical optimization mengambil peranan. Algoritma-algoritma optimization memulai dengan perkiraan parameter, kemudian secara iterative memperbarui perkiraan itu berdasarkan teorama dari kalkulus bahwa parameter yang mempunyai nilai MLE maksimum, memiliki nilai derivative nol. Metode Newton dan turunannya yang mana memanfaatkan informasi second derivative adalah diantara algoritma yang paling banyak dipakai untuk optimization. Algoritma Quasi Newton – BFGS adalah salah satu turunan dari metode Newton yang paling populer, dimana alih-alih menggunakan nilai eksak second derivative, BFGS melakukan approksimasi terhadap nilai tersebut.

2. Integration untuk Bayesian Statistics

Di mahzab Bayesian Statistics, masalah komputasi utama adalah mencari summary (contohnya: rata-rata, varians, peluang event tertentu) dari posterior distribution dari parameter. Bayesian Statistics memperlakukan parameter sebagai continuous random variable, sehingga untuk mencari summary dari parameter diperlukan integration. Seringkali proses integration tidak dapat dilakukan secara eksak, sehingga diperlukan teknik lain. Metode numerical integration biasa seperti Riemann Sum juga tidak cocok diterapkan karena parameter biasanya berdimensi tinggi. Oleh karena itu, teknik Monte Carlo integration yang berdasarkan sampling algorithm menjadi pilihan. Algoritma yang sering dipakai untuk sampling diantaranya adalah Gibbs Sampling dan Metropolis-Hastings.


ref: Computational Statistics book by Givens and Hoeting

Setup cronjob untuk monitor website

Yup, kalau suatu saat butuh memonitor suatu website secara terus menerus untuk melihat perubahan terkadang menjengkelkan. Apalagi kalau udah sering dilihat tapi belum berubah juga. Itu yang saya alami saat pengen memonitor registrasi kelas di UIC. Kelas yang pengen saya register sudah penuh. Jadi dalam masa2 add/drop kelas (2 minggu pertama) saya harus sering-sering melihat kelasnya, apakah ada yang drop kelas itu atau tidak. Kalau ada yang drop, saya harus buru-buru register sebelum keduluan orang lain.

Karena capek beberapa kali liat web-nya, namun tidak mendapat hasil karena penuh terus, saya mencoba menyuruh ‘mesin’ untuk mengecek-nya dan memberi laporan ke saya kalau sekiranya ada yang drop kelas. Berikut ini alamat websitenya. Jadi saya harus melihat apakah ada seat available atau ga. Kalau ada harus buru2 register.

Continue reading “Setup cronjob untuk monitor website”

Tips men-develop mobile app

Sekarang ini, pasar mobile application sangat besar, karena menjamurnya smartphone. Hal ini juga membuat developer berlomba-lomba menciptakan aplikasi-aplikasi yang berbasis mobile. Dengan banyaknya mobile app saat ini, tantangan untuk menjadi app yang diterima pengguna cukup besar. Tengoklah platform iOS yang harus bersaing dengan 300rb+ app, atau Android dengan 200rb+, ataupun Windows Phone dengan 100rb+ app. Tidak mudah untuk menjadi aplikasi pilihan pengguna.

Berikut ini tips agar mobile app buatan kita bisa diterima oleh pengguna berdasar pengalaman penulis.

Continue reading “Tips men-develop mobile app”

openlayers

Openlayers merupakan salah satu library opensource untuk menampilkan peta di web. Dari website resminya openlayers.org tertulis:

OpenLayers makes it easy to put a dynamic map in any web page. It can display map tiles and markers loaded from any source. OpenLayers has been developed to further the use of geographic information of all kinds. OpenLayers is completely free, Open Source JavaScript, released under the 2-clause BSD License (also known as the FreeBSD).

Iya, openlayers membuat developer mudah untuk menampilkan peta di web, baik peta berformat raster ataupun vektor. Openlayers mendukung berbagai macam format data gegrafis mulai dari Google Map, KaMap, MapServer, WMS Server, KML, GML dsb. Openlayers juga ditulis dalam pure javascript, sehingga pengguna tidak perlu menginstall plugin apapun di browsernya.

Lisensi openlayers yang FreeBSD membuat openlayers fleksibel untuk diterapkan di website2 yang membutuhkan visualisasi peta.

Saya sendiri pernah menggunakan openlayers di website http://sp2010.bps.go.id untuk menampilkan peta tematik data-data hasil Sensus Penduduk 2010. Openlayers digunakan untuk menampilkan peta vektor wilayah Indonesia/provinsi dengan gradasi warna berdasarkan nilai indikator tertentu.

iPhone UI vs Metro UI

Saat ini, terdapat dua mainstream besar di dunia mobile desain interface. Yang satu dipopulerkan oleh Apple dengan iPhone-nya. Satu lagi dirintis oleh Microsoft dengan Windows Phone-nya.

Terdapat perbedaan jelas diantara kedua paradigma desain ini. Disain interface iPhone punya aliran ingin memetakan kondisi real world ke dalam aplikasi. Ciri khas desain ini adalah menggunakan efek 3D, bentuk inteface mirip penampakan asli di real-world, glossy, sering memakai rounded corner, dll. Contohnya dalam mendesain tombol, desainnya mirip penampakan tombol asli di dunia nyata dengan lengkap dengan style 3d nya, glossy, dan sedikit ada shadownya.

Berbeda dengan paradigmanya Apple, Microsoft mengembangkan apa yang dia sebut Metro UI. Paradigma ini prinsipnya adalah modern, simple dan clear. Ciri khasnya adalah pemakaian warna solid monochrome, permainan typography teks, dan squared corner yang tegas. Contohnya untuk desain tombol, Metro UI merekomendasikan menggunakan kotak warna solid.

Berikut ini contoh perbandingan iPhone UI dengan Metro UI

Continue reading “iPhone UI vs Metro UI”