Perancangan Machine Learning

Pemrograman dibuat untuk menyelesaikan permasalahan. Dalam pemrograman konvensional akan dibuat deretan kode yang memecah masalah tersebut menjadi solusi yang lebih kecil. Sayangnya ketika masalah itu begitu kompleks maka deretan kode yang diperlukan akan sangat banyak. Pada kondisi inilah machine learning dimungkinkan sebagai solusi. Alih-alih membuat deretan kode yang sangat banyak dari suatu permasalahan konteks, machine learning akan membuat penyelesaian lebih sederhana. Tipe machine learning sendiri ada 4, yaitu supervised, unsupervised, semi-supervised, dan reinforcement. Pada tipe reinforcement, mesin menggunakan teknik pengambilan keputusan terbaik, secara berurutan, untuk memaksimalkan ukuran sukses kehidupan nyata. Ada 4 komponen utama pada mesin tipe reinforcement, yaitu action, agent, environment, dan rewards. Semua itu menggambarkan Marcove Decision Process (MDP).

sumber: https://magnitt.com/news/world%E2%80%99s-most-valuable-resource-no-longer-oil-data-21035

Sebagaimana diketahui bahwa oil atau minyak adalah energi utama saat ini. Minyak banyak digunakan untuk kendaraan bermotor atau alat transportasi. Tidak heran jika sebuah negara dengan penghasil minyak yang besar menjadi berlimpah keuntungan. Namun, kedepannya ada sebuah minyak baru, yaitu data. Karena banyaknya data maka sangat dimungkinkan adanya penambangan data sebagai akibat data yang terus tertumpuk. Tentu saja machine learning akan membutuhkan data. Sayangnya saat seluruh data telah terkumpul, seringkali data belum memberikan kualitas yang baik sehingga masih perlu di bersihkan. Tujuannya adalah untuk meningkatkan kualitas dari data. Hal-hal seperti format, skala, duplikasi, missing value, hingga distribusi data akan mempengaruhi kualitas dari data.

Setelah data bersih maka data tersebut sudah siap untuk diproses oleh machine learning. Biasanya machine learning akan menggunakan library seperti pandas untuk memanipulasi data. Data sendiri akan ada 2 jenis yaitu data numerik dan kategorik. Untuk data kategorik perlu diubah dengan skala tertentu seperti skala linkert misalnya atau dalam dunia machine learning dikenal dengan teknik one-hot-encoding. Hal-hal penting yang perlu dilakukan untuk mempersiapkan data seperti:

  1. Outlier Removal
  2. Normalization
  3. Standardization
Setelah data siap, tentu saja akan disimpan dalam satu pool data yang disebut data warehouse. Karena banyaknya data dalam gudang tentu saja diperlukan perhitungan untuk melakukan training terhadap dataset. Biasanya setelah mendapatkan model yang cocok dan ternyata ada beberapa model yang cocok maka tidak bisa dipastikan melalui nilai error terendah, sebab itu hanya berupa sampling. Oleh sebab itu diperlukan langkah setelah training yaitu data validation. Cara paling familiar bagi machine learning adalah supervised, unsupervised, dan semi-supervised. Masing-masing tentu memiliki algoritma yang populer. Supervised memiliki algoritma populer seperti linear regression, logistic regression, classification, decision trees, support vector machines, dan neural networks. Saat akan membedakan sebuah objek dengan class berbeda mungkin decision trees lebih memungkinkan. Jika data memiliki pola linear atau seperti garis lurus maka linear regression mungkin pilihannya, sedangkan jika data hanya untuk memutuskan keberhasilan atau kegagalan maka logistic regression mungkin pilihannya.

Berbeda dengan supervised yang menggunakan data dengan label, di machine learning dengan tipe unsupervised digunakan data tanpa label, jadi machine akan belajar dari pola dan struktur data. Model akan mengumpulkan data ke dalam klaster berbeda. Teknik ini biasa disebut clustering. Seperti di supervised, di unsupervised juga ada algoritma yang populer yaitu clustering, dimensionality reduction, anomaly detection, dan density estimation. Seperti namanya, clustering adalah pengelompokan data yang memiliki kemiripan tertentu. Teknik clustering seringkali digunakan untuk membuat segmentasi pasar. Penting untuk menentukan jumlah cluster yang optimal. Teknik clustering yang cukup populer adalah K-means. Saat melakukan clustering data yang sangat banyak tentu saja itu akan membutuhkan sumber daya komputasi yang besar, terutama data yang berupa pixel. Oleh sebab itu diperlukan metode untuk mereduksi. Teknik populer untuk mereduksi biasanya seperti principal component analysis (PCA), linear discriminant analysis (LDA), dan t-Distributed Stochastic Neighbor Embedding (t-SNE). 

Sumber: https://softscients.com/2020/03/25/klasifikasi-menggunakan-svm/#google_vignette

Tentu saja data-data yang lebih kompleks memerlukan teknik yang lebih baik. Terutama pada data berdimensi tinggi, mungkin saja diperlukan algoritma Support Vector Machine. Support Vector Machine (SVM) adalah suatu metode dalam pembelajaran mesin yang digunakan untuk tugas klasifikasi dan regresi. SVM bekerja dengan mencari hyperplane (bidang pemisah) optimal yang memaksimalkan margin antara dua kelas dalam ruang fitur. Hyperplane ini disebut "support vector". Sebagai contoh sebuah data yang diplot ke dalam 2 dimensi ternyata ada 2 klaster dimana klaster pertama ada di tengah dan klaster kedua ada di sekeliling dari klaster pertama. Dalam kondisi tersebut tentu saja sulit untuk dipisahkan. Oleh sebab itu diperlukan teknik kernel yang mengubah data itu menjadi dimensi lebih tinggi. Secara konsep SVM ini bersifat binary atau hanya membagi menjadi 2 kelas. Selain klasifikasi, SVM dimungkinkan membuat peramalan dengan regresi. 

Sumber: https://medium.com/@rahulanelka10/machine-learning-workflow-c6e51e4c0752

Karena machine learning dibuat dengan data historis kemudian dibuat model maka ada pencocokan atau fitting. Ada 2 tipe fitting yang perlu dihindari yaitu overfitting dan underfitting. Kondisi overfitting adalah saat model terlalu memastikan data dengan model sehingga memungkinkan terjadinya kesalahan dalam prediksi, sebaliknya dengan underfitting yang terlalu memudahkan prediksi yang memungkinkan juga terjadinya kesalahan dalam prediksi. Jadi model yang dibuat harus good fitting atau tidak over dan under. Model yang telah terklasifikasi good fitting masih perlu di tuning untuk mendapatkan hasil yang optimal. Tuning parameter, atau yang sering disebut sebagai hyperparameter tuning, adalah proses mencari kombinasi nilai optimal untuk parameter-parameter yang tidak dapat dipelajari oleh model dalam konteks pembelajaran mesin (machine learning). Parameter ini tidak diajarkan oleh model selama proses pelatihan, tetapi mereka memengaruhi kinerja model dan harus diatur secara manual sebelum atau selama proses pelatihan. Karena adanya beberapa parameter yang akan diuji di model maka digunakan grid search agar beberapa parameter tersebut bisa secara bersamaan diuji ke model.

Menurut Andrew NG, machine learning pada dasarnya adalah rekayasa fitur. Cara populer untuk merekayasa fitur tersebut biasanya berupa binning (pengelompokkan nilai dengan batas tertentu), splitting (memisahkan sebuah atribut menjadi beberapa atribut sehingga lebih mudah dipahami), dan interaction fiture (mengkombinasikan beberapa atribut menjadi satu atribut baru). Dalam melakukan rekayasa ada prinsin yang perlu diperhatikan, yaitu tidy data. Ada 5 prinsip utama dalam tidy data, yaitu setiap variabel sebagai kolom, setiap observasi sebagai baris, setiap jenis pengamatan sebagai tabel, tidak ada kolom yang berisi beberapa variabel, dan nama variabel sebaiknya deskriptif. Banyak dari ilmuan membuat rekayasa berdasarkan fenomena alam seperti ciri khas hewan tertentu atau cara kerja organ tertentu. Teknik rekayasa yang cukup powerful, banyak kegunaan, dan memiliki skalabilitas tinggi misalnya adalah artificial neural network atau jaringan saraf buatan. ANN di dasari dengan cara kerja saraf pada otak manusia. Neuron pada sarap memiliki istilah perceptron di ANN. Teknik rekayasa ANN ada 3 lapis yaitu input layer, hidden layer, dan output layer. Lapisan tersebut yang menjadi satu kesatuan disebut sebagai perceptron. Ketika perceptron ada banyak maka akan membentuk multi layer perceptron. Sekalipun ANN dibuat dengan multi layer, tetap saja kesalahan dalam memberikan keputusan tidak terhindarkan. Oleh sebab itu muncul konsep propagasi balik. Secara sederhana propagasi balik adalah feedback atau penyampaian kesalahan pada komputer agar komputer dapat memperbaiki kesalahannya sehingga menghasilkan output yang lebih diharapkan.

Jaringan yang terbentuk dalam multi layer perceptron akan memiliki bobot. Bobot tersebutlah yang digunakan untuk menghasilkan output harapan. Jika MLP tersebut diterapkan untuk mendeteksi sebuah gambar maka secara otomatis gambar akan diperiksa setiap pixel. Dengan karakteristik dari pixel tersebut maka dapat diidentifikasi apa gambar tersebut. Sayangnya pemeriksaan setiap pixel dari gambar akan membuat proses menjadi tidak efisien. Oleh sebab itu digunakan CNN atau convolutional neural network. Dengan CNN, gambar yang akan diidentifikasi tidak perlu diperiksa setiap pixelnya. Pada proses konvolusi ada proses operasi perkalian matriks terhadap filter dan area pada gambar. hasil dari perhitungan konvolusi tersebut dapat diajadikan masukan untuk MLP. 

Begitu kompleksnya dalam membangun machine learning mendorong komunitas untuk saling berkontribusi. Google menjadi kontributor atas terciptanya framework TensorFlow. Dapat dikatakan TensorFlow merupakan framework end-to-end karena mulai dari data di-train hingga production dapat digunakan. Biasanya TensorFlow digunakan untuk backend dari machine learning dan Keras digunakan untuk frontend dari machine learning. Artinya ada keterkaitan antara TensorFlow dan Keras. Keduanya dapat dikolaborasikan untuk membuat MLP dan CNN. Setelah model dilatih dan didapatkan hasil yang memuaskan maka model tersebut akan diterapkan di production. Model tersebut disimpan dalam satu file untuk di deploy pada server. Sebagaimana diketahui bahwa model tersebut didapatkan dari latihan data sehingga dapat dikatakan model itu representasi dari function khusus untuk menghasilkan output yang diharapkan. Setelah model di deploy pada production, model tersebut masih perlu terus dimonitor untuk memperbaiki kinerjanya. Karena adanya monitoring maka sangat dimungkinkan adanya pengaturan ulang dan pembelajaran ulang.


ref:
discuss.tensorflow.org
python.org
tensorflow.org

Komentar