Archive

Archive for the ‘Machine Learning’ Category

Perkenalan Machine Learning Algorithm – Part 1

April 27, 2017 Leave a comment

Pada tutorial sebelumnya saya hanya mengajarkan bagaimana alur data science dan machine learning proses. Saya hanya mengajarkan pemakaian tools machine learning dengan menggunakan scikit-learn. Hal ini saya tujukan untuk memberikan pemahaman mengenai end to end skeleton yang dapat anda gunakan pada setiap project machine learning anda. Setelah anda mengetahui apa-apa saja langkah-langkah yang ada maka anda dapat dengan mudah memperdalam masing-masing machine learning algorithm nya.

Pada kesempatan tutorial selanjutnya dalam blog ini kita akan mempelajari mengenai masing-masing algoritma machine learning. Kita akan belajar istilah-istilah yang lazim digunakan dalam dunia machine learning.

Programmer dapat belajar dengan cepat jika diberikan contoh dan deskripsi yang jelas mengenai sesuatu hal. Hal ini juga berlaku terhadap algoritma machine learning. Tutorial akan terdri dari deskripsi algoritma machine learning dan juga bagaimana cara mengimplementasikannya dengan bahasa pemrograman python.

Blog ini ditulis untuk programmer sehingga tidak menggangap anda memiliki pengalaman dalam statistika, probability dan juga linear algebra. Jika anda mengetahui sedikit statistika maka hal itu akan dapat membantu anda tetapi tidak menjadi penghambat anda untuk memahami tutorial tersebut.

Data memiliki bagian terbesar dalam machine learning. Sehingga kita perlu belajar terminologi yang benar ketika berbicara mengenai data. Mari kita mulai saja dengan bagaimana anda berpikir tentang data. Pikirkan saja spreadsheet atau excel file. Kita memiliki kolom, row dan cell.

 

image

Sebuah kolom memiliki data dengan tipe yang sama. Contoh kita memiliki kolom berat, tinggi atau harga. Semua data pada kolom yang sama memiliki skala dan arti yang sama dengan yang lain. Kolom ini sering disebut juga sebagai attribute atau fitur.

Row menggambarkan satu observasi atau single instance. Semakin banyak row yang kita punya semakin banyak example dari domain yang kita pelajari.

Cell merupakan single value dari satu row atau kolom.

Gampangnya kita dapat menyebut data ini sebagai tabular atau dataframe data. Bentuk data seperti ini sangat mudah digunakan dalam machine learning. Ada beberapa term yang digunakan pada perspektif yang berbeda. Ada 2 perspektif yaitu statistical dan computer science

Dari perspektif statistical learning kita melihat bahwa ada fungsi yang akan dicoba dipelajari oleh algoritma machine learning. Jika kita memberikan input value maka akan dicoba diprediksi output valuenya.

Output = f(input)

Kolom tersebut akan menjadi input yang disebut sebagai variable input. Dimana kolom yang akan kita prediksi untuk input yang akan datang disebut sebagai output variable atau response variable.

OutpuVariable = f(InputVariables)

Biasanya kita akan memiliki lebih dari satu input variable. Dalam hal ini kita akan menyebut input variable tersebut sebagai input vector.

OutputVariable = f(InputVector)

Jika anda masih ingat dengan pelajaran statistika anda yang lalu anda akan mengetahui terminologi jadul. Yaitu banyak disebut sebagai dependent dan variable independent.

DependentVariable = f(IndependentVariables)

Untuk lebih sederhananya kita menyingkatnya menjadi

Y = f( X )

Dari computer science perspektif kita sering sekali mendengar bahwa row disebut sebagai entity dan kolom disebut sebagai attribute. Atau sering disingkat menjadi

OutputAttribute = Program(InputAttributes)

Nama lain dari kolom adalah fitur.

Output = Program(InputFeatures)

Observation juga sering disebut sebagai instance. Dan Output sering disebut sebagai prediksi

Prediction = Program(Instance)

Banyak juga orang menyamakan model dan algoritma. Dan kadang digunakan saling menggantikan satu sama lain. Model adalah representasi dari apa yang telah dipelajari dari data atau hasil dari algoritma yang belajar teresbut. Algoritma adalah proses dari pembelajaran tersebut.

Model = Algorithm(Data)

Advertisements
Categories: Machine Learning

Berkompetisi di Kaggle – Part 3– Menambahkan Fitur

April 21, 2017 Leave a comment

Ketika kita menggunakan fungsi .describe() kita menyadari bahwa tidak semua kolom ditampilkan. Hanya kolom-kolom yang mempunyai data numerik saja. Kita tidak dapat mengirimkan data non numerik sebagai input ke algoritma machine learning.

Ada dua pilihan, yaitu mengeluarkan data non numeric pada saat training atau mencari cara untuk mengubah data tersebut ke numerik.

Untuk saat ini kita akan mengabaikan kolom/attribute Ticket, Cabin dan Nama karena kita tidak mengambil informasi yang lebih dari situ.

Mari kita convert Sex ke kolom dengan tipe numerik. Kita dapat mengubahnya dengan mengubah male menjadi 0 dan female menjadi 1.

Hal ini dapat kita lakukan dengan code berikut ini

image

image

Berikutnya kita akan mengubah kolom Embarked ke numerik. Kita juga mengisi missing value dari kolom tersebut.

image

Sekarang kita masih tetap akan menggunakan LogisticRegression dan mengevaluasi feature/attribute terbaru kita.

image

Wow dengan menambahkan beberapa attribute kita dapat mencapai akurasi 78%.

Sekarang kita akan membuat submission dengan menggunakan fitur yang baru. Terlebih dahulu kita akan menyamakan perubahan yang kita lakukan pada dataset training dengan dataset test.

image

 

Kita dapat melakukan copy paste dari code sebelum dan menambahkan fitur yang kita inginkan.

image

Sekarang kita akan submit hasil tersebut ke kaggle.

image

Selamat anda berhasil melakukan kemajuan akurasi menjadi 75%.

Kita akan tetap terus berjuang untuk mendapatkan hasil yang lebih baik pada iterasi berikutnya. Apakah itu dengan menambah fitur atau mengubah algoritma yang kita butuhkan.

Sampai jumpa pada tutorial selanjutnya.

 

Cheers

Categories: Machine Learning

Berkompetisi di Kaggle – Part 2– Melakukan prediksi sederhana

April 20, 2017 Leave a comment

Pada tutorial ini kita akan melakukan submission berdasarkan algoritma yang kita buat. Pertama sekali kita perlu mendownload dataset yang ada dari website kaggle untuk kompetisi titanic.

image

Simpan file dataset tersebut pada tempat yang mudah di akses.

Kita sekarang sudah dapat meload data tersebut dan melakukan analisa sederhana. Sesuaikan dengan path dari dataset yang anda punya.

image

Kita dapat melihat 10 data teratas dengan fungsi head pada pandas dataset.

image

Untuk melihat statistik dari data numerik anda dapat memanggil fungsi describe.

image

Anda tentu melihat kejanggalan pada hasil dari statistik yang ada. Kita melihat bahwa attribute Age tidak memiliki jumlah yang sesuai dengan kolom lain nya. Hal ini disebabkan oleh null atau value yang hilang. Mari kita lihat lebih dalam lagi untuk attribute tersebut.

 

image

Ternyata memang benar terdapat NaN. Hal ini harus kita atasi karena algoritma machine learning akan memproses data yang salah tersebut. Kita harus melakukan pre processing untuk mengisi value yang hilang tersebut. Untuk hal yang sederhana ini kita dapat mengisnya dengan nilai tengah atau median dari data tersebut.

image

Oke sekarang agar kita tidak bosan maka kita dapat saja mengambil salah satu algoritma klasifikasi dan langsung menghitung akurasinya. Kita akan melakukan coba-coba atau eksperimen dengan data set berikut dan algoritmanya. Attribute yang kita pilih adalah Pclass dan Age. Artinya kita menggunakan 2 attribute atau features tersebut untuk melakukan prediksi. Algoritma yang kita pilih disini adalah LogisticRegression

image

Kita dapat melihat bahwa akurasi dari algoritma LogisticRegression adalah 69% terhadap data training. Cukup rendah. Tetapi untuk saat ini kita dapat menggunakannya sebagai baseline.

Sekarang kita akan melakukan prediksi terhadap dataset testing. Kita load dan bersihkan dulu data testing sesuai dengan apa yang kita lakukan terhadap Age.

image

Langsung saja kita lakukan fitting dan training terhadap model tersebut dengan menggunakan data training. Dan prediksi dengan data testing.

 

image

Setelah kita mem prediksi kita dapat menyimpan hasil nya pada dataframe dan ditulis ke csv file untuk di submit.

Jika anda melakukan submission terhadap result tersebut anda akan mendapatkan akurasi  kurang lebih 66%

 

image

Cukup untuk kita jadikan baseline. Selanjutnya pada tutorial berikutnya masih di topik titanic kita akan membandingkan beberapa algoritma dan memilih yang terbaik. Kita juga akan melakukan feature engineering untuk mendapatkan hasil yang lebih baik.

Kita akan melakukan iterasi pada permasalahan titanic tersebut. Kita tidak bisa menyerah pada hasil dan merasa puas hanya dengan satu iterasi saja. Kita harus mengulang kembali proses-proses yang sebelumnya telah kita pelajari.

Anda juga dapat mencoba-coba parameter dan algoritma yang lain seperti SVM, Decision Tree etc.

 

Selamat melakukan eksplorasi

 

Cheers

Categories: Machine Learning

Machine Learning “Hello World” – Part 04 – Evaluasi Algoritma Learning

April 19, 2017 Leave a comment

Ini adalah waktunya untuk masuk ke pertunjukan sebenarnya dari machine learning. Smile 

 

image

 

Kita akan membuat model dari data yang ada dan melakukan estimasi terhadap akurasi dari data yang belum diketahui sebelumnya. Berikut langkah-langkah nya

  1. Memisahkan dataset untuk validasi
  2. Membuat test untuk 10 fold cross validation
  3. Membangun 6 model untuk memprediksi spesies bunga dari pengukuran bunga
  4. Memilih model yang terbaik
  5. Melakukan prediksi dengan model yang terbaik
    Dataset untuk Validasi

Mari kita mulai membagi dataset untuk validasi dan untuk training. Kita perlu mengetahui apakah model yang akan kita buat adalah model yang baik. Kemudian kita akhirnya akan menggunakan metode statistik untuk melakukan estimasi akurasi dari model terhadap data yang belum diketahui sebelumnya. Kita akan membagi dataset tersebut menjadi dua bagian 80% digunakan untuk training model dan 20% digunakan untuk validasi.

image

 

Sekarang kita telah memiliki data untuk training di X_train dan Y_train untuk membuat mode dan X_validation dan Y_validation yang dapat kita gunakan untuk memvalidasi model yang dibuat.

Kita akan menggunakan teknik 10-fold cross validation untuk melakukan estimasi akurasi. Kita akan membagi dataset kita menjadi 10 bagian, 9 untuk training dan 1 lagi untuk test. Kita akan melakukan kombinasi train-test split. Kita akan menggunakan akurasi matrix untuk melakukan evaluasi model. Ini adalah rasio dari jumlah prediksi yang benar dibagi dengan jumlah instance dari dataset dikali dengan 100 untuk mendapatkan persentasi. Kita akan menggunakan scoring variable dalam membangun dan mengevaluasi setiap model.

 

This is a ratio of the number of correctly predicted
instances divided by the total number of instances in the dataset multiplied by 100 to give a
percentage (e.g. 95% accurate). We will be using the scoring variable when we run build and
evaluate each model next.

Membangun model

Kita tidak tahu algoritma machine learning mana yang terbaik untuk masalah iris ini dan konfigurasi apa yang tepat. Seperti yang sebelumnya kita sampaikan bahwa machine learning dan data mining adalah experimental science. Jadi kita perlu mencoba-coba algoritma dan menentukan mana yang cocok berdasarkan statistik.

Mari kita melakukan evaluasi terhadap 6 algoritma yang berbeda

  • Logistic Regression (LR)
  • Linear Discriminant Analysis ( LDA ).
  • k-Nearest Neighbors ( KNN )
  • Classification dan Regression Tree ( CART )
  • Gaussian Naive Bayes ( NB )
  • Support Vector Machine ( SVM )
    Jangan takut jika anda belum mengetahui atau memahami ke enam algoritma di atas. Untuk sekarang ini anda dapat memperlakukannya sebagai black box dimana jika kita memberikan input akan mengeluarkan output. Tentu saja setelah kita melakukan training terhadap fungsi tersebut berdasarkan data-data contoh.

List di atas merupakan kombinasi yang bagus antara algoritma Linear sederhana ( LR and LDA ) dan juga non linear ( KNN, CART, NB, SVM ). Mari kita evaluasi ke enam algoritma tersebut.

image

Sekarang kita sudah dapat menentukan model mana yang akan kita gunakan. Kita dapat melihat bahwa KNN memiliki akurasi yang terbaik. Sekarang kita akan melakukan validasi terhadap testing data set yang telah kita sisihkan sebelumnya.

image

Kita mendapatkan akurasi 90% ! Good progress.

Confusion matrix juga menunjukkan bahwa ada 3 error yang tercipta.

image

Untuk mengetahui lebih dalam mengenai confusion matrix kita dapat melihat pada tutorial berikut.

 

http://www.dataschool.io/simple-guide-to-confusion-matrix-terminology/

https://www.coursera.org/learn/ml-foundations/lecture/pcbUq/false-positives-false-negatives-and-confusion-matrices 

 

Selamat anda sudah melakukan end to end machine learning project. Anda juga mendapatkan accuracy yang cukup baik. Sekarang kita dapat beranjak menuju tutorial yang lebih menantang lagi. Bagaimana memulai kompetisi di Kaggle !!

 

Ikuti terus seri tutorial pada blog ini.

 

Cheers

Categories: Machine Learning

Machine Learning “Hello World” – Part 02 – Loading dan Summary

April 18, 2017 Leave a comment

 

image

 

Pada tutorial ini kita akan membahas bagaimana python dapat digunakan untuk melakukan pembangunan aplikasi machine learning. Untuk meningkatkan kepercayaan diri kita perlu melihat pengunaan python secara end to end. Artinya kita mengabungkan semua unsur yang diperlukan dalam machine learning. Seperti loading data, menampilkan descriptive statistics dan summary, sedikit visualization dan membandingkan 6 machine learning model.

Machine learning merupakan experimental science, jadi kita harus mencoba coba teknik yang menghasilkan hasil yang cukup akurat dan dapat diterima. Jadi tidak ada the best machine learning algorithm, semuanya tergantung hasil dari experiment kita, feature (attribute) yg digunakan sebagai input dan juga setting dari parameter yang digunakan.

image

 

Project kecil yang bisa dijadikan sebagai awal adalah mengklasifikasikan atau mengkategorikan jenis bunga iris. Iris dataset adalah dataset yang bagus untuk project pertama dikarenakan dataset tersebut sudah dipahami dengan baik.

Attribute nya semuanya adalah numeric sehingga kita tidak perlu melakukan feature engineering terlalu dalam. Kita tidak perlu melakukan standarisasi atau normalisasi terhadap data numeric karena datanya memiliki scala yang sama dan unit yang sama.

Hanya memiliki 4 attribute ( feature ) dan 150 rows ( instance ) sehingga bisa di load semuanya ke memory.

Dalam tutorial ini kita akan melakukan project kecil secara end to end. Berikut adalah overview dari hal-hal yang akan kita lakukan

  1. Loading dataset
  2. Melakukan summary terhadap dataset
  3. Memvisualisasikan dataset
  4. Melakukan evaluasi terhadap algorithm
  5. Melakukan prediksi terhadap dataset

Pahami setiap step by step dan sangat di harapkan anda mengetikkan semua command sendiri sehingga mendapatkan feel dari pemrograman machine learning.

Mari kita masuk ke tutorial pertama

 

Import Library

Pertama sekali yang kita lakukan adalah melakukan import terhadap semua library yang dibutuhkan.

image

Pastikan semuanya dapat di load tanpa error. Jika terjadi error pastikan anda telah menginstall pandas dan juga scipy dari package manager conda.

Loading Dataset

Iris dataset dapat di download dari site berikut ini.

https://archive.ics.uci.edu/ml/machine-learning-databases/iris/iris.data

Simpan file tersebut dengan nama iris.data.csv.

Kita akan menggunakan pandas untuk me load data. Kita juga akan menggunakan pandas untuk melakukan eksplorasi deskriptif statistics dan visualization. Perhatikan bahwa kita mencantumkan nama untuk setiap column pada saat me load data. Ini akan membantu kita dalam mengekspolore data kemudian.

image

 

Explorasi Dataset

Sekarang saatnya kita melihat isi dan struktur dari data yang baru saja kita load. Hal-hal yang akan kita lihat adalah

  1. Dimensi dari dataset
  2. Keseluruhan data
  3. Statistical Summary dari semua attribute
  4. Breakdown dari data berdasarkan class variable.

Tenang saja, masing-masing hanya butuh eksekusi satu command saja. Dan command tersebut akan berguna untuk project-project machine learning berikutnya.

Dimensi dari Dataset

Kita dapat melihat berapa instance ( baris ) yang ada dan berapa banyak attribute ( kolum ) yang dipunyai oleh data dengan property shape pada pandas.

image

Dari sini kita dapat mengetahui bahwa ada 150 baris atau instance dan 5 attribute atau feature.

Struktur data.

Ada baiknya jika kita melihat-lihat bagaimana sebenarnya bentuk data dan formatnya. Kita dapat mengambil sample beberapa data dari atas.

image

Dari sini anda dapat mengambil beberapa kesimpulan dengan melihat 20 row pertama. Semua attribute adalah numeric, dan class yng akan dikategorikan adalah string. Kita juga melihat bahwa semuanya tidak ada yang mengandung nilai null. Hal ini akan kita pastikan lagi lebih jauh di explorasi berikutnya.

Statistical Summary

Sekarang kita dapat melihat summary dari setiap attribute. Hal ini mencakup count, mean, min dan max value juga percentile.

image

Disini kita dapat melihat bahwa semua attribute yang berisi numerik atau angka memiliki scale yang sama dan diantara 0 sampai dengan 8 centimeters. Kita juga dapat melihat count nya sama semua yaitu 150 dimana hal ini menunjukkan bahwa tidak ada missing value atau null value.

Class Distribution

Mari kita melihat jumlah dari instance ( baris ) yang terdapat pada setiap kelas. Kita dapat melihat ini dengan nilai absolute.

image

Kita dapat melihat bahwa semua kelas memiliki jumlah instance yang sama. 33% dari dataset.

Pada tutorial ini kita telah melakukan loading data dan summary terhadap data set. Pada pertemuan berikutnya kita akan memvisualisasikan dataset dengan matplotlib di python.

 

Happy exploring

 

Cheers

Categories: Machine Learning

Data Mining / Machine Learning tanpa Coding dengan Weka

April 18, 2017 Leave a comment

Apakah anda tertarik melakukan machine learning tanpa secuil code pun ?

 

Mari berkenalan dengan Weka.

 

image

Weka adalah machine learning tools yang dibuat dengan menggunakan Java. Tetapi anda tidak perlu mengetahui java untuk menggunakannya. Hal ini dikarenakan tools tersebut memiliki User Interface yang cukup mudah untuk digunakan.

 

    Berikut akan saya tunjukkan langkah-langkah pemakaian weka dengan cepat.
    Pastikan anda sudah menginstall weka terlebih. Silahkan download dari site berikut.

http://www.cs.waikato.ac.nz/ml/weka/downloading.html

Setelah itu anda dapat menjalankan weka dengan men search pada windows

 

image

 

Jalankan maka GUI Chooser akan ditampilkan.

image

 

Silahkan pilih Explorer. Maka dialog explorer akan ditampilkan. Pada tab pre process anda akan diberikan pilihan untuk membuka data set yang sudah disedikan dari weka.

 

image

Browse data set yang disediakan tersebut dari C:\Program Files\Weka-3-8\data

 

image

Pilih iris.arff. Data set ini merupakan data set yang cukup terkenal di dunia machine learning. Sering disebut-sebut sebagai hello world di dunia machine learning.

Mari kita melakukan hello world tersebut dengan weka.

 

Kemudian di Weka akan ditampilkan statistics dan attribute dari data set tersebut.

image

 

Pilih tab classify, pada tab ini kita akan melakukan klasifikasi terhadap bunga iris. Langsung saja tekan Start maka akan ditampilkan result dari ZeroR machine learning untuk iris.

 

image

Disini kita dapat melihat bahwa akurasi dari algorithm tersebut adalah 33.33%. Sangat buruk. Tetapi ZeroR adalah merupakan baseline algorithm, dimana algorithm tersebut dapat dianggap sebagai batas bawah dari hasil machine learning.

 

Sekarang mari kita coba untuk mengubah algorithm menjadi decision tree. Kita pilih dari Choose

 

image

 

Pilih J48 untuk decision tree.

 

image

 

Jalankan Start sekali lagi . Maka kita akan dapat melihat hasil yang lebih baik dari akurasinya

 

image

 

Selamat anda telah melakukan Hello World machine learning dengan Weka.

 

Untuk pembelajaran lebih mendalam, berikut video tutorial dari pembuat Weka.

 

  1. Data Mining with Weka
  2. More Data Mining with Weka
  3. Advanced Data Mining with Weka

Cheers

Categories: Machine Learning

Machine Learning “Hello World” – Part 01– Instalasi

April 18, 2017 1 comment

Pengantar

Seperti biasa kita tidak ingin berpanjang lebar untuk membahas semua teori yang ada mengenai machine learning. Just show me the code !

Pada tutorial berikut kita akan melakukan hands on untuk machine learning dengan menggunakan python. Python adalah salah satu platform yang sangat berkembang pesat untuk aplikasi machine learning.

Pada tutorial berikut kita akan mempelajari cara memulai, membuat model dengan akurat dan dengan percaya diri kita akan menyelesaikan machine learning project dalam waktu yang cukup singkat.

Course ini merupakan pengantar yang dapat dikonsumsi oleh semua kalangan dengan programming skill dan sedikit pengantar mengenai machine learning. Tutorial ini akan membawa anda menjadi pro yang dapat menggunakan python sebagai tools untuk menyelesaikan machine learning.

Installasi

Kita akan segera saja untuk memulai pelajaran kali ini dengan menginstall python platform pada environment kita. Kita akan memulai installasi dengan cara yang paling mudah yaitu mendownload Anaconda distribution. Disini kita sudah mendapatkan semua package python yang dibutuhkan untuk tutorial berikut.

Silahkan kunjungi link berikut https://www.continuum.io/downloads

Sesuaikan dengan platform anda. Pada kesempatan kali ini platform yang saya gunakan adalah windows.

 

image

Pilih python 2.7 installer

 

image

 

Install platform tersebut. Saya yakin anda dapat melakukannya tanpa hambatan. Setelah itu kita akan mendowload IDE yang cukup baik di lingkungan python.

Silahkan download dari link berikut ini.

https://www.jetbrains.com/pycharm/download/#section=windows

Silahkan download community edition.

image

 

Lakukan instalasi dan setelah selesai anda dapat membuat project baru.

File-New Project

Anda akan dihadapkan oleh pilihan berikut

 

image

 

Create new python file

image

 

Ketikkan code berikut ini untuk melakukan health check

 

image

 

Running program tersebut dengan cara sebagai berikut

image

 

Jika anda mendapatkan hal yang mirip dengan screen berikut. maka anda sudah berada di jalan yang benar.

 

image

 

Jika anda lebih memilih notebook, python menyediakan jupyter yang dapat langsung digunakan dari web browser.

 

Ketikkan perintah berikut pada command line

jupyter notebook

 

image

Anda kemudian dapat melihat tampilan pada browser seperti berikut

 

image

 

Buat notebook baru dengan melakukan hal sebagai berikut

image

 

Paste code yang sama dengan sebelumnya untuk mengecek bahwa instalasi berhasil dan notebook sudah dapat digunakan.

image

Eksekusi dengan kombinasi tombol CTRL+Enter. Anda akan dapat melihat output sebagai berikut.

 

image

 

Shortcut yang lain yang perlu anda ketahui adalah untuk menambahkan cell di bawah dari cell yang di highlight adalah dengan menekan tombol B ( below )

Shortcut untuk menambahkan cell ke posisi atas adalah A ( above )

Untuk mendelete cell dapat dilakukan dengan menekan tombol D

 

Selamat. Rayakan keberhasilan dalam memulai perjalanan yang cukup panjang. Smile

 

Cheers

Categories: Machine Learning