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

Advertisements
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

Contoh kasus Machine Learning

April 18, 2017 Leave a comment

Sebelumnya kita sudah mempelajari mengenai definisi dan pengertian dasar dari machine learning. Sebenarnya akan lebih mudah jika kita bergerak dari apa saja permasalahan yang dapat di selesaikan dengan machine learning. Hal ini akan memberikan pengertian mendalam dan juga pola yang dapat kita aplikasikan terhadap masalah lain. Kita belajar dengan contoh sama seperti machine learning yang kita pelajari.

10 Contoh dari aplikasi Machine Learning

  • Spam Detection: Mendeteksi dari inbox email mana yang spam dan mana yang tidak. Dengan model ini kita dapat mengarahkan spam ke kotak inbox nya dan menjaga kebersihan dari inbox kita. Kita pasti sudah familiar dengan ini.

    image

  • Credit Card Fraud Detection: Kita dapat menentukan mana transaksi yang dilakukan oleh customer berdasarkan history transaksi yang dibuat oleh customer tersebut. Dengan demikian kita dapat mereject dan me refund transaksi yang di deteksi sebagai fraud.

    image

  • Digit Recognition: Permasalahan ini ditujukan untuk mengenali zip codes yang tertera pada amplop yang ditulis dengan tangan. Model yang dibuat akan dengan mudah membaca dan mengerti zip codes dan melakukan sorting berdasarkan geography tertentu

image

  • Speech Understanding: Kita sudah tahu bahwa inilah yang dilakukan oleh iPhone dengan Siri ataupun oleh Cortana pada windows.

    image

  • Face Detection: Kita dapat mengidentifikasi orang dari foto yang diberikan berdasarkan pola yang didapat dari ratusan foto. Hal memudahkan mengelompokkan foto berdasarkan wajah orang tersebut. Beberapa software foto dan kamera memiliki kemampuang berikut. Facebook juga memiliki kemampuan untuk melakukan tagging pada foto.

    image

  • Product Recommendation: Berdasarkan history dari pembelian customer dan inventory dari product, kita dapat mengidentifikasi produk-produk mana yang menarik untuk customer dalam melakukan pembelian. Model ini akan menghasilkan program yang bertugas untuk memberikan rekomendasi. Amazon memiliki kemampuan ini. Netflix juga mempunyai kemampuan untuk merekomendasikan film apa yang relevan untuk ditonton selanjutnya berdasarkan history.

    image

    • Medical Diagnosis: Berdasarkan simptom yang ada pada pasien dan kumpulan data dari pasien-pasien sebelumnya, kita dapat memprediksi apakah pasien akan menderita penyakit yang sama. Hal ini dapat membantu untuk memberikan support terhadap para medis.

      image

    • Stock Trading: Dengan data-data dari pergerakan harga sebelum kita dapat mendeteksi stock mana yang hendak di beli dan di jual atau di tahan. Model tersebut akan memberikan support terhadap financial analyst atau trader.

      image

    • Customer Segmentation: Berdasarkan pola tingkah laku dari user selama trial dan behaviour sebelumnya, kita dapat mengidentifikasi user mana yang akan berpindah ke paid version dan mana yang tidak. Model ini dapat memberikan program kecerdasan untuk membujuk user beralih ke customer. Hal ini dapat dilakukan dengan memberikan perlakukan khusus pada masa trial

      image

    • Shape Detection: Berdasarkan gambar tangan dari user dan contoh dari bentuk-bentuk gambar kita dapat menentukan apa sebenarnya yang user gambar. Model ini dapat memberikan versi terbaik dari bentuk yang digambar sehingga gambar menjadi lebih teratur. Contohnya adalah program instaviz

Dari 10 contoh kasus diatas kita tentunya dapat melihat persamaan machine learning problem. Ada sample dari historical data dan ada keputusan atau decision yang harus diambil berdasarkan model tersebut.

Beberapa contoh merupakan problem yang sulit dalam machine learning seperti computer vision dan natural language processing. Hal ini dapat dengan mudah dilakukan oleh manusia tetapi sulit dilakukan oleh mesin. Machine learning ada disekitar anda. Temukan dan pahamilah.

 

Tipe dari machine learning problem

Berdasarkan contoh diatas kita dapat membuat klasifikasi dari tipe-tipe machine learning problem.

  • Classification : Data yang ada diberikan label atau kategori contohnya spam dan non spam atau fraud dan non fraud. Keputusan yang diambil adalah pemberian label atau kategori terhadap data-data baru.
  • Regression: Data diberikan label real value, numeric atau floating point. Contoh gampangnya adalah time series data dari harga stock sesuai dengan waktu. Kita akan mencoba mendeteksi harga stock tersebut di kemudian hari.
     
  • Clustering: Data tidak diberikan label, tapi secara otomatis di bagi berdasarkan kemiripan dan struktur lain dari data tersebut. Contohnya adalah mengorganisasikan foto. Kita harus melakukan tagging secara manual.
  • Rule Extraction: Data digunakan untuk melakukan pemberian label if dan else rule yang digunakan untuk melakukan decision yang didasarkan dari tree pengambil keputusan.

Kita sudah melakukan review dari contoh-contoh machine learning problem dan juga klasifikasinya. Kita skarng sudah mulai memiliki kepercayaan diri mengenai problem apa yang ada disekitar kita dan dapat dikategorikan sebagai permasalahan machine learning.

 

Cheers

Categories: Machine Learning

Pengantar Machine Learning

April 18, 2017 1 comment

Machine learning dan Big Data adalah topik yang lagi hot-hot nya belakangan ini. Setelah kita siap dengan infrastructure big data maka selanjutnya adalah mempersiapkan otak yang dapat digunakan untuk pengambilan keputusan. Otak inilah yang akan menjadi penggerak Data Driven Organization ke depan nya.

image

 

Kebanyakan software developer dengan skill nya akan masuk ke dunia machine learning learning ini dengan pertanyaan-pertanyaan. Apa step awal yang perlu saya lakukan ? Apa sumber belajar yang perlu saya dapatkan ? Apakah perlu menguasai math lebih dalam ? Bagaimana approach yang terbaik top down atau bottom up ?

Pertanyaan pertanyaan tersebut menjadi lebih jelas jika kita kembali ke apa tujuan sebenarnya kita mempelajari machine learning. Apakah untuk dipakai secara practical ? Atau untuk kepentingan research ? Jawaban terhadap kedua pertanyaan ini menentukan langkah apa yang akan diambil untuk memperdalam machine learning.

Jika anda ingin menggeluti machine learning untuk keperluan pekerjaan maka anda sebaiknya menggunakan pendekatan top down. Pendekatan ini akan mengarahkan anda untuk mempelajari machine learning dengan dasar kemampuan programming anda. Anda akan bermain-main dengan library dan memiliki pengetahuan menyeluruh terlebih dahulu meskipun tidak mendalam. Anda akan dapat bermain-main dan mengetahui penggunaan library dan bagaimana meng aplikasikan nya ke permasalahan dunia nyata.

 

Jika anda memilih jalur research maka anda perlu menggunakan pendekatan bottom up. Berarti anda akan memilih untuk mempelajari dasar-dasar terlebih dahulu yaitu mempelajari statistics, math, linear algebra dst. Setelah itu anda mempelajari masing-masing algorithm secara mendalam dan kemudian akan berangkat mengembangkan algorithm tersebut dan kemungkinan membuat terobosan dalam algorithm yang telah di dalami tersebut.

Pendekatan yang akan diberikan pada blog post selanjutnya adalah pendekatan secara top down, dimana kita akan bermain-main dengan library dan melakukan prediksi terhadap dataset yang diberikan untuk melakukan problem solving di real world problem.

Kita juga akan membahas mengenai bagaimana berkompetisi dalam data science di website Kaggle.

Ok, sekarang kita masuk ke bahasan apa machine learning tersebut sebenarnya.

 

Machine learning adalah metoda dimana kita membuat program yang belajar dari data. Jadi sama seperti manusia belajar berdasarkan contoh, maka kita akan memberikan contoh2 yang dapat dipelajari oleh program yang kita buat. Contoh-contoh ini lah yang akan digunakan oleh program tersebut untuk memperoleh pola yang akan digunakan untuk menentukan pertanyaan-pertanyaan berikutnya.

Secara matematis sebenanarnya yang dilakukan oleh program tersebut adalah melakukan pembentukan fungsi matematika yang kita sendiri tidak mengetahui  bentuknya.

image

 

Program kita adalah blackbox yang bertugas melakukan pembelajaran berdasarkan contoh-contoh yang diberikan.

Pertanyaannya adalah apa beda machine learning dengan program biasa ?

Perbedaannya adalah program yang biasa kita lakukan sifatnya adalah statis sedangkan machine learning program bersifat belajar dari contoh yang diberikan. Jadi rules yang diberikan tidak statis. Algorithm yang sifatnya complex terkadang dapat diselesaikan dengan simple dengan machine learning.

Contohnya adalah pendeteksi spam pada inbox. Apakah anda dapat membuat program statis dengan algorithm standard ?

Apa yang anda lakukan untuk menyelesaikan masalah tersebut ?

Apakah kita akan keras kepala untuk menyelesaikan permasalah tersebut dengan berbagai if dan else condition beserta regular expression ?

Hal yang paling mendasar yang kita lakukan kemungkinan adalah mengumpulkan sample dan menelaah secara mendalam. Kita mencari pola-pola yang mungkin untuk spam dan mana yang bukan. Kita membuat abstraksi terhadap pola tersebut sehingga secara heuristics kita dapat mendeteksi kasus-kasus baru kedepannya. Tetapi kita tetap harus update program tersebut untuk mengatasi kasus-kasus yang belum kita kenali sebelumnya. Hal ini akan menimbulkan kesulitan dalam hal maintenance dari program yang kita buat. Pada hal ini kita melihat ada ciri dari machine learning dimana kita belajar dari sample, tetapi kita programmer yang melakukan tersebut. Machine learning menyerahkan task-task tersebut kepada computer program.

Semua algoritma machine learning memiliki satu kesamaan. Sesuatu yang lebih pintar mengajari sesuatu yang tidak pintar. Program yang kita buat pada awalnya adalah tidak pintar karena tidak memiliki pengetahuan. Cara untuk meningkatkan kepintarannya adalah dengan memberikan contoh-contoh sehingga program komputer tersebut menjadi mengerti berdasarkan contoh tersebut.

Algoritma apapun itu akan memiliki pola yang sama. Kita sebagai orang yang akan memakai algoritma tersebut harus mengajarkan dengan contoh. Dalam kasus Artificial Intelligence (AI) dalam game juga kita tetap harus mengajarkan otak atau algoritma agar menjadi pintar. Jika program tersebut hanya terdiri dari if dan else saja maka hal itu bukan AI. Karena tidak bisa mengambil keputusan sendiri tetapi terpatok kepada aturan yang sudah dibuat sebelumnya.

Jadi inti permasalahan yang terbesar pada AI adalah bagaimana kita mengajarkan atau melakukan training terhadap AI tersebut agar menjadi pintar dan memiliki pengetahuan yang cukup untuk menyelesaikan masalah yang belum diajarkan sebelumnya. Program yang akan belajar dan programmer menentukan apa faktor-faktor yang perlu dipelajari oleh AI.

Mari kita melihat contoh dari game RPG. Kita mulai bertanding dengan game yang sama sekali belum ditraining. Untuk pertama kali maka kita akan dengan mudah mengalahkan lawan pada game tersebut. Tetapi setelah bermain beberapa kali, engine atau algorithm dari game tersebut terus belajar dan akhirnya semakin sulit untuk dikalahkan. Programmer akan menentukan faktor-faktor apa yang diperlukan untuk belajar. Contohnya adalah seberapa efektif setiap pergerakan yang dilakukan AI, nilai dari preassure of tactics ataupun escape movement.

Semoga hal ini dapat memberikan gambaran singkat mengenai machine learning, pada blog post berikutnya kita akan membahas masalah-masalah apa yang sering dihadapi dalam machine learning.

 

Cheers

Categories: Machine Learning

Creating scala uber jar executable

March 29, 2017 Leave a comment

Currently we want to have a single jar that contains all the library so it can be run as standalone tools. This can be done with sbt assembly.

If you are using sbt with IntellijIDEA you should add assembly.sbt under project directory.

 

image

 

Enter the following line into assembly.sbt

addSbtPlugin("com.eed3si9n" % "sbt-assembly" % "0.14.4")

image


Refresh the sbt files from the right hand corner. If you don’t see the SBT pane, you can activate from View-> Tool Windows –> SBT

image

 

It will download the plugin to your project.

After it finished downloading. You can then run the sbt assembly command from terminal.

image

After that you can execute your jar by entering the following command. Please adjust that with your jar name and location

java -jar target\scala-2.10\hive-jdbc-assembly-1.0.jar

 

Congrats you now have standalone tools in the single uber jar.

 

Cheers

Categories: Uncategorized

Spark SQL Transfer from Database to Hadoop

March 27, 2017 Leave a comment

Hadoop can store structured and unstructured data. That’s the benefit of schemaless approach. However lots of our customer or data resides in Relation Database. We need to take this first into Hadoop so we can query and transform the data inside Hadoop cluster and optimizing the parallelism.

For transfering the data from relational database to hadoop usually you will use Apache Sqoop for this one. However there’s some limitation and weakness on the data type preserve-ration. Especially around datetime or timestamp. That’s why i suggest to use Spark SQL for this stuff. Spark can also be used as ETL Tools !!

Spark can transform relational database into parquet and avro data structure. So it will safe space and compress it with snappy. You can find the good explanation why we use avro and parquet on the net.

Please refer to the blog post below for transfering the data via Spark with Avro and Parquet as data file.

https://weltam.wordpress.com/2017/03/27/spark-sql-transfer-from-sql-server-to-hadoop-as-parquet/

https://weltam.wordpress.com/2017/03/27/extract-rdbms-as-avro/

Cheers

Categories: Uncategorized