Showing posts with label python. Show all posts
Showing posts with label python. Show all posts
Monday, June 15, 2020

Data Preparation Pada Machine Learning


Setelah dataset dibersihkan masih ada beberapa tahap yang perlu dilakukan agar dataset benar-benar siap untuk diproses oleh model machine learning. 

Umumnya beberapa model machine learning tidak dapat mengolah data kategorik, sehingga kita perlu melakukan konversi data kategorik menjadi data numerik. Data kategorik adalah data yang berupa kategori dan berjenis string. Contoh data kategorik adalah sebuah kolom pada dataset yang berisi jenis binatang seperti anjing, kucing, dan harimau. 
Contoh lain dari data kategorik adalah merek mobil seperti Ford, Honda, Toyota, dan BMW.
Banyak model machine learning seperti Regresi Linear dan Support Vector Machine (kedua model ini akan dibahas pada modul-modul selanjutnya) yang hanya menerima input numerik sehingga tidak bisa memproses data kategorik. Salah satu teknik untuk mengubah data kategorik menjadi data numerik adalah dengan menggunakan One Hot Encoding. One Hot Encoding mengubah data kategorik dengan membuat kolom baru untuk setiap kategori seperti gambar di bawah.
20200430154346caec6dbf5518bc7c5a241b174cfc3a1b.jpeg

Data Preparation Opsional

Selain konversi data kategorik menjadi numerik, ada beberapa teknik lain dalam data preparation. Teknik yang akan dibahas antara lain membuang outliernormalization, dan standardization.

Outlier Removal

Dalam statistik, outlier adalah sebuah nilai yang jauh berbeda dari kumpulan nilai lainnya dan dapat mengacaukan hasil dari sebuah analisis statistik. Outlier dapat disebabkan kesalahan dalam pengumpulan data atau nilai tersebut benar ada dan memang unik dari kumpulan nilai lainnya.
Apapun alasannya kemunculannya, Anda perlu  mengetahui cara untuk mengidentifikasi dan memproses outlier. Ini adalah bagian penting dalam persiapan data di dalam machine learning. Salah satu cara termudah untuk mengecek apakah terdapat outlier dalam data kita adalah dengan melakukan visualisasi.
Berikut adalah contoh visualisasi terhadap data yang memiliki outlier.
202004301555150d113eb06db6c4e104e9b724fad52555.png
Dapat dilihat dengan jelas bahwa terdapat satu sampel yang jauh berbeda dengan sampel-sampel lainnya. Setelah mengetahui bahwa di data kita terdapat outlier, kita dapat mencari lalu menghapus sampel tersebut dari dataset.

Normalization

Normalization adalah salah satu teknik yang dipakai dalam data preparation. Tujuan dari normalisasi adalah mengubah nilai-nilai dari sebuah fitur ke dalam skala yang sama. Normalization memungkinkan kenaikan performa dan stabilitas dari sebuah model machine learning.
20200430155735c949cd9523d20175467d1643bed7f813.jpeg
Contoh dari normalization adalah ketika kita memiliki dataset seperti di atas yang memiliki fitur umur dengan skala 23 sampai 45 tahun, dan fitur penghasilan dengan skala 4.000.000 sampai 35.000.000. Di sini kita melihat bahwa fitur penghasilan sekitar satu juta kali lebih besar dari fitur umur dan menunjukkan kedua fitur ini berada pada skala yang sangat jauh berbeda.
Ketika membangun model seperti regresi linear, fitur penghasilan akan sangat mempengaruhi prediksi dari model karena nilainya yang jauh lebih besar daripada umur. Walaupun, tidak berarti fitur tersebut jauh lebih penting dari fitur umur. 
Salah satu contoh dari normalization adalah min-max scaling di mana nilai-nilai dipetakan ke dalam skala 0 sampai 1. SKLearn menyediakan library untuk normalization
Pada Colab kita Import library MinMaxScaler dan masukkan data dari tabel sebelumnya.


  1. from sklearn.preprocessing import MinMaxScaler

  2. data = [[12000000, 33], [35000000, 45], [4000000, 23], [6500000, 26], [9000000, 29]]


Pada cell selanjutnya kita buat object scaler dan panggil fungsi fit() pada data. Fungsi fit adalah fungsi untuk menghitung nilai minimum dan maksimum pada tiap kolom.


  1. scaler = MinMaxScaler()

  2. scaler.fit(data)


Apabila dijalankan maka hasilnya sebagai berikut.
2020043016071564b4f2f87f2af4fc5ef60483f079371b.png
Terakhir kita panggil fungsi transform yang akan mengaplikasikan scaler pada data.


  1. print(scaler.transform(data))


Hasil dari kode di atas seperti berikut.
202004301614398f717037932084ad68331b63170a1f37.jpeg 
Setiap nilai dari kolom gaji dan umur telah dipetakan pada skala yang sama seperti di bawah ini.
2020043016155873320389e0b4e482f69c150aeb7b0776.jpeg 
Untuk informasi lebih detail tentang Min Max Scaler, silakan Anda kunjungi tautan berikut.

Standardization

Standardization adalah proses untuk konversi nilai-nilai dari suatu fitur sehingga nilai-nilai tersebut memiliki skala yang sama. Z score adalah metode paling populer untuk standardisasi di mana setiap nilai pada sebuah atribut numerik akan dikurangi dengan rata-rata dan dibagi dengan standar deviasi dari seluruh nilai pada sebuah kolom atribut.
20200430162138dfa3caab88669d378e1b6f2b6e8cf084.jpeg
Fungsi standarisasi sama dengan normalization. Keduanya berfungsi menyamakan skala nilai dari tiap atribut pada data. SKLearn menyediakan library untuk mengaplikasikan standard scaler pada data.
20200430162315b1fae9ce77530470c7bc9d1027d2a721.jpeg
Pada colab di cell pertama, kita akan mengimport library preprocessing dari scikit learn lalu membuat data dummy sesuai dengan tabel di atas.


  1. from sklearn import preprocessing

  2. data = [[12000000, 33], [35000000, 45], [4000000, 23], [6500000, 26], [9000000, 29]]


Selanjutnya kita buat object scaler dan panggil fungsi fit dari scaler pada data. Fungsi fit memiliki fungsi untuk menghitung rata-rata dan deviasi standar dari setiap kolom atribut untuk kemudian dipakai pada fungsi transform.


  1. scaler = preprocessing.StandardScaler().fit(data)


Terakhir, kita panggil fungsi transform untuk mengaplikasikan standard scaler pada data. Untuk melihat hasil dari standard scaler kita tinggal memanggil objek scaler yang telah kita buat sebelumnya. Kodenya sebagai berikut.


  1. data = scaler.transform(data)

  2. data


Hasil akhirnya apabila dijalankan seperti di bawah ini.
20200430163503a199d1009837f9252c23dd82a73a2e6c.png
Untuk informasi lebih detail tentang standardization, silakan Anda kunjungi tautan berikut.
Cara Konversi Pandas Dataframe

Cara Konversi Pandas Dataframe

Kode program yang akan diajarkan di sini bisa diunduh di tautan berikut ini, untuk membukanya upload berkasnya dari Google Colab.
Setelah sebelumnya kita mengenal library Pandas, sekarang kita akan belajar menggunakan library tersebut.

Pandas memiliki fungsi untuk mengubah data dari berbagai jenis menjadi dataframe seperti yang telah dibahas di submodul sebelumnya.

Contohnya, untuk mengubah data CSV menjadi dataframe, kita hanya cukup memanggil fungsi pandas.read_csv() dan memasukkan nama berkas pada parameternya. Berikut adalah contoh mengubah data csv menjadi dataframe Pandas. 
Pertama kita bisa buka Google Collab, dengan mengunjungi tautan colab.research.google.com. Anda bisa menekan tombol Notebook Baru pada halaman pertama.

20200430140224d920072d867534a5f2e0aed6bc5440ee.jpeg
Pada notebook baru, kita akan melakukan Import library pandas dan memberikan alias ‘pd’ untuk library tersebut. Memberikan alias ‘pd’ terhadap library pandas adalah praktek yang umum dilakukan para pengembang ML.


  1. import pandas as pd


Colab memiliki direktori yang menyimpan berkas-berkas umum yang dapat dipakai untuk berbagai keperluan. Berkas-berkas bawaan tersebut disimpan dalam sebuah direktori bernama ‘sample_data’.
Untungnya, notebook pada Colab kita memiliki berkas csv yang dapat kita pakai untuk mencoba library pandas. Anda juga bisa melihat beberapa berkas bawaan yang disediakan Colab dengan menggunakan library os.


  1. import os

  2. os.listdir('sample_data')



Pada latihan ini kita akan mencoba melakukan konversi dari berkas california_housing_train.csv’ yang merupakan bawaan dari Colab. Untuk mengubah berkas csv menjadi dataframe, kita menggunakan fungsi ‘read_csv’ pada library pandas kemudian menyimpannya pada sebuah variabel yaitu df.


  1. df = pd.read_csv('sample_data/california_housing_train.csv')

  2. df.head()



Untuk melihat apakah konversi berhasil, Anda bisa memanggil fungsi head() pada dataframe. Lalu jalankan cell tersebut. Fungsi head() akan menampilkan 5 baris teratas dari sebuah dataframe. 
Jika keluaran dari cell seperti di bawah, maka selamat, Anda berhasil melakukan konversi.

20200430141515bc3e5f07d2baea9d00b348eea83d723d.png

Belajar Machine Learning Tahap Awal : Data Processing


Data Processing

Pada materi sebelumnya kita telah belajar tentang pengenalan Machine Learning (ML). Namun, harus dimulai dari manakah jika kita ingin memulai proyek ML? Data processing adalah tahap paling awal dalam setiap proyek ML. 

Pada tahap ini data akan diambil dari sumber tertentu, dimasukkan pada suatu environment, dan diproses agar bisa diolah oleh model machine learning.
Machine learning sama seperti mengajari seorang anak kecil. Ketika mengajari anak kecil membedakan antara buah apel dan buah jeruk, kita tinggal memperlihatkan buahnya dan memberi tahu mana apel dan mana jeruk. 
Namun demikian, komputer saat ini belum secanggih itu sehingga kita perlu mempersiapkan data dengan data processing agar bisa dimengerti komputer. 
Salah satu library yang paling populer untuk pengolahan data dalam machine learning adalah Pandas Library. Pandas Library adalah salah satu library yang wajib Anda kuasai dalam bidang machine learning.

Pandas Library

Pandas adalah sebuah library open source yang dipakai untuk menganalisis dan memanipulasi data. Pandas dibangun menggunakan bahasa pemrograman Python yang menawarkan struktur data dan operasi untuk manipulasi tabel numerik dan time series. 
Tabel numerik adalah tabel yang berisi bilangan numerik, dan Tabel time series adalah tabel yang berubah seiring waktu, misalnya tabel yang memuat perubahan nilai pasar saham untuk setiap menitnya.
Berbagai jenis data yang umum dipakai dalam ML seperti CSV dan SQL dapat diubah menjadi dataframe pandas
Dataframe adalah sebuah tabel yang terdiri dari kolom dan baris dengan banyak tipe data di dalamnya. Pandas terintegrasi dengan library machine learning yang populer seperti Scikit Learn (SKLearn) dan Numpy.
Pandas mendukung banyak jenis data yang dapat dipakai dalam sebuah project machine learning. Berikut adalah beberapa contoh data yang dapat diolah dengan pandas.
  • CSV
    CSV adalah sebuah format data di mana elemen dari setiap baris dipisahkan dengan koma. CSV sendiri adalah singkatan dari Comma Separated Value.
  • SQL
    Standard Query Language adalah sebuah data yang berasal dari sebuah relational database. Format data ini berisi sebuah tabel yang memiliki format data seperti integer, string, float, dan biner.
  • EXCEL
    Excel adalah berkas yang didapat dari spreadsheet seperti Microsoft Excel atau Google Spreadsheet. File Excel biasanya memuat data numerik.
  • SPSS
    SPSS atau Statistical Package for the Social Science adalah sebuah berkas dari perangkat lunak yang biasa dipakai untuk statistik dan pengolahan data. File spss disimpan dalam dan memiliki ekstensi file .sav.
  • JSON
    JSON atau Javascript Object Notation adalah salah satu format data yang menggunakan sistem Key - Value di mana sebuah nilai disimpan dengan key tertentu untuk memudahkan mencari data.  
Pada kelas ini kita hanya akan menggunakan data berjenis csv, karena data tipe ini mudah didapat di situs penyedia data Machine Learning, contohnya seperti Kaggle.

Google Colab

Sebelum kita masuk ke latihan menggunakan library Pandas, kita perlu mengenal tools yang akan kita gunakan dalam menjalankan program ML kita. 
Dalam kelas ini kita akan menggunakan Google Colaboratory untuk menjalankan seluruh project machine learning kita.
Google Colaboratory atau sering juga disebut “Colab” adalah sebuah tools dari Google yang dibuat untuk keperluan mengolah data, belajar, dan bereksperimen khususnya dalam bidang Machine Learning. Colab berjalan sepenuhnya pada Cloud dengan memanfaatkan media penyimpanan Google Drive. 
Untuk membuka Google Colab, Anda dapat membuka tautan ini colab.research.google.com
Berikut adalah tampilan antarmuka dari Google Colaboratory. Untuk membuat dan menyimpan proyek pada Google Colab Anda harus login terlebih dahulu menggunakan akun Google Anda.

2020043013590971c4e65a4270dec94fd48ec17e470f9a.jpeg

Agar dapat mengerjakan latihan-latihan pada kelas ini, pastikan Anda memahami bagaimana dasar-dasar menggunakan Colab. Untuk mengetahui lebih lanjut tentang Colab, Anda dapat mengunjungi tautan berikut

4 Tipe Machine Learning dan Jenis nya


Machine Learning terbagi menjadi 4 kategori umum:

Supervised Learning

  • Pada supervised learning, dataset yang digunakan memiliki label. Label adalah tag atau pengenal dari sebuah data. Misalnya sebuah buah memiliki atribut berwarna hijau, berat lebih dari 500 gram, kulitnya keras, berduri, memiliki bau yang menyengat, dan daging buahnya manis. Buah yang memiliki karakteristik seperti yang disebutkan dikenali sebagai durian, maka label dari atribut tersebut adalah durian. Klasifikasi email spam adalah contoh dari supervised learning.
Unsupervised Learning

  • Pada unsupervised learning, dataset yang digunakan tidak memiliki label. Model unsupervised melakukan belajar sendiri untuk melabeli atau mengelompokkan data. Contoh kasus unsupervised adalah dari data 100 pengunjung sebuah website, model akan belajar sendiri untuk mengelompokkan pengunjung. Mungkin berdasarkan waktu kunjungan, lama kunjungan, jumlah klik, dan sebagainya.
Semi Supervised Learning

  • Semi Supervised merupakan gabungan dari supervised learning dan unsupervised learning. Pada model semi supervised, dataset untuk pelatihan sebagian memiliki label dan sebagian tidak. Implementasi dari model semi supervised yang sering kita gunakan misalnya pada Google Photos. Pada Google Photos kita bisa memberi tag untuk setiap orang yang terdapat pada sebuah foto. Alhasil, ketika kita mengunggah foto baru dengan wajah orang yang sudah kita beri tag sebelumnya, Google Photos akan secara otomatis mengenali orang tersebut. Salah satu contoh dari model semi supervised adalah Deep Belief Network (DBN).
Reinforcement Learning
  • Reinforcement Learning adalah model yang belajar menggunakan sistem reward dan penalties. Model belajar agar terus mendapatkan reward dan menghindari penalties. Alpha Go adalah contoh terkenal dari reinforcement learning. Alpha Go adalah sebuah program yang dikembangkan Google DeepMind untuk memainkan permainan Go, sebuah permainan papan yang berasal dari Cina. Alpha Go mempelajari setiap langkah dalam jutaan permainan go untuk terus mendapatkan reward yaitu memenangkan sebuah permainan. Alpha Go menjadi terkenal setelah menjadi program komputer pertama yang berhasil mengalahkan pemain profesional.

Pengenalan Machine Learning untuk Pemula


Machine Learning (ML), menurut Arthur Samuel, seorang ilmuwan komputer yang mempelopori kecerdasan buatan, adalah sebuah bidang yang memberi komputer kemampuan untuk belajar tanpa diprogram secara eksplisit

Apa contoh sederhana dari Machine Learning? Filter spam pada layanan email, contohnya. 
Saat kita menandai satu email sebagai spam, maka program akan mempelajari anatomi email tersebut untuk mengantisipasi email-email masuk berikutnya spam atau bukan. Jika mirip, sebuah email baru akan masuk kategori spam, dan sebaliknya. 

Uniknya, Machine Learning bukanlah hal yang baru. Filter email spam tersebut telah ada sejak tahun 1990-an saat internet boom. Alhasil, hidup jutaan orang pengguna email, jadi lebih mudah. Kita jadi tak perlu sering menandai sebuah email jika itu adalah spam. 
Setelah itu mulai muncul ratusan implementasi dari ML yang sekarang kita gunakan sehari-hari saat ini. Merentang dari rekomendasi video di Youtube, hingga kontrol suara seperti pada Google Assistant. Yup, itu semua adalah bentuk Machine Learning. 
Selain Machine Learning, Anda juga pasti pernah mendengar yang namanya artificial intelligence atau kecerdasan buatan sering dikaitkan dengan machine learning. Lalu, apa hubungan antara AI dan ML?. 

Machine learning adalah sebuah cabang dari AI. Kecerdasan buatan memiliki pengertian yang sangat luas, umumnya memiliki arti bagaimana komputer bisa memiliki kecerdasan seperti manusia. 
Sedangkan ML memiliki arti lebih spesifik yaitu menggunakan metode statistika untuk membuat komputer dapat mempelajari pola pada data. Jadi, ketika Anda ditanya tentang hubungan AI dan ML di kemudian hari, Anda bisa menjawabnya seperti itu ya. 
202004301310357d199eed462f7af11aa1195ea511ed96.jpeg

Mengapa Machine Learning?

Bayangkan jika kita bertugas mengembangkan sebuah aplikasi filter spam dengan pemrograman tradisional. Seperti inilah langkah-langkah konvensionalnya:
  1. Pertama kita akan mendefinisikan bagaimana sebuah email termasuk kategori spam atau tidak. Misalnya kita mengidentifikasi bahwa pada email spam umumnya terdapat kata-kata seperti “gratis”, “kaya”, “instan”, dan “murah”.
  2. Kita kemudian menulis algoritma untuk setiap pola yang kita temukan pada email spam. Program pun akan menandai sebuah email spam jika menemui pola terkait.
  3. Terakhir kita akan mengulangi langkah 1 dan 2 sampai program kita cukup baik untuk diluncurkan.
Karena kita menulis program menggunakan cara tradisional, hasilnya tentu daftar panjang berisi aturan-aturan rumit yang sulit maintain
Mari bandingkan jika kita menggunakan ML untuk mengembangkan filter spam tersebut. ML akan secara otomatis mempelajari pola kata-kata yang menentukan sebuah email spam atau bukan. 
Program dengan ML pun menjadi relatif lebih sederhana dan mudah untuk dipelihara. Flowchart di bawah menunjukkan bagaimana alur pengembangan sebuah proyek Machine Learning.
7KcZhiLB7uRWyNxB3nfPqOpz6tPaCSRD5r5SMuL9qV5IbAA2ZFvdw5qBxHzu0Cur-NwK_AJShNo30ok9H8f6j-CRi7LbdgOs4yVlNMg1M5suGDi9hyQN8FxL7hJHWDFVZo0F_3yf