Showing posts with label machine learning. Show all posts
Showing posts with label machine learning. Show all posts

Sunday, September 12, 2021

Mengenal Regresi linear dan perhitungannya

Disini kita akan bahas salah satu model statistik yang umum digunakan untuk Machine Learning untuk melakukan prediksi dengan cara supervised learning, yaitu regresi linear. Metode ini melibatkan 2 variabel dimana salah satunya adalah variabel independen (x) dan satu lagi adalah variabel dependen (y)

  • Independen berarti variabel ini sebagai variabel utama yang mungkin akan mempengaruhi nilai variabel kedua (dependen). 
  • Dependen berarti nilai variabel ini akan tergantung dari nilai variabel independennya, jika korelasi tinggi maka dependensi juga tinggi.

Untuk memudahkan pemahaman, kita gunakan data sample berat dan tinggi badan dari 10 orang sebagai berikut ini:

Data Tinggi Badan(cm) : 151,174,138,186,128,136,179,163,152,131
Data Berat Badan (Kg) : 63, 81, 56, 91, 47, 57, 76, 72, 62, 48

Regresi Linear adalah proses mencari garis linear yang menujukkan korelasi antara kedua variabel tersebut, garis linear itu akan didapat dengan sebuah persamaan :

y = ax + b atau y = w1x + w0

dimana: 
a atau w1 adalah slope / gradient / coefficient
b atau w0 adalah intercept / bias

Ciri dari problem regresi ini adalah kasusnya diminta menebak angka. Jenis outputnya bersifat continuous. Contoh lain dari regresi ini misalnya menebak curah hujan, harga rumah, jumlah kendaraan pemudik, dsb.

Perhitungan Manual

Untuk mendapatkan nilai coef(A) dan intercept/bias(B) digunakan rumus:


Gambar diatas menjelaskan detail perhitungan dari rumus tersebut kedalam excel. Dalam mencari nilai coef A dan intercept/bias B di excel digunakan formula pada sheet berikut:

A =((C25*C24)-(C23*C21))/((C25*C22)-(C23*C23))
B =((C21*C22)-(C23*C24))/((C25*C22)-(C23*C23))

Menggunakan Python

Perhitungan di python lebih sederhana, dimana kita bisa menggunakan library sklearn, seperti pada contoh kode dibawah ini:

Nilai coef dan intercept didapatkan dari kode baris ke-19 dan-20 diatas, sehingga akan didapatkan persamaan linear sebagai berikut:

y = 0.674 * x + (-38.455)

Sedangkan hasil dari plot data seperti pada gambar dibawah, dimana garis merah merupakan nilai prediksi dari model linear regresi dan titik-titik biru adalah 10 data training yang digunakan.

Regresi Linear Berganda

Regresi Linear Berganda adalah model regresi linear dengan melibatkan lebih dari satu variable bebas/independen dan persamaannya adalah

y = a1x1 + a2x2 + .. + anxn + b

Untuk pembahasan prediksi menggunakan regresi liner berganda kali ini akan diambil dari paper yang telah dipublish oleh mas Ervan Triyanto di jurnal Rabit, Juli 2019. Kasus ini adalah prediksi jumlah produksi padi di kabupaten Bantul dengan data yang digunakan dari tahun 2009 sampai dengan 2017. Di penelitian tersebut perhitungan nya diimplementasikan ke dalam aplikasi web menggunana PHP sebagai bahasa pemrogramannya. Di artikel ini akan digunakan python untuk perhitungannya dengan alasan kemudahannya.

Downlod pada link ini untuk mendapatkan artikelnya.  

Terdapat 1 variabel dependen yaitu jumlah produksi padi (dalam ton), sedangkan terdapat 3 variabel independen yaitu: curah hujan, luas lahan dan tingkat serangan hama. 

Berikut contoh code di Python untuk menghitung kasus produksi padi diatas:

Dari data diatas, didapatkan persamaan untuk prediksi sebagai berikut:

y = 5.929528x1 + 118.27991767x2 -175.71483753x3 + 8306.792151921123
dimana: luas lahan(x1), curah hujan(x2) dan hama(x3)

Evaluasi

Evaluasi untuk model linear regresi dapat dilakukan dengan beberapa metrik evaluasi seperti: MAE (Mean Absolute Error), MSE (Mean Squared Error) atau RMSE (Root Mean Squared Erorr).

RMSE merupakan salah satu cara untuk mengevaluasi model regresi linear dengan mengukur tingkat akurasi hasil perkiraan suatu model. RMSE dihitung dengan mengkuadratkan error (prediksi – observasi) dibagi dengan jumlah data (rata-rata), lalu diakarkan. RMSE tidak memiliki persamaan:

Pada kode python diatas, evaluasi model dituliskan pada baris kode ke-50 dengan menggunakan library metrics dari sklearn dan didapatkan score RMSE yaitu: 3.5045

Kesimpulan

Meskipun Linear regresi mudah diimplementasikan untuk melakukan prediksi pada data yang bersifat continuous, tetapi terdapat juga kekurangannya yaitu mudah terjadi overfitting dan sulit dilakukan prediksi jika relasi antara variabel dipenden dan independen tidak linear atau korelasi sangat rendah.

Jika membutuhkan dataset tersebut bisa tulis email pada komentar ya.. Bisa anda gunakan untuk penelitian dengan metode machine learning lainya dan silahkan dibandingkan nilai errornya dengan penelitian ini.

Referensi

  1. Jimy, Regresi Linier dengan R dan Python, https://medium.com/@jrendz/regresi-linier-dengan-r-dan-python-ebb80662c6da
  2. Jasme Moody,What does RMSE really mean?, https://towardsdatascience.com/what-does-rmse-really-mean-806b65f2e48e
  3. Triyanto, E., Sismoro, H., & Laksito, A. (2019). Implementasi Algoritma Regresi Linear Berganda untuk Memprediksi Produksi Padi di Kabupaten Bantul. Rabit : Jurnal Teknologi Dan Sistem Informasi Univrab, 4(2), 73-86. https://doi.org/10.36341/rabit.v4i2.666

Monday, November 16, 2020

Menggunakan Python di Jupyter notebook

Python merupakan bahasa pemrograman yang diciptakan pada tahun 1991 oleh Guido van Russom dimana akhir-akhir ini merupakan bahasa pemrograman yang banyak dicari dan dipelajari bagi mereka yang fokus mendalami dunia data.

Python merupakan salah satu bahasa pemrograman yang berkembang dengan cepat, selain dari perkembangan library yang semakin kuat karena banyaknya library dan framework seperti scikit-learn, Tensorflow, Pytorch, dan lainnya yang membuat para pencinta Artificial Intelligence, Machine Learning, dan Deep Learning lebih memilih Python sebagai tools untuk mengembangkan riset dan penelitian mereka.

Di artikel ini akan dibahas cara singkat instalasi Python dan juga Jupyter notebook sebelum nanti akan kita pelajari lagi detail dasar-dasar pemrograman di Python khususnya untuk Data science atau Machine learning.

File instalasi Python bisa di download dari web python.org yang saat ini terdapat 2 versi yaitu 2.7.x dan versi 3.x, sebaiknya kita pilih saja yang versi 3.x 

www.python.org

Ikuti petunjuk instalasinya dan aktifkan fitur “Add python.exe to Path” saat pemilihan check fitur instal supaya perintah python dapat dapat dijalankan di command prompt nantinya. Setelah berhasil melakukan instalasi, kita dapat mencoba dengan menjalankan perintah python dan pip dari command di windows. 

The Python Package Index (PyPI) merupakan repository untuk library/paket di Python yang berada di pypi.org. Dengan menggunakan perintah pip kita bisa melakukan menajemen paket tersebut di local environment.

Jupyter notebook

Jupyter notebook merupakan tool yang populer untuk mengolah code di python. Jupyter notebook memungkinkan untuk mengintegrasikan antara kode dengan output di dalam satu dokumen secara interaktif.

Jupyter notebook dapat di install melalui command dengan perintah: 

pip install jupyter

Selain itu jupyter notebook juga dapat di install menggunakan platform Anaconda, selengkapnya bisa dibaca disini https://docs.anaconda.com/anaconda/install/

Cara menjalankan Jupyter notebook adalah dengan menuliskan perintah jupyter notebook di terminal atau command. Selanjutnya Jupyter notebook dapat diakses melalui browser. Saat servis dijalankan anda akan diarahkan ke halaman browser pada alamat http://localhost:8888/tree

Tampilan awal saat membuka Jupyter notebook

Untuk membuat notebook baru, bisa dilakukan dengan memilih menu [New] pada bagian kanan atas, kemudian bisa pilih tipenya Python3. Halaman notebook baru akan tampil seperti dibawah ini:

Tampilan notebook di browser


Hal penting yang perlu diperhatikan adalah bagian Cell, dimana nantinya kita akan menuliskan code Python atau Markdown text. Untuk judul notebok bisa kita ganti dengan cara double klik pada tulisan Untitled, kemudian tuliskan nama/judul dari notebook tersebut.

Selanjutnya kita akan gunakan beberapa shortcut di Jupyter notebook untuk mempercepat dan memudahkan dalam melakukan editing code/text di cell. Bisa perhatikan saat cell aktif akan berwarna hijau, sedangkan cell yang tidak aktif berwarna biru. Untuk keluar dari aktif cell, tekan tombol [Esc] dan kembali mengaktifkan cell tekan [Enter]. 

Untuk melihat beberapa tombol shortcut yang ada kita bisa keluar dari aktif cell kemudian tekan tombol [H].

Beberapa tombol shortcut di Jupyter notebook

Berikut beberapa shortcut yang sering digunakan: merubah ke mode code [Y] dan merubah ke mode markdown [M]. Menulis heading di Markdown dengan tombol [1] untuk heading 1, tombol [2] heading 2 dan tombol [3] heading 3. Menambahkan cell diatasnya dengan tombol [A] dan tombol [B] untuk menambah cell dibawahnya. Menghapus cell klik 2x tombol [D].

Pastikan saat menjalankan kondisi tersebut tidak berada di aktif cell, kita bisa tekan terlebih dahulu tombol [Esc]. Dan untuk menjalankan cell/Run kita lakukan dengan menekan tombol [Shift+Enter].

Share notebook

Setelah kita menuliskan code-code di notebook, kita bisa membagikan file tersebut secara statis ataupun dinamis. Kita bisa gunakan github untuk share notebook secara statis, dimana code dan hasilnya sudah ready pada file .ipynb dan bisa kita push ke repository di github. Sedangkan secara dinamis kita bisa gunakan Google colab, dengan cara upload file .ipynb dan selanjutnya kita bisa jalankan pada Google colab code-code tersebut.

Silahkan di eksplore lebih jauh lagi untuk penggunaan Jupyter notebook, semakin sering anda menggunakan maka akan semakin paham fitur-fitur didalamnya. Semoga bermanfaat..

Referensi

  1. Guntur Wicaksono, “Pengenalan Pemrograman Python Untuk Data Science”, https://medium.com/@gunturwicaksono/pengenalan-pemrograman-python- untuk-data-science-aa18ca6ff995
  2. Ahmad Muhardian, Belajar Pemrograman Python: Cara Install Python di Windows, https://www.petanikode.com/python-windows/
  3. Belajar Python Dasar : Memahami Jupyter Notebook dan cara menggunakannya, https://ngodingdata.com/memahami-jupyter-notebook- dan-cara-menggunakannya/
  4. IndoML,Pengenalan dan Panduan Jupyter Notebook untuk Pemula,https://indoml.com/2019/09/29/pengenalan-dan-panduan-jupyter-notebook-untuk-pemula/

Wednesday, July 22, 2020

Belajar Data Science dimana ya sebaiknya?

Menjawab pertanyaan dari judul diatas secara sedarhana yaitu kuliah aja di kampus dimana terdapat prodi/jurusan computer science, informatika, atau bidang-bidang komputer. Ternyata kenyataannya tidak semua prodi/jurusan komputer tersebut mengajarkan data science loh. Nah, sebaiknya gimana donk??

Data Science Diagram
source: https://intellipaat.com/blog/what-is-data-science/

Tren pekerjaan yang banyak diminati oleh para lulusan bidang komputer saat ini yaitu data science, dimana anda bisa cek sendiri rentang gaji untuk pekerjaan ini di google degh. Bidang ilmu data science ini merupakan lintas ilmu dari programming, database dan statistika seperti pada ilustrasi gambar diatas. Selain itu ilmu machine learning juga diperlukan pada pekerjaan ini.

Sayangnya tidak semua kampus di prodi komputer mengajarkan ilmu ini, seperti di prodi kampus tempat saya mengajar hanya 2 sks saja untuk belajar data mining, lebih baik dari pada tidak ada sama sekali khan. Selanjutnya bagaimana cara nya supaya kita bisa mendapat ilmu tentang data science tersebut?

Investasi waktu, pikiran dan uang
Disini uang saya tuliskan di bagian akhir, karena yang paling penting adalah waktu dan fokus pada pikiran. Bisa juga koq kita tanpa uang mempelajari ilmu tersebut.

Nah.. dimasa pandemi ini sangat banyak online course atau webinar yang gratis atau berbayar yg bisa kita ikuti. Pada artikel kali ini saya akan share 2 course online yang bagus untuk anda ikuti dalam mempelajari data science ini, dimana saya sendiri sudah mencoba nya, yaitu: Dqlab dan Sanbercode

DQLab

Saya sudah join ecourse yang beralamat di https://dqlab.id/ ini sejak agustus 2019, dan materi yang dipelajari cukup lengkap, yaitu SQL for data science, R for data science dan Python for data science. Content materi sangat beragam, dari level pemula sampai level lanjut/advance. Selain itu di paltform ini menggunakan live code yang sudah support ke-3 bahasa tersebut, jadi kita tidak perlu menyiapkan environment di local PC/Laptop untuk belajar data science, cukup browser dan koneksi internet saja.

Menurut saya ecourse di DQLab menyiapkan membernya untuk menjadi data engineering, data analyst ataupun data science (perbedaan ke-3 bidang ini saya kurang paham detail, bisa explore sendiri ya), disini materi-materinya fokus di pengolahan data, transformasi, data analisis, cleaning, wrangling, dsb.

DQLab juga menyediakan beberapa challenge yang dipandu oleh beberapa pakar dari dunia industri, seperti traveloka, tokopedia, efishery, xeratic, dll. Challenge ini seperti mini project yang bisa kita kerjakan dengan range waktu tertentu, dimana kasusnya memang sesuai dengan dunia industri, jadi jika kita mengikutinya akan punya pengalaman yang sangat berharga.

Untuk materi-materi tentang modeling machine learning atau data mining ada juga di DQLab pada project challenge yang biasanya setiap bulan 1x atau 2x akan diinfokan di dashboard kita.

Modul challenge Dqlab
Modul challenge DQLab

Beberapa modul dasar di DQLab di sediakan gratis, selanjutnya kita bisa berlangganan dengan harga yang cukup terjangkau. Saat artikel ini diposting terdapat promo untuk berlangganan seharga Rp. 179.400,- untuk 6 bulan. Cek berkala web dan IG Dqlab yang biasanya share informasi promo untuk berlangganan.

Dengan jumlah modul saat ini lebih dari 30 dan akan terus bertambah lagi dengan materi-materi terupdate, saya rasa biaya berlangganan sebesar angka diatas layak dengan apa yang nantinya akan kita dapatkan.

Beberapa modul juga menawarkan reward yaitu extend berlangganan 1 bulan jika kita bisa menyelesaikannya dengan batas waktu yang ditentukan. Saya sendiri pernah mendapatkan reward challenge ini dan juga reward 6 bulan gratis ketika tim DQLab meminta tetimoni.

Challenge dengan Reward di DQLab
Challenge dengan Reward di DQLab

Sanbercode

Sanbercode merupakan ecourse kedua yang akan saya bahas disini, dimana terdapat juga kelas di bidang programing dan design yang ditawarkan selain kelas data science.  Beralamatkan di https://sanbercode.com/, saya mengikuti kegiatan bootcamp dari sanbercode untuk kelas python data science pada bulan Juni 2020 dan sangat puas dengan metode yang diterapkan di event ini.

Event bootcamp tersebut bernama "Bootcamp online 2020 by SanberCode.. From Zero to Hero". Program ini intensif selama 1 bulan atau 4 pekan yang diselenggarakan setiap bulan (kegiatan bisa berubah sewaktu-waktu, cek IG Sanbercode untuk info lebih lanjut). 

Terdapat 2 level pada bootcamp ini yaitu kelas dasar dan kelas lanjutan. Kelas dasar ini gratis dengan syarat yaitu membayar uang komitmen Rp 200,000 dan mendapatkan score bootcamp 80 atau lebih. Saya mengikuti kelas dasar dan Alhamdulillah mendapatkan score 88 dan uang kembali masuk rekening 😄.

Informasi bootcamp bulan Juli 2020


Kurikulum dari bootcamp tersebut kurang lebih seperti berikut ini:
Minggu 1
  • Hello Python
  • Functions, Method and Getting Help
  • Logic Control Flow and Loop
  • Python List dan Dictionary
  • Statistika Deskriptif Untuk Data Science
Minggu 2
  • Pandas Introduction
  • Akses/Indexing dan Transformasi Data
  • Reshaping Data
  • Grouping Data
  • Merging DataFrame
Minggu 3
  • Pengenalan Matplotlib
  • Custom Visualisasi
  • Multiple Plots
  • Perbandingan Kuantitatif
  • Seaborn dan Altair
Minggu 4
  • Pengenalan Machine Learning
  • Algoritma KNN dan Model Regresi Linear
  • Evaluasi Performa dan Memilih Model
  • Preprocessing Data
Setiap materi tersebut akan ada tugas harian yang dikerjakan pada jupyter notebook atau google colab dan disubmit untuk dilakukan penilaian. Selanjutnya pada akhir pekan (hari sabtu) teradapat quiz sampai minggu ke-3 dan minggu terakhir akan ada final project. Dan untuk final project ini akan dibuka kaggle competition dimana kita disediakan data untuk diolah dan kemudian dilakukan prediksi dengan akurasi terbaik sebagai rangking dari beberapa peserta bootcamp.

Dengan cara pembelajaran intensif seperti ini saya rasa pemahaman materi yang akan didapatkan akan lebih cepat karena kita akan dipakasa fokus selama 1 bulan penuh. 

Jika anda ingin mendapatkan file-file tugas dan quiz dari sanbercode yang pernah saya kerjakan sebelumnya bisa akses github berikut: https://github.com/ariflaksito/sanbercode-data-science

Kesimpulan

Dari kedua ecourse yang saya bahas tersebut, kesimpulan menurut saya yaitu:
1) DQLab
- Kasus-kasus di bidang industri terkini
- Bisa mempelajari 3 bahasa penting di data science(R, python, SQL)
- Materi sangat banyak dan terus bertambah, bisa dipelajari sesuai kebutuhan

2) Sanbercode
- Waktu singkat hanya 4 minggu
- Sesuai bagi pemula untuk belajar cepat
- Gratis dengan syarat

Semoga bermanfaat yaa, selamat belajar data science!