news

Tampilkan postingan dengan label ai. Tampilkan semua postingan
Tampilkan postingan dengan label ai. Tampilkan semua postingan

Senin, 15 Juni 2020

Apa itu Support Vector Machine?

Support Vector Machine

Support Vector Machine (SVM) adalah sebuah model ML multifungsi yang dapat digunakan untuk klasifikasi linier dan non-linierregresi, dan bahkan pada pendeteksian outlier.


SVM adalah salah satu metode yang paling populer dalam machine learning. Siapa pun yang tertarik untuk masuk ke dalam dunia ML, perlu mengetahui SVM.

Sistem Recommendation didalam Machine Learning


Rekomendasi atau sistem rekomendasi adalah salah satu implementasi machine learning yang kita pakai hampir setiap hari.
Contohnya pada saat kita belanja daring, terdapat jutaan pilihan produk pada platform tersebut. Akan membuang banyak waktu jika kita harus melihat semua opsi tersebut. Sistem rekomendasi memiliki peran penting untuk membantu kita menemukan produk yang benar-benar kita cari.

20200430211404863824830dd0d01ac3d01f47082b2189.jpeg 
Selain pada platform belanja daring, sistem rekomendasi juga hadir dalam aplikasi yang kita pakai sehari-hari seperti Youtube dan Spotify yang merekomendasikan video dan lagu yang menarik perhatian kita.
Nah, setelah mengetahui berbagai model machine learning, kita paham bahwa setiap dataset dan kasus memiliki pendekatan model yang berbeda. Kelas pengenalan ini hanya akan membahas 2 model machine learning yang paling umum yaitu classification dan regresi

Belajar SKLearn - Logistic Regression



Pada latihan ini kita akan menggunakan logistic regression untuk memprediksi apakah seseorang akan membeli setelah melihat iklan sebuah produk. Dataset untuk latihan bisa Anda unduh pada tautan berikut.
Seperti biasa, setelah kita mengunggah berkas data pada Colab kita akan mengubah dataset menjadi dataframe Pandas. Jangan lupa juga untuk mengimpor library dasar.


  1. import pandas as pd

  2. from sklearn.model_selection import train_test_split

  3. from sklearn.preprocessing import StandardScaler

  4. df = pd.read_csv('Social_Network_Ads.csv')


Pada cell selanjutnya gunakan fungsi head() pada dataframe untuk melihat 5 baris pertama dari dataset.


  1. df.head()


Hasil dari fungsi df.head() seperti di bawah ini.
202004302238474d62c7da27d447baa0b8d30b89f3e4bc.png
Kita juga perlu melihat apakah ada nilai yang kosong pada setiap atribut dengan menggunakan fungsi info(). Dapat dilihat bahwa nilai pada semua kolom sudah lengkap.


  1. df.info()


Sedangkan tampilan hasil dari fungsi df.info() sebagai berikut.
20200430223940c9aee990b8a1763c632e1362f5f26a2c.png
Pada dataset terdapat kolom ‘User ID’. Kolom tersebut merupakan atribut yang tidak penting untuk dipelajari oleh model sehingga perlu dihilangkan. Untuk menghilangkan kolom dari dataframe, gunakan fungsi drop.


  1. data = df.drop(columns=['User ID'])

  2. data = pd.get_dummies(data)

  3. data


Ketika kode di atas dijalankan hasilnya seperti di bawah ini.
202004302240572131844a873e8b6bf9f7605bae936cd0.png
Kemudian kita pisahkan antara atribut dan label.


  1. predictions = ['Age' , 'EstimatedSalary' , 'Gender_Female' , 'Gender_Male']

  2. = data[predictions]

  3. y = data['Purchased']


Jangan lupa untuk membagi data menjadi train set dan test set yang dapat dilakukan dengan fungsi train_test_split yang disediakan SKLearn.


  1. X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.25, random_state=42)


Setelah membagi data, kita buat model dengan membuat sebuah objek logistic regression. Setelah model dibuat, kita bisa melatih model kita dengan train set menggunakan fungsi fit().


  1. from sklearn import linear_model

  2. model = linear_model.LogisticRegression()

  3. model.fit(X_train, y_train)


Setelah model dilatih, kita bisa menguji akurasi model pada test set dengan memanggil fungsi score() pada objek model.


  1. model.score(X_test, y_test)


Sehingga hasilnya sebagai berikut.
20200430210047c805faedb2c063c94cd62c49d6527491.png

Supervised : Regression


Jenis kategori selanjutnya adalah regression. Tahukah Anda apa itu regression atau regresi? Regresi adalah salah satu teknik ML yang mirip dengan klasifikasi. Bedanya, pada klasifikasi sebuah model ML memprediksi sebuah kelas, sedangkan model regresi memprediksi bilangan kontinu. Bilangan kontinu adalah bilangan numerik. 

Jadi model klasifikasi memprediksi kelas atau kategori, dan model regresi memprediksi sebuah nilai berdasarkan atribut yang tersedia. Agar lebih paham, perhatikan contoh di bawah.
202004301958437804e751653c6c4f5e4b1da485747d95.jpeg
Pada contoh data di atas, model regresi akan memprediksi gaji berdasarkan atribut lama bekerja, industri, dan tingkat pendidikan. Gaji adalah contoh dari bilangan kontinu, di mana gaji tak memiliki kategori-kategori yang terbatas.
Pada submodul ini, jenis regresi yang akan dibahas adalah regresi linier. Selain regresi linier terdapat juga jenis regresi lain seperti regresi polinomial, lasso regression, stepwise regression dan sebagainya. Untuk penjelasan dari jenis-jenis regression yang ada, kunjungi tautan berikut.

Linear Regression

Regresi linier adalah salah satu metode supervised yang masuk dalam golongan regression, sesuai namanya. Contoh paling terkenal dari regresi linier adalah memperkirakan harga rumah berdasarkan fitur yang terdapat pada rumah seperti luas rumah, jumlah kamar tidur, lokasi dan sebagainya. Ini adalah model paling sederhana yang perlu diketahui guna memahami metode machine learning lain yang lebih kompleks. Regresi linier cocok dipakai ketika terdapat hubungan linear pada data. Namun untuk implementasi pada kebanyakan kasus, ia kurang direkomendasikan. Sebabnya, regresi linier selalu mengasumsikan ada hubungan linier pada data, padahal tidak.  
  1. Secara sederhana regresi linear adalah teknik untuk memprediksi sebuah nilai dari variable Y (variabel dependen) berdasarkan beberapa variabel tertentu X (variabel independen) jika terdapat hubungan linier antara X dan Y.
  2. Hubungan antara hubungan linier dapat direpresentasikan dengan sebuah garis lurus (disebut garis regresi). Ilustrasi hubungan linier dapat dilihat pada gambar di mana data-data cenderung memiliki pola garis lurus.
    2020043020020610838a2299c27db5b7ed54564ae20785.jpeg 
  3. Ketika sebuah garis regresi digambar, beberapa data akan berada pada garis regresi dan beberapa akan berada di dekat garis tersebut. Sebabnya, garis regresi adalah sebuah model probabilistik dan prediksi kita adalah perkiraan. Jadi tentu akan ada eror/penyimpangan terhadap nilai asli dari variabel Y. Pada gambar di bawah, garis merah yang menghubungkan data-data ke gari regresi merupakan eror. Semakin banyak eror, menunjukkan bahwa model regresi itu belum optimal.
    20200430200429fa63249947b88608194aa76dfa1ac93d.png

Logistic Regression

Setelah sebelumnya Anda mengenal regresi linier untuk masalah regresi, ada juga model seperti logistic regression, terlepas dari namanya merupakan sebuah model yang dapat digunakan untuk klasifikasi. 
Logistic regression regression dikenal juga sebagai logit regressionmaximum-entropy classification, dan log-linear classification merupakan salah satu metode yang umum digunakan untuk klasifikasi. Pada kasus klasifikasi, logistic regression bekerja dengan menghitung probabilitas kelas dari sebuah sampel. 
Sesuai namanya, logistic regression menggunakan fungsi logistik seperti di bawah untuk menghitung probabilitas kelas dari sebuah sampel. Contohnya sebuah email memiliki probabilitas 78% merupakan spam maka email tersebut termasuk dalam kelas spam. Dan jika sebuah email memiliki <50% probabilitas merupakan spam, maka email tersebut diklasifikasikan bukan spam.
202004302011423db248704e02d7162015de26d7cdb85e.png

Belajar SKLearn Linear Regression



Library SKLearn menyediakan implementasi dari regresi linier. Pada latihan kali ini kita akan memprediksi harga rumah berdasarkan jumlah kamar.
Pertama kita mengimpor library yang diperlukan. Lalu buat data dummy menggunakan numpy array.


  1. import numpy as np

  2. import matplotlib.pyplot as plt

  3. #buat data jumlah kamar

  4. bedrooms = np.array([1,1,2,2,3,4,4,5,5,5])

  5. #data harga rummah. asumsi dalam dollar

  6. house_price = np.array([15000, 18000, 27000, 34000, 50000, 68000, 65000, 81000,85000, 90000])


Selanjutnya kita bisa mencoba menampilkan data tersebut dalam bentuk scatter plot. Jumlah kamar pada sumbu X adalah variabel independen dan harga rumah pada sumbu Y  adalah variabel dependen.


  1. # menampilkan scatter plot dari dataset

  2. %matplotlib inline

  3. plt.scatter(bedrooms, house_price)


Tampilan dari kode tersebut sebagai berikut.
2020043022040207468b0dbc0073eed758a4f10fd28dfe.png
Lalu pada cell berikutnya, kita bisa mulai melatih model kita dengan memanggil fungsi LinearRegression.fit() pada data kita.


  1. from sklearn.linear_model import LinearRegression

  2. bedrooms = bedrooms.reshape(-1, 1)

  3. linreg = LinearRegression()

  4. linreg.fit(bedrooms, house_price)


Terakhir kita bisa melihat bagaimana model kita menyesuaikan dengan data yang kita miliki dengan membuat plot dari model kita.


  1. plt.scatter(bedrooms, house_price)

  2. plt.plot(bedrooms, linreg.predict(bedrooms))


Hasilnya sebagai seperti di bawah ini
20200430220854df958b5b61338e32befd7688a7e67475.png
Model regresi linier adalah salah satu model machine learning yang paling sederhana. Model ini memiliki kompleksitas rendah dan bekerja sangat baik pada dataset yang memiliki hubungan linier. Jadi, ketika Anda menemui masalah yang terlihat memiliki hubungan linier, regresi linier dapat menjadi pilihan pertama sebagai model untuk dikembangkan

Belajar SKLearn Decision Tree

Kode program yang akan diajarkan di sini bisa diunduh di tautan berikut ini, untuk membukanya upload berkasnya dari Google Colab.
Pada sub modul latihan ini, kita akan menggunakan data yang lebih kompleks dari sebuah numpy array. Untuk coding practice kali ini kita akan memakai dataset Iris, salah satu dataset paling populer yang dipakai dalam belajar ML.
Dataset iris terdiri dari 4 atribut yaitu panjang sepal, lebar sepal, panjang petal, dan lebar petal. Terdapat 3 kelas target pada dataset ini. Data ini dipakai untuk masalah klasifikasi, di mana kita bisa memprediksi spesies dari sebuah bunga berdasarkan atribut-atribut yang diberikan.
Pertama kita akan mengimpor library yang dibutuhkan dan mempersiapkan dataset. Dataset dapat anda unduh di tautan berikut. Setelah data diunduh, masukkan berkas Iris.csv ke dalam Colab. Lalu jangan lupa konversi dataset menjadi dataframe Pandas.


  1. from sklearn.tree import DecisionTreeClassifier

  2. import pandas as pd

  3. from sklearn.datasets import load_iris

  4. iris = pd.read_csv('Iris.csv')


Untuk melihat informasi mengenai data, Anda bisa memanggil fungsi .head() pada dataframe.


  1. iris.head()



Tampilan iris.head() saat dijalankan sebagai berikut.

20200430194633ed099255911d0df57032af369f28d8eb.pngDapat dilihat bahwa terdapat kolom yang tidak penting pada dataset yaitu kolom ‘Id’. Untuk menghilangkan kolom tersebut kita bisa menggunakan fungsi drop().


  1. iris.drop('Id',axis=1,inplace=True)


Selanjutnya kita pisahkan antara atribut dan label untuk pelatihan model kita.


  1. X = iris[['SepalLengthCm', 'SepalWidthCm', 'PetalLengthCm', 'PetalWidthCm' ]]

  2. y = iris['Species']


Kemudian buat model decision tree kita. Terakhir kita melatih model kita dengan menggunakan fungsi fit(). Keluaran dari cell di bawah menunjukkan bahwa model decision tree telah dilatih dan parameter-parameternya juga ditampilkan. Penjelasan mengenai parameter akan dibahas di modul-modul selanjutnya.


  1. # membuat model Decision Tree

  2. tree_model = DecisionTreeClassifier() 

  3. # melakukan pelatihan model terhadap data

  4. tree_model.fit(X, y)


Kita bisa mencoba model yang telah kita buat untuk memprediksi spesies dari sebuah bunga Iris. Masih ingat bukan, bahwa atribut yang menjadi masukan dari model adalah panjang sepal, lebar sepal, panjang petal, dan lebar petal. Kita masukkan nilai yang sesuai dengan format tersebut secara berurutan dalam satuan centimeter. Pada kode di bawah kita ingin memprediksi spesies dari sebuah bunga iris yang memiliki panjang sepal 6,2 centimeter, lebar sepal 3,4 centimeter, panjang petal 5,4 centimeter, dan lebar petal 2,3 centimeter. Hasil prediksi dari model kita adalah virginica.


  1. # tree_model.predict([[SepalLength, SepalWidth, PetalLength, PetalWidth]])

  2. tree_model.predict([[6.2, 3.4, 5.4, 2.3]])


Jika kode tersebut dijalankan, maka tampilannya seperti di bawah ini.
20200430195410b8c2cf9a56cca17f420e48b06d4e77b4.png
Kita juga bisa melihat visualisasi dari decision tree yang kita buat terhadap data dengan menggunakan library Graphviz. Hasil dari graphviz adalah dot file yang akan muncul pada folder file pada panel di kiri Colab.


  1. from sklearn.tree import export_graphviz

  2. export_graphviz(

  3.     tree_model,

  4.     out_file = "iris_tree.dot",

  5.     feature_names = ['SepalLengthCm', 'SepalWidthCm', 'PetalLengthCm', 'PetalWidthCm'],

  6.     class_names = ['Iris-setosa', 'Iris-versicolor', 'Iris-virginica' ],

  7.     rounded= True,

  8.     filled =True

  9. )


Setelah berhasil dijalankan, hasil dari iris_tree.dot terlihat seperti di bawah ini.
202004302237153b788bdee82a9ee4b5ae306daa70003d.png
Untuk melihat visualisasi decision tree kita bisa mengkonversi dot file ke dalam file png. Untuk mengunduh berkas iris_tree.dot pada gambar di atas, kita dapat melakukan klik kanan pada berkas tersebut dan mengunduhnya. Untuk konversi berkas dengan ekstensi dot menjadi berkas png dapat dilakukan di situs https://convertio.co/id/dot-png/.
20200430195649364809cc4d0ab885bfb4bda5c8262b0f.jpeg
Selamat! Anda telah berhasil membuat sebuah model decision tree untuk klasifikasi spesies bunga Iris. Anda juga telah berhasil menguji model anda untuk memprediksi spesies dari sebuah bunga iris. Untuk belajar lebih mendalam tentang decision tree, kunjungi tautan berikut yah