Archive

Archive for the ‘Uncategorized’ Category

Rekursif–Stage 1

July 22, 2017 1 comment

image

Tutorial ini diperuntukkan untuk para pemula yang sudah mengetahui konsep dasar pemrograman seperti percabangan, perulangan dan fungsi. Kita akan memperkaya pengetahuan kita mengenai fungsi rekursif. Dimana fungsi ini sangat berguna sekali untuk paradigma pemrograman brute force, backtracking dan juga dynamic programming.

Oleh karena itu kita akan mulai dengan sangat berlahan

Tutorial pertama yang sangat cocok digunakan oleh pemula adalah TOKI learning. Anda dapat download dan mempelajari slide tersebut dari website berikut ini.

image

Dari sini anda dapat mendowload secara langsung tanpa perlu memiliki account di toki learning. Saya sangat menyarankan anda membuat account di website tersebut karena website tersebut sangat baik digunakan untuk kompetitif programming.

Setelah anda menguasai dasar-dasar rekursif seperti factorial dan eksekusi dari program rekursif tersebut anda dapat melanjutkan nya dengan berlatih di website codingbat berikut.

http://codingbat.com/java/Recursion-1

image

Buatlah account pada website tersebut untuk dapat menyimpan progress anda pada pelajaran rekursif.

Pada website tersebut anda akan dilatih berpikir secara rekursif dari dasar sekali.

Apakah anda sudah dapat mengerjakan semua latihan pada website tersebut ?

Selamat jika sudah. Sekarang kita akan melanjutkan perjalanan kita ke pelatihan rekursif yang lain. Kita kembali ke website tokilearning yang ada di

https://training.ia-toki.org/

Selesaikanlah semua task yang ada di halaman berikut. Pastikan anda telah register terlebih dahulu untuk website tersebut.

https://training.ia-toki.org/training/curriculums/1/courses/1/chapters/17/problems 

image

Oke sekarang setelah kita menyelesaikan task2 tingkat nasional mari kita menuju ke tingkat dunia. Smile

Ada satu lagi materi rekursif yang cocok untuk pemula dari topcoder. Silahkan baca artikel berikut ini.

https://www.topcoder.com/community/data-science/data-science-tutorials/an-introduction-to-recursion-part-1/ 

Silahkan melakukan register ke website topcoder http://www.topcoder.com.

image

Ada dua latihan yang bagus yang dapat dikerjakan di website ini mengenai rekursif tingkat dasar.

DerivativeSequence dan Truckloads. Anda bisa saja menyelesaikan task tersebut secara iteratif atau tanpa rekursif. Tetapi saya sangat menyarankan selesaikanlah dengan rekursif untuk melatih pola pikir anda.

Saya akan melanjutkan perjalanan rekursif kita di blog post berikutnya.

Cheers

Advertisement
Categories: Uncategorized

Berkompetisi di Kaggle – Part 1– Perkenalan dengan Platform dan Dataset

April 20, 2017 Leave a comment

 

image

Seperti janji pada blog post sebelumnya saya akan mengajak anda untuk berjuang dalam kompetisi data science Kaggle. Kaggle merupakan platform kompetisi untuk data science. Kaggle menggunakan platform tersebut untuk menantang para data scientist untuk menyelesaikan tugas yang telah di tentukan. Jika anda pernah mengikuti competitive programming maka anda mungkin sudah familiar dengan TopCoder dsb. Anda dapat menganggap Kaggle adalah TopCoder untuk Data Scientist

 

image

 

Keuntungannya adalah data set yang digunakan adalah data set yang sudah baik dan hanya membutuhkan sedikit data cleansing. Bentuk nya tabular sehingga memudahkan kita untuk melakukan eksplorasi dan pemodelan.

Di kaggle banyak kompetisi yang berjalan, oleh karena itu kita akan memilih kompetisi yang mudah untuk dijadikan sebagai bahan latihan. Project Hello World di kaggle adalah kompetisi Titanic. Dalam kompetisi titanic kita akan memprediksi mana saja penumpang yang akan bertahan hidup atau selamat.

Segera saja kita mulai tanpa panjang lebar. Buka website berikut

https://www.kaggle.com/c/titanic 

Lakukan registrasi jika anda baru pertama kali. Anda dapat sign in dengan menggunakan google plus, facebook ataupun twitter.

Hal yang pertama sekali perlu dilakukan adalah memahami deskripsi dari masalah yang ada. Hal ini dapat di lihat pada bagian description.

SNAGHTML13dc6643

 

Dari dekripsi tersebut kita mengetahui bahwa kompetisi ini tujuannya adalah memberikan tutorial bagi para pemula dalam kontes machine learning. Kita juga mengetahui bahwa tugas yang di berikan adalah memprediksi penumpang selamat atau tidak. Jadi tugas ini merupakan binary classification yang artinya memilih dari 2 pilihan ( selamat atau tidak )

Setelah anda mengetahui masalah yang harus dipecahkan tentu saja selanjutnya kita ingin melihat bagaimana kita akan melakukan deliverables nya. Format dari deliverables yang akan kita submit.

SNAGHTML13e1c36e

Dari penjelasan diatas kita dapat mempelajari format dari submission. Kita diminta untuk mensubmit file dengan format yang telah ditentukan.

Kita sudah mempelajari bagaimana submission nya, sekarang kita masuk ke bagian yang lebih seru yaitu mempelajari data yang ada dan formatnya. Kita dapat melihat di tab Data page.

image

Kita dapat melihat penjelasan dari data yang telah disediakan untuk kompetisi titanic.

image

Data set dibagi menjadi dua yaitu training data set dan test data set. Training data set akan kita gunakan untuk membuat model. Test data set adalah dataset yang kita pakai untuk membuat prediksi apakah selamat atau tidak.

Selain kedua data set tersebut kita juga diberikan contoh dari file submission yaitu gender_submission.csv

image

Mari kita perhatikan isi data set tersebut satu persatu. Pertama-tama kita akan melihat data set training

 

image

Kita dapat melihat bahwa formatnya adalah CSV dan kita juga mempunya header. Kolom yang akan di prediksi juga sudah tersedia yaitu kolom Survived. Mari kita lihat apa perbedaannya dengan test dataset.

SNAGHTML13ec73a3

Test dataset memiliki struktur yang sama dengan train dataset hanya saja tidak memiliki kolom survived. Oke sekarang kita akan melihat dataset terakhir yaitu submission.

image

 

Seperti yang kita lihat kita hanya memiliki dua kolom atau attribute yaitu passenger id dan status selamat atau tidak. File ini adalah file yang sudah memiliki format yang sesuai dengan penjelasan untuk submission. Kita dapat langsung saja mensubmit file ini ke Kaggle untuk Titanic.

Mari kita submit dan lihat hasil dari akurasi prediksi dari file tersebut. Untuk saat ini kita belum melakukan modeling atau bagaimana file tersebut dihasilkan, yang ingin kita dapatkan adalah sense dari bertanding di kaggle secara end to end. File di atas kemungkinan dihasilkan oleh salah satu algorithm blackbox yang dapat digunakan untuk binary classifier.

 

SNAGHTML13f29622

Klik submit prediction yang telah di sediakan.

image

Langsung saja drag and drop gender_submission.csv ke submission.

SNAGHTML13f4d10e

Klik submission maka file kita tersebut akan di grading secara otomatis. Setelah itu kita akan diberikan hasil dari submission tersebut.

image

Selamat anda telah berhasil memberikan submission pertama anda di kaggle. Anda adalah Kagglers now. Data Scientist !

Pada tutorial selanjutnya kita akan melakukan prediksi dan step by step untuk membuat submission kita sendiri dengan pemodelan machine learning.

 

Cheers

Categories: Uncategorized

Machine Learning “Hello World” – Part 03 – Visualisasi

April 19, 2017 1 comment

Ok, Sekarang kita sudah memiliki pengetahuan dasar mengenai apa data yang akan kita olah. Saatnya kita memperdalam dengan visualisasi. Kita akan melihat 2 tipe plots

  • Univariate plot untuk memperdalam pengetahuan tentang masing-masing attribute
  • Multivariate plot untuk mempelajari tentang relasi antar attribute.

Univariate Plot

Kita akan memulai membuat plot untuk masing-masing variable. Kita beruntung karena semua attribute adalah numerik sehingga kita dapat menggunakan box and whisker plot untuk setiap attribute.

image

Untuk mengetahui bagaimana cara membaca whisker plot anda dapat mengikuti tutorial di khanacademy berikut ini.

https://www.khanacademy.org/math/probability/data-distributions-a1/box–whisker-plots-a1/v/constructing-a-box-and-whisker-plot 

 

Kita juga dapat membuat histogram untuk setiap input variable untuk mendapatkan gambaran mengenai probability distribution.

image

Untuk mengetahui lebih lanjut mengenai cara membaca atau membuat histogram anda dapat mengikuti tutorial di khan academy berikut ini

https://www.khanacademy.org/math/probability/data-distributions-a1/displays-of-distributions/v/histograms-intro

Dari gambar tersebut dapat disimpulkan bahwa 2 variable memiliki Gaussian distribution. Hal ini berguna karena kita dapat menggunakan machine learning algorithm yang bekerja bagus dengan tipe Gaussian distribution.

Untuk mengetahui lebih lanjut mengenai gaussian distribution anda dapat mengikuti tutorial di khanacademy.

https://www.khanacademy.org/math/probability/normal-distributions-a2 

Multivariate Plot

Mari kita lanjutkan dengan melihat interaksi antar attribute/variable. Kita akan menggunakan scatter plot untuk pasangan semua attribute yang ada. Plot ini sangat baik digunakan untuk melihat relasi antar struktur dari variable masukan.

 

image

Kita dapat melihat bahwa terdapat struktur diagonal pada scatter plot beberapa attribute hal ini menunjukkan korelasi yang tinggi antar variable tersebut.

Pelajari scatter plot dari khan academy

https://www.khanacademy.org/math/probability/scatterplots-a1/creating-interpreting-scatterplots/v/constructing-scatter-plot

 

Selanjutnya kita akan melanjutkan ke bagian yang paling menarik. Akhirnya kita akan melakukan evaluasi terhadap machine learning algorithm !!

 

Semakin menarik !

 

Cheers

Categories: Uncategorized

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