Rangkuman Manajemen Proyek Data Science


 



Pengenalan Proyek Data Science

Proyek data science adalah sebuah proyek yang berupaya untuk menyelesaikan masalah atau mencari jawaban dari suatu pertanyaan bisnis dengan menggunakan data, berbagai teknik analisis data, dan tidak jarang kita juga menggunakan machine learning.

Secara garis besar, kita dapat mengelompokkan permasalahan tersebut ke dalam beberapa kategori seperti berikut.

  • Classification
    Classification atau klasifikasi merupakan permasalahan di mana kita coba untuk menghitung atau mengestimasi probabilitas individu dalam sebuah populasi menjadi bagian dari suatu kelas atau kategori tertentu.
  • Regression
    Selain classification, permasalahan data science yang sering kita jumpai adalah regression. Pada permasalahan ini, kita akan memprediksi nilai numerik dari sebuah individu dalam sebuah populasi. Nilai numerik ini bisanya berhubungan dengan parameter atau metrik tertentu yang berhubungan dengan kebutuhan bisnis.
  • Similarity Matching
    Similarity matching merupakan sebuah permasalahan di mana kita mencoba untuk menentukan kesamaan setiap individu dalam sebuah populasi berdasarkan karakteristiknya.
  • Clustering
    Permasalahan data science berikutnya ialah clustering. Pada permasalahan ini, kita mencoba mengelompokkan individu suatu populasi ke dalam beberapa grup atau kluster berdasarkan karakteristiknya.
  • Association Rules
    Pada permasalahan association rules, kita berusaha untuk mengidentifikasi relasional atau hubungan antar individu dalam suatu populasi.

Tantangan dalam Proyek Data Science

Berikut beberapa tantangan yang umum dijumpai dalam proyek data science di industri.

  • Business Problem Statement
    Tahukah Anda bahwa terdapat banyak sekali proyek data science yang kurang optimal dalam menjawab kebutuhan bisnis. Hal ini karena kurangnya pemahaman terhadap masalah bisnis yang ingin diselesaikan.

  • Kualitas Data
    Seperti yang Anda ketahui, data telah dianggap sebagai sumber daya yang paling penting dalam proyek data science. Kualitas dari suatu data merupakan kunci utama dalam kesuksesan sebuah proyek data science. Kualitas dari suatu data biasanya dipengaruhi oleh beberapa hal, seperti akurasi data, kelengkapan data, reliabilitas data, relevansi data, serta aktualitas dari data tersebut.

  • Dependensi yang Kompleks
    Selain bergantung bergantung terhadap data, sebuah proyek data science juga memiliki dependensi terhadap kode dan model (machine learning). Akibatnya, jika terdapat perubahan terhadap salah satu komponen tersebut, ia akan mengubah komponen yang lain.

    Keadaan ini diperparah dengan adanya proses eksperimen yang terjadi dalam proyek data science. Nah, untuk memastikan setiap perubahan dalam proyek data science itu terdokumentasi dengan baik, kita sangat disarankan untuk menggunakan sebuah version control system.

  • Kebutuhan Infrastruktur yang Kompleks
    Kebutuhan infrastruktur untuk mengoperasikan sistem berbasis machine learning pada lingkup produksi sangatlah kompleks. Machine learning code (ML code) hanya sebagian kecil dari keseluruhan komponen yang dibutuhkan untuk mengoperasikan sistem berbasis machine learning.

Pada proses pengerjaan proyek data science, terdapat banyak hal yang harus kita pertimbangkan. Berikut merupakan beberapa di antaranya.

  • Data Ethics
    Pada proyek data science, kita harus selalu mempertimbangkan etika dalam pengolahan data. Hal ini diatur dalam sebuah data ethics yang merupakan kumpulan acuan standar dalam menilai benar dan salah sebuah proses pengolahan data. Ia terdiri dari beberapa aspek penting, seperti ownershiptransparencyconsentcurrencyprivacy, dan openness.

  • Data Governance
    Data governance merupakan sebuah prinsip pengolahan data yang mengatur penggunaan data mulai dari tahap pengumpulan, pemrosesan, hingga penghapusan data. Ia juga mengatur siapa saja yang boleh mengakses dan menggunakan data tersebut.

  • Research Processes
    Seperti yang telah kita ketahui bersama, setiap proyek data science umumnya memerlukan riset yang mendalam. Apabila tidak diatur dengan baik, tahap riset ini dapat menghabiskan resource (waktu, dana, dll.) yang kita miliki tanpa memberikan kemajuan pada proyek yang dikerjakan. Oleh karena itu, kita perlu membuat rencana riset yang baik ketika ingin memulai suatu proyek data science.

  • Interpretability dan Transparency
    Perlu diingat bahwa seluruh proses yang terjadi dalam proyek data science haruslah transparan. Hal ini berarti, seluruh tahapannya dapat diakses oleh orang yang berkepentingan atau stakeholder. Untuk mendukung hal ini, kita perlu mendokumentasi seluruh tahapan dalam proyek data science.

    Selain itu, kita juga harus memastikan bahwa seluruh metode, pendekatan, dan algoritma yang digunakan dapat dipahami dan Anda sebagai pengembang harus mampu menjelaskan bagaimana suatu output dihasilkan.


Tahapan dalam Proyek Data Science

Secara umum, proyek data science biasanya terdiri dari beberapa tahapan berikut. 

  1. Business Understanding
    Proyek yang baik selalu dimulai dengan memahami kebutuhan customer atau user. Hal ini juga berlaku untuk proyek data science. Pada awal proyek data science, kita perlu memahami permasalahan bisnis yang ingin diselesaikan.

  2. Data Understanding
    Setelah memahami permasalahan bisnis yang ingin diselesaikan, tahap berikutnya adalah data understanding. Pada tahap ini, kita perlu mengidentifikasi dan mengumpulkan data yang dibutuhkan untuk menyelesaikan permasalahan bisnis tersebut.

  3. Data Preparation
    Tahap selanjutnya ialah data preparation. Pada tahap ini, umumnya kita akan melakukan pembersihan data untuk memastikan kualitas dari data yang digunakan. Selain itu, pada tahap ini, kita juga perlu melakukan data preprocessing untuk menyiapkan sebelum masuk ke tahap modeling.

  4. Modeling
    Tahap berikutnya adalah modeling. Pada tahap ini, biasanya kita akan membuat dan melatih berbagai algoritma machine learning. Selain itu, kita juga akan menerapkan berbagai teknik untuk meningkatkan performa dari model yang kita buat. Pada prosesnya, kita juga akan membandingkan berbagai algoritma dan teknik untuk menghasilkan model terbaik.

  5. Evaluation
    Setelah membuat dan melatih model, kita juga perlu mengevaluasi model tersebut. Tujuannya untuk memastikan model tersebut mampu menjawab kebutuhan bisnis. Pada prosesnya, biasanya kita akan melakukan beberapa tahapan berikut.
    1. Evaluasi hasil.
    2. Evaluasi proses.
    3. Menentukan tahap berikutnya.

  6. Deployment
    Tahap terakhir dalam proyek data science ialah deployment. Pada tahap inilah kita mencoba untuk menjalankan model yang telah dibuat ke dalam lingkup production sehingga user dapat berinteraksi dengan model.


Metodologi Manajemen Proyek Data Science

Secara umum, terdapat tiga metodologi manajemen proyek yang dapat diterapkan pada proyek data science seperti berikut.

  • Ad Hoc
    Ad Hoc merupakan pendekatan manajemen proyek yang fokus untuk mengimplementasikan suatu proyek tanpa mempertimbangkan perencanaan yang matang serta impak yang diberikan. Sederhananya, kita sebagai data scientist hanya perlu mengerjakan proyek tersebut. Just do it!

  • Waterfall
    Metodologi berikutnya ialah waterfall. Sesuai namanya, pada metodologi ini, pengerjaan sebuah proyek diibaratkan sebagai sebuah aliran air yang bergerak satu arah. Pada metodologi ini, kita telah memiliki perencanaan proyek yang lebih matang. Selain itu, alur pengerjaan pada metodologi ini lebih mudah dipahami.

    Namun, metodologi ini memiliki beberapa kekurangan terutama ketika diterapkan pada proyek data science. Metodologi ini belum mencakup iteratif proses ketika mengerjakan proyek data science.

  • Agile
    Agile merupakan sebuah metodologi (sering juga disebut sebagai filosofi) pengerjaan sebuah proyek yang memungkinkan kita untuk perencanaan yang fleksibel dan mampu beradaptasi terhadap sebuah feedback.

    Di industri, penerapan metodologi agile dilakukan dengan menerapkan salah satu dari dua framework berikut.
    • Scrum: framework ini hadir dengan menerapkan tiga pilar yaitu transparansi, inspeksi, dan adaptasi. Proses scrum terdiri dari lima event, yaitu sprint, sprint planning, daily standup, sprint review, dan sprint retrospective. 
    • Kanban: framework berikutnya ialah kanban. Ia dinilai lebih sederhana jika dibandingkan dengan scrum. Framework ini memiliki dua prinsip utama yaitu memvisualisasikan workflow dalam sebuah proyek dan meminimalisasi work in progress.

  • CRISP-DM
    CRISP-DM yang merupakan singkatan dari CRoss Industry Standard Process for Data Mining merupakan pendekatan yang menggambarkan proses standar untuk proyek data mining, data science, dan machine learning. Proses pada CRISP-DM terdiri dari 6 fase dan disusun sebagai sebuah siklus yang bertujuan untuk memaksimalkan outcome dari suatu proyek data science.

    Pada pendekatan ini, kita memulai sebuah proyek dengan business understanding yang tentunya dapat membantu dalam memastikan proyek tersebut sejalan dengan kebutuhan bisnis. Selain itu, proses berulang yang terdapat di dalamnya dapat membantu kita untuk menyesuaikan kebutuhan eksperimen pada proyek data science.


Estimasi Kebutuhan Resource dalam Proyek Data Science

Seperti pengerjaan proyek pada umumnya, proyek data science juga membutuhkan berbagai resource atau sumber daya pada proses pengerjaannya. Secara umum berikut merupakan beberapa resource yang dibutuhkan dalam sebuah proyek data science.

  • Data
    Salah satu resource utama dalam proyek data science ialah data. Pada proyek data science, kualitas dan kuantitas dari sebuah data merupakan faktor yang sangat penting untuk menghasilkan sebuah outcome yang baik. 
    • Data internal: data yang diperoleh dari sumber daya perusahaan atau organisasi yang bersangkutan. Data jenis ini biasanya dapat diperoleh secara gratis untuk kebutuhan internal.
    • Data eksternal: data yang diperoleh dari sumber luar yang terpercaya. Data jenis ini biasanya ada yang berbayar dan gratis.
    • Data buatan: data yang dibuat oleh komputer yang menyerupai keadaan di kehidupan nyata.

  • Tim
    Selain data, kebutuhan akan SDM (Sumber Daya Manusia) yang berkualitas juga merupakan kunci utama kesuksesan sebuah proyek data science. Kebutuhan SDM ini tentunya akan bergantung terhadap cakupan proyek data science. Namun, secara umum, suatu proyek data science biasanya dikerjakan oleh sebuah tim yang terdiri dari orang-orang berikut.
    • Subject Matter Expert (SME): tenaga ahli yang memiliki pengetahuan mendalam pada bidang atau topik tertentu. 
    • Data Scientist: seseorang atau kumpulan orang yang bertanggung jawab dalam mengembangkan sebuah solusi dari sebuah permasalahan bisnis dengan menggunakan pendekatan data science.
    • Data Engineer: engineer yang bertanggung jawab dalam memastikan alur pemrosesan data dalam proyek data science dilakukan secara efisien.
    • Software Engineer: engineer yang bertanggung jawab dalam memastikan solusi yang diberikan oleh data scientist dapat diterapkan secara efisien pada lingkup production.

  • Teknologi
    Pada proses pengerjaan proyek data science, tentunya kita perlu menggunakan berbagai teknologi baik yang berkaitan dengan pengolahan data, pembuatan model, serta berbagai teknologi software lainya. Beberapa teknologi yang umum digunakan dalam proyek data science antara lain
    • Database Management System (DBMS);
    • bahasa pemrograman Python atau R;
    • version control system; dan
    • komputasi cloud computing.

  • Computing power
    Resource berikutnya yang harus kita pertimbangkan dalam proyek data science adalah kebutuhan computing power. Hal ini berkaitan dengan seberapa banyak sumber daya komputer yang harus dibutuhkan, seperti memory, drive penyimpanan. CPU, serta GPU. Jika kita menggunakan cloud computing, setiap computing power yang digunakan memiliki cost atau biaya tersendiri.

Terdapat beberapa hal yang harus diperhatikan ketika membuat sebuat sebuah estimasi kebutuhan resource untuk proyek data science seperti berikut.

  • Pahami permasalahan bisnis yang akan dikerjakan.
  • Pahami kompleksitas dari proyek serta solusi data science yang akan dikerjakan.
  • Pastikan Anda memiliki data yang dibutuhkan untuk menjawab permasalahan bisnis.
  • Pahami alur pengerjaan dari proyek tersebut.
  • Carilah sebuah proyek yang sebelumnya pernah dikerjakan sebagai sebuah benchmark.
  • Selalu memperhitungkan fase eksperimen.
  • Menentukan metrik untuk mengukur kesuksesan suatu proyek dengan jelas dan sesuai dengan kebutuhan bisnis.
  • Menentukan mekanisme deployment dari solusi data science yang telah di buat.

Setelah memperhatikan beberapa hal di atas, seharusnya Anda sudah memiliki bayangan resource seperti apa yang akan dibutuhkan. Tugas Anda berikutnya adalah mengestimasi waktu pengerjaan dari proyek tersebut. Salah satu metode yang bisa Anda gunakan adalah program evaluation and review technique (PERT). 

PERT merupakan sebuah metode untuk mengestimasi suatu proyek secara statistik. Metode ini memerlukan tiga parameter, antara lain

  • optimistic estimate: estimasi jumlah waktu pengerjaan proyek jika semuanya berjalan dengan baik;
  • most likely estimate: perkiraan jumlah waktu paling realistik menurut Anda untuk menyelesaikan proyek tersebut; dan
  • pessimistic estimate: estimasi waktu pengerjaan yang dibutuhkan jika terdapat sebuah permasalahan ketika mengerjakan proyek tersebut.

Setelah memperoleh tiga parameter di atas, Anda bisa menggunakan permasalahan berikut untuk menghitung estimasi waktu yang dibutuhkan dalam mengerjakan proyek.

dos:6bed59a868aa1c8d796059b421f7d91420230908170440.jpeg

Setelah memperoleh nilai estimasi PERT, Anda juga bisa menghitung standard deviation-nya menggunakan persamaan berikut.

dos:df9d4c0278629362d9034fe1ecf4f36c20230908170440.jpeg

Nah, nilai standard deviation tersebut bisa digunakan sebagai confidence interval dari estimasi PERT yang telah dibuat. 

dos:6b1080405c7e271a28116664dd895b5c20230908170440.jpeg


Rangkuman Keterampilan Teknis Data Scientist

 

Keterampilan yang Dibutuhkan Data Scientist

Secara umum, untuk menjadi seorang data scientist yang andal, kita perlu menguasai beberapa keterampilan teknis seperti berikut.

  • Memahami penggunaan SQL (Structured Query Language).
  • Memahami penggunaan bahasa pemrograman Python. Akan menjadi nilai tambahan bila Anda mampu membuat kode Python yang sesuai dengan prinsip clean code.
  • Mampu menggunakan Python untuk pengolahan data.
  • Mampu mendeskripsikan data dengan menerapkan teknik data storytelling.
  • Menguasai teori serta pengaplikasian dari konsep machine learning serta deep learning.


Penerapan SQL

Di industri, data umumnya disimpan dalam sebuah database yang dikelola oleh sebuah Database Management System atau sering disebut sebagai DBMS. Sederhananya, ia merupakan sebuah software yang menghubungkan antara user dengan database. 

Untuk menjalankan fungsionalitasnya, DBMS umumnya memanfaatkan sebuah bahasa tertentu salah satunya adalah SQL (Structured Query Language) sering juga dibaca “sequel”. Ia merupakan bahasa yang sering digunakan untuk berkomunikasi dalam relational database.

Dalam relational database, data disimpan dalam tabel yang memiliki baris dan kolom. Yup, betul sekali bentuknya seperti data yang sering kita lihat di Microsoft Excel dan Google Spreadsheet. Tabel-tabel yang terdapat dalam relational database, umumnya membentuk sebuah hubungan (relationship) melalui primary key (PK) dan foreign key (FK).

Primary key merupakan sebuah kolom dengan nilai unik yang merepresentasikan suatu data dalam sebuah tabel. Di lain sisi, foreign key merupakan kolom yang berisi primary key dari tabel lain. Ia digunakan untuk mereferensikan data dari tabel lain hingga terbentuk sebuah relationship antar tabel. Inilah yang menjadi kunci dalam relational database. 


Operasi Utama dalam SQL

SQL inilah yang menjadi senjata utama seorang praktisi data ketika ingin melakukan kueri (sekumpulan instruksi khusus untuk mengekstraksi data) pada database. Pada dasarnya, SQL merupakan bahasa terstruktur yang digunakan untuk melakukan semua operasi yang ada di relational database mulai dari operasi pembuatan tabel, update, hingga menghapusnya. 

Terdapat empat operasi utama yang terdapat dalam SQL, yaitu Create, Read, Update, dan Delete (sering disingkat CRUD).  

  • Create
    Create adalah sebuah operasi penambahan data ke dalam sebuah tabel. Operasi dilakukan menggunakan perintah INSERT INTO dan diikuti dengan nama tabel kolom serta nilai (values) yang akan dimasukkan.

  • Read
    Operasi kedua ialah read. Ia merupakan operasi pengambilan data yang terdapat di dalam database atau sering juga disebut operasi kueri. Operasi ini selalu diawali dengan perintah SELECT, diikuti nama kolom yang akan ditampilkan, dan diikuti perintah FORM untuk menentukan nama tabelnya.
     
  • Update
    Operasi berikutnya adalah update yang merupakan operasi untuk mengubah nilai dari suatu data. Untuk melakukannya, kita perlu menggunakan perintah UPDATE diikuti dengan nama tabel, perintah SET untuk menentukan nilai baru, dan kondisi yang dibuat dengan perintah WHERE.

  • Delete
    Operasi terakhir ialah delete untuk menghapus data dalam suatu tabel. Operasi ini dilakukan menggunakan perintah DELETE diikuti nama tabel beserta kondisinya.


SQL Joins

Selain melakukan operasi utama, SQL juga memungkinkan kita menggabungkan informasi dari dua atau lebih tabel melalui operasi join. Operasi ini dilakukan dengan memanfaatkan relationship antar tabel dalam satu database. 

Berdasarkan cara penggabungannya, proses merge atau join dapat dibagi menjadi empat jenis yaitu seperti berikut. 

  • Inner
    Inner join merupakan proses join yang hanya mengambil nilai yang bersesuaian di kedua tabel. Operasi ini dilakukan menggunakan perintah JOIN atau INNER JOIN.
     
  • Left
    Left join merupakan proses join yang akan mengambil semua nilai dari tabel kiri beserta nilai yang bersesuaian dari tabel kanan. Operasi ini dilakukan menggunakan perintah LEFT JOIN.

  • Right
    Right join merupakan proses join yang akan mengambil semua nilai dari tabel kanan beserta nilai yang bersesuaian dari tabel kiri. Ia merupakan kebalikan dari left join. Operasi ini dilakukan menggunakan perintah RIGHT JOIN.

  • Outer
    Outer join atau sering juga disebut full outer join merupakan proses join yang akan mengambil semua nilai dari kedua tabel. Ia merupakan gabungan dari left dan right join. Operasi ini dilakukan menggunakan perintah FULL OUTER JOIN.
     

SQL Aggregations

Selain menggabungkan informasi dari dua tabel, SQL juga memungkinkan kita untuk melakukan proses pengelompokkan data berdasarkan kolom tertentu. Setelah dikelompokkan, data tersebut akan dikombinasikan untuk menghasilkan suatu nilai yang menggambarkan parameter statistik seperti meanmedian, dll.

Untuk melakukan proses ini di SQL, kita dapat menggunakan perintah GROUP BY dan diikuti dengan nama kolom berisi nilai kategori yang akan digunakan untuk mengelompokkan data. Kita juga dapat mengombinasikannya dengan perintah ORDER BY untuk mengurutkan data berdasarkan nilai pada suatu kolom tertentu.

SQL juga menyediakan berbagai fungsi aggregate untuk mengombinasikan data menjadi satu nilai yang menggambarkan parameter tertentu. Berikut merupakan beberapa fungsi aggregate yang terdapat dalam SQL.

  • COUNT(): menghitung jumlah baris dalam sebuah tabel.
  • MAX(): menampilkan nilai maksimum yang terdapat dalam suatu kolom numerik.
  • MIN(): menampilkan nilai minimum yang terdapat dalam suatu kolom numerik.
  • SUM(): menghitung total penjumlahan titik data yang terdapat dalam sebuah kolom numerik.
  • AVG(): menghitung nilai rata-rata (average) dari sebuah kolom numerik.


Python Clean Code

Prinsip clean code merupakan sebuah prinsip yang digunakan untuk memastikan sebuah kode bersifat efisien, readable (mudah dipahami), reliable (andal), dan maintainable (mudah dipelihara). Prinsip ini merupakan kunci utama dalam menghasilkan sebuah kode yang andal. Selain itu, prinsip ini juga akan mempermudah kita dalam berkolaborasi terutama ketika bekerja dalam sebuah tim yang besar. 

Menurut uncle Bob dalam bukunya yang berjudul “Clean Code: A Handbook of Agile Software Craftsmanship” terdapat beberapa ketentuan dalam penulisan clean code seperti berikut.

  • Menuliskan nama variabel yang deskriptif, meaningful, dengan perbedaan yang jelas, dan konsisten. Sebagai contoh penggunaan nama variabel age untuk umur dan age_list untuk kumpulan data umur.
  • Mengikuti konvensi standar dalam penulisan kode.
  • Menerapkan prinsip keep it simple semaksimal mungkin mengurangi kompleksitas dari suatu kode.
  • Penulisan kode harus disertai dengan dokumentasi yang baik.
  • Menerapkan prinsip DRY yang merupakan singkatan dari Don't Repeat Yourself.
  • Setiap fungsi hanya dikhususkan untuk mengerjakan satu tugas.

Nah, berikut beberapa tips yang dapat Anda gunakan untuk mulai menerapkan prinsip clean code pada bahasa pemrograman Python. 

  • Mengikuti style guide standar untuk menghasilkan penulisan kode yang konsisten.
  • Menggunakan code formatter dan linter untuk mempermudah dalam menerapkan style guide standar.
  • Menerapkan modular code untuk menjalankan prinsip DRY.
  • Menambahkan dokumentasi untuk meningkatkan readability.
  • Menerapkan unit testing untuk memastikan setiap unit kode dapat berjalan sesuai ekspektasi.


Penggunaan Python untuk Pengolahan Data

Sebagai salah satu bahasa pemrograman kekinian, Python dapat digunakan untuk mengerjakan banyak tugas salah satunya adalah mengolah dan memvisualisasikan data. Hal inilah yang membuat Python menjadi salah satu bahasa pemrograman paling populer di kalangan praktisi data salah satunya adalah data scientist.

Untuk mendukung proses pengolahan dan analisis data, Python memiliki banyak libraries dan tools yang bersifat open-source sehingga dapat digunakan secara bebas. Berikut merupakan beberapa di antaranya.

  • Library NumPy
    NumPy (singkatan dari numerical Python) merupakan salah satu library Python yang sangat powerful untuk membuat dan mengolah multi-dimensional arrays (sering juga disebut sebagai matriks atau tensor). NumPy dibuat dengan tujuan untuk mempercepat proses komputasi numerik dalam bahasa pemrograman Python.

  • Library pandas
    Selain NumPy, library lain yang sering digunakan adalah pandas. Ia merupakan library Python yang spesifik digunakan untuk memanipulasi dan menganalisis data. Library inilah yang menjadi andalan para praktisi data.

  • Library SciPy
    Library penting selanjutnya adalah SciPy (singkatan dari Scientific Python). Ia merupakan library Python yang khusus digunakan untuk kebutuhan komputasi saintifik. SciPy menyediakan banyak fungsi yang dapat digunakan untuk menyelesaikan operasi matematis kompleks yang dapat digunakan dalam dunia science dan engineering. Selain itu, SciPy juga menyediakan banyak operasi statistik sehingga dapat membantu kita dalam mengidentifikasi parameter statistik dari suatu data.

  • Library matplotlib
    Matplotlib merupakan sebuah library Python yang reliable dan komprehensif untuk mendukung kebutuhan pembuatan visualisasi data. Matplotlib menyediakan banyak object dan method yang memungkinkan kita membuat visualisasi data statis, animated, dan interaktif.

  • Library seaborn
    Selain matplotlib, library lain yang sering digunakan untuk visualisasi data adalah seaborn. Seaborn merupakan library Python yang spesifik digunakan untuk membuat visualisasi data yang atraktif dan informatif. Library ini memanfaatkan matplotlib untuk menampilkan grafik visualisasi data.

Nah, untuk menggunakan seluruh library tersebut, Anda perlu menginstalnya terlebih dahulu. Berikut perintah yang dapat Anda gunakan untuk melakukannya.

pip install numpy pandas scipy matplotlib seaborn


Proses Data Wrangling dengan Python

Data wrangling merupakan sebuah proses atau kumpulan kegiatan yang meliputi pengumpulan data (Gathering data), penilaian data (Assessing data), serta pembersihan data (Cleaning data).

  • Gathering data
    Seperti yang telah kita bahas sebelumnya, pandas merupakan sebuah library Python yang spesifik digunakan untuk memanipulasi dan menganalisis data. Dalam mendukung hal tersebut, pandas menyediakan beberapa function yang dapat digunakan untuk membaca atau mengakses data dari berbagai format menjadi sebuah DataFrame.
     
  • Assessing data
    Assessing data merupakan proses yang bertujuan untuk mengidentifikasi masalah yang terdapat dalam data dan memastikan data tersebut berkualitas.
  • Cleaning data
    Data yang kotor juga harus kita bersihkan untuk memastikan ia tidak memengaruhi hasil analisis yang akan kita lakukan nantinya.


Proses Exploratory Data Analysis

Exploratory Data Analysis (EDA) merupakan tahap eksplorasi data yang telah dibersihkan guna memperoleh insight dan menjawab pertanyaan analisis. Pada prosesnya, kita akan sering menggunakan berbagai teknik dan parameter dalam descriptive statistics yang bertujuan untuk menemukan pola, hubungan, serta membangun intuisi terkait data yang diolah. Selain itu, tidak jarang kita juga menggunakan visualisasi data untuk menemukan pola dan memvalidasi parameter descriptive statistics yang diperoleh.


Data Storytelling

Data storytelling merupakan praktik penggunaan data, visualisasi, dan narasi untuk mengomunikasikan insights kepada audiens. Tujuannya adalah untuk menyajikan data yang kompleks ke dalam bentuk yang menarik dan mudah dipahami sehingga memungkinkan audiens (stakeholder) untuk membuat keputusan berdasarkan informasi dari data tersebut.

Menurut Cole Nussbaumer Knaflic dalam bukunya yang berjudul “Storytelling with Data”, terdapat tujuh hal yang harus kita perhatikan untuk menghasilkan data storytelling yang baik yaitu seperti berikut.

  • Memahami konteks
    Proses data visualization dan storyteller selalu dimulai dengan pemahaman konteks yang dibutuhkan untuk menyampaikan pesan dari suatu data. Pertama, kita perlu mengetahui kepada siapa data akan dikomunikasikan serta bagaimana hubungan mereka dengan Anda. Hal ini untuk memastikan kita memahami kebutuhan dari audiens kita serta ekspektasi mereka.

    Berikutnya, kita juga perlu menentukan secara spesifik pesan yang ingin kita sampaikan kepada audiens. Pada prosesnya, kita perlu memastikan bahwa hal yang ingin kita sampaikan itu relevan dengan kebutuhan audiens. Selain itu, kita juga perlu mengetahui mekanisme yang akan digunakan untuk mengomunikasikan data, apakah melalui presentasi secara langsung? Atau melalui sebuah dokumen dan dashboard?

    Nah, setelah memahami audiens serta pesan yang ingin kita sampaikan, selanjutnya kita perlu mengetahui data apa yang tersedia dan dapat digunakan untuk menyampaikan pesan yang sesuai dengan kebutuhan audiens.

  • Menggunakan visual yang efektif
    Apabila Anda memahami konteks serta mengetahui data apa yang akan digunakan, tahap berikutnya yang harus dilakukan adalah menentukan bentuk visualisasi data yang akan digunakan.

  • Mengeliminasi komponen visual yang tidak dibutuhkan
    Setelah berhasil membuat visualisasi data yang tepat, kita perlu mereviunya kembali. Tujuannya adalah untuk mengidentifikasi berbagai komponen visual yang tidak dibutuhkan.

  • Fokuskan perhatian audiens
    Anda ingin audiens fokus ke bagian mana? Itulah pertanyaan yang harus kita jawab setelah berhasil membuat visual yang efektif untuk memastikan audiens fokus pada informasi yang ingin disampaikan. Untuk melakukan hal ini, kita bisa menggunakan komponen visual tertentu, seperti colorshape, dan texture.

    Selain memperhatikan komponen visual, kita juga perlu mempertimbangkan posisinya. Secara umum, kebanyakan orang mulai melihat sesuatu dari bagian kiri atas (sering disebut sebagai sweet spot) dan secara zigzag mengarah ke kanan bawah. Pada proses penyajian visualisasi data, kita perlu mempertimbangkan posisi ini sehingga informasi penting akan berada di tempat yang tepat.

  • Tell a story
    Seperti yang telah kita bahas sebelumnya, manusia cenderung lebih mudah mengingat sebuah cerita ketimbang fakta yang berisi berbagai angka dan grafik. Oleh karena itu, sangat penting untuk kita mengomunikasikan data ke dalam bentuk cerita yang berkesan serta mampu menggerakkan hati audiens untuk melakukan sebuah aksi.

    Untuk menghasilkan cerita yang baik, kita perlu memperhatikan alur narasi di dalamnya. Secara sederhana, kita dapat membagi alur narasi ini ke dalam tiga komponen, yaitu permulaan (beginning), pertengahan (middle), dan akhir (end).
    • Permulaan
      Pada sebuah cerita, bagian permulaan ini sering juga disebut bagian pengenalan dari tokoh serta latar dari cerita tersebut. Nah, pada data storytelling, bagian ini merupakan tempat untuk memperkenalkan konteks dari permasalahan yang akan dibahas kepada audiens. Pada bagian ini juga, kita akan menjelaskan kepada audiens tentang relevansi permasalahan yang akan dibahas terhadap kepentingan mereka.

    • Pertengahan
      Setelah memperkenalkan konteks permasalahan, kini saatnya kita memberikan konflik ke dalam cerita. Konflik ini bisa berupa tantangan yang terjadi seperti hadirnya kompetitor, proses yang tidak efisien, atau bahkan munculnya kesempatan baru yang tidak dapat dimanfaatkan oleh perusahaan. Selain itu, Anda juga bisa memberikan gambaran apa yang mungkin akan terjadi apabila tidak dilakukan penanganan terhadap permasalahan tersebut.

    • Akhir
      Setiap cerita tentunya punya akhir, begitu pula dengan cerita yang kita buat untuk mengomunikasikan data. Di bagian inilah kita memberikan rekomendasi solusi yang perlu dilakukan untuk menyelesaikan permasalahan tersebut. Kita juga dapat menjelaskan kenapa solusi tersebut dapat menyelesaikan permasalahan serta aksi seperti apa yang perlu dilakukan untuk menerapkan solusi tersebut.
       

Machine Learning

Sederhananya, machine learning merupakan sebuah studi yang memungkinkan komputer untuk belajar tanpa perlu diprogram secara eksplisit. Tujuan utama dari machine learning adalah untuk mengembangkan algoritma dan model yang dapat mempelajari pola-pola yang terdapat dalam data serta mampu membuat prediksi berdasarkan pola tersebut.

Secara umum, machine learning dapat di bagi ke dalam tiga kategori besar yaitu seperti berikut.

  • Supervised Learning
    Supervised learning merupakan teknik machine learning yang memanfaatkan data yang disertai label untuk melatih model. Pada proses pembelajaran ini, model akan mengidentifikasi pola yang terbentuk antara data dan label. Lalu menggunakan pola tersebut untuk menghasilkan prediksi.

  • Unsupervised Learning
    Jika supervised learning memanfaatkan data dan juga label untuk melatih model, unsupervised learning hanya membutuhkan data (tanpa label) untuk melatih model. Pada prosesnya model akan belajar untuk mengidentifikasi pola tersembunyi yang terdapat dalam data. Pola ini selanjutnya akan digunakan untuk mengerjakan tugas yang spesifik, seperti membagi data ke dalam beberapa klaster, mendeteksi anomali dalam data, dll.

  • Reinforcement Learning
    Reinforcement learning merupakan teknik machine learning yang memungkinkan model belajar berdasarkan hasil interaksinya dengan lingkungan sekitar. Ketika model berinteraksi dengan lingkungan, model akan menerima sebuah feedback berupa reward atau punishment berdasarkan tindakan yang diambil.

Contoh Algoritma Supervised Learning

Berdasarkan bentuk prediksi yang dihasilkan model, supervised learning dapat dikelompokkan ke dalam dua kategori yaitu classification dan regression.

  • Classification: model digunakan untuk memprediksi kemungkinan sesuatu termasuk dalam kategori tertentu.
  • Regression: model digunakan untuk memprediksi nilai numerik dari banyak kemungkinan nilai.

Berikut beberapa algoritma supervised learning yang paling umum digunakan.

  • Linear regression
    Linear regression merupakan salah satu algoritma machine learning yang paling sederhana dan dapat digunakan untuk permasalahan regression. Pada algoritma ini, model akan membuat prediksi berdasarkan korelasi linear yang terbentuk antara input data (input feature) dan label.

  • Logistic regression
    Algoritma berikutnya adalah logistic regression. Ia merupakan algoritma yang umum digunakan untuk menangani permasalahan classification. Algoritma ini memanfaatkan fungsi logistik untuk menghitung probabilitas suatu input dikelompokkan ke dalam salah satu dari dua kategori yang ada. Klasifikasi yang hanya memiliki dua kemungkinan seperti ini sering disebut binary classification.

  • Decision tree
    Decision tree merupakan sebuah algoritma ML yang dapat digunakan untuk menyelesaikan problem classification dan regression. Algoritma ini akan membuat keputusan berdasarkan benar atau salahnya sebuah pernyataan seperti pada gambar berikut.

  • Random forest
    Algoritma berikutnya yang akan kita bahas ialah random forest yang merupakan bentuk pengembangan dari algoritma decision tree. Sesuai namanya, pada algoritma ini, kita mengombinasikan hasil prediksi dari berbagai model decision tree yang dibuat secara acak. Praktik ini tentunya akan menghasilkan prediksi yang lebih baik.

Contoh Algoritma Unsupervised Learning

Oke, secara garis besar terdapat berbagai kategori permasalahan yang dapat diselesaikan dengan unsupervised learning, seperti clusteringrecommendation systemdimensionality reduction, dll. Nah, pada materi ini, kita hanya akan mengulas tiga di antaranya.

  • Clustering
    Pada permasalahan clustering, kita menggunakan algoritma machine learning untuk mengelompokkan data ke dalam beberapa kategori berdasarkan kesamaan feature yang dimiliki. Salah satu algoritma yang paling sering digunakan pada permasalahan ini adalah K-means clustering.

  • Recommendation system
    Tujuan dari recommendation system adalah membuat sebuah sistem yang mampu memberikan rekomendasi produk atau jasa yang sesuai dengan preferensi user. Terdapat dua teknik yang dapat kita gunakan untuk memprediksi preferensi user yaitu collaborative filtering dan content based filtering.

    Pada collaborative filtering, kita memprediksi preferensi user yang menjadi target dengan menggunakan perilaku user lain dan melihat kesamaannya dengan user target tersebut. Di sisi lain, content based filtering akan memprediksi preferensi user dengan mencari produk lain yang memiliki kemiripan dengan produk yang sebelumnya digunakan oleh user tersebut.

  • Dimensionality reduction
    Permasalahan berikutnya adalah dimensionality reduction. Pada permasalahan ini, kita ingin mengurangi dimensionality atau jumlah feature yang terdapat dalam suatu dataset tanpa kehilangan banyak informasi. Terdapat satu algoritma yang paling sering digunakan untuk melakukan hal ini yaitu Principal Component Analysis atau sering disingkat PCA. Ia akan mereduksi jumlah feature asli menjadi sejumlah kecil feature baru yang disebut sebagai principal component atau komponen utama.

Deep Learning

Sederhananya, deep learning merupakan subbidang dalam machine learning yang secara khusus menggunakan algoritma Artificial Neural Network (ANN) beserta turunannya. Tentunya Anda masih ingat apa itu ANN, bukan

Artificial Neural Network (ANN) merupakan algoritma machine learning yang terinspirasi dari cara kerja sistem saraf manusia dalam mengolah sebuah informasi. Algoritma ini tersusun atas beberapa neuron buatan yang saling terhubung satu sama lain seperti halnya sistem saraf manusia yang tersusun atas berbagai sel saraf yang saling terhubung. Setiap neuron dalam ANN memiliki sebuah fungsi aktivasi yang akan mengubah informasi input menjadi sebuah output. Arsitektur seperti ini akan mempermudah kita dalam mengidentifikasi pola yang terdapat dalam data yang kompleks, seperti gambar, teks, sinyal suara, dsb.

Arsitektur ANN umumnya terdiri dari beberapa layer, yaitu input layer, beberapa hidden layer, dan output layer.

  • Input layer: layer yang menampung input feature yang akan kita masukkan ke dalam model ANN.
  • Hidden layer: input feature tersebut selanjutnya akan diproses di dalam hidden layer untuk mengekstrak pola yang terdapat di dalamnya. Hasil proses ini selanjutnya ke layer berikutnya.
  • Output layer: ini merupakan layer terakhir yang digunakan untuk menghasilkan output prediksi.


Convolutional Neural Networks

Convolutional Neural Networks (CNN) merupakan model neural network yang umum digunakan untuk memproses data yang memiliki topologi grid contohnya seperti gambar. Ia mampu mengekstrak informasi atau pola yang terdapat di dalam sebuah gambar. Arsitektur CNN umumnya terdiri dari tiga layer seperti berikut.

  • Convolution layer
    Convolution layer merupakan komponen inti dalam arsitektur CNN. Pada layer inilah proses convolustion terjadi yang memungkinkan kita untuk mengekstrak pola yang terdapat dalam data menggunakan berbagai filter. Setiap filter dikhususkan untuk mengekstrak informasi atau pola tertentu dalam sebuah gambar, seperti garis vertikal, horizontal, dll.
     
  • Pooling layer
    Layer selanjutnya ialah pooling layer. Pada layer ini kita melakukan proses downsampling terhadap gambar yang telah difilter untuk memperkecil ukurannya tanpa kehilangan banyak informasi. Proses ini dilakukan untuk meningkatkan efisiensi penggunaan resource dalam proses training. Terdapat dua metode pooling yang umum digunakan.
    • Max pooling: downsampling yang dilakukan dengan mengambil nilai maksimum dalam suatu porsi sampel.
    • Average pooling: downsampling yang dilakukan dengan mengambil nilai rata-rata dalam suatu porsi sampel.

  • Dense Layer
    Selain convolution dan pooling layer, pada arsitektur CNN juga terdapat dense layer. Ini merupakan layer yang umum kita gunakan pada arsitektur ANN biasa. Layer ini digunakan untuk memproses pola yang telah disediakan oleh layer sebelumnya sehingga dapat menghasilkan sebuah prediksi.


Recurrent Neural Network

Sequential data merupakan jenis data yang memiliki urutan contohnya, seperti data teks dan time series. Ketika mengolah data jenis ini, kita perlu memperhitungkan urutan tersebut. Untuk memproses data jenis ini, kita bisa menggunakan model Recurrent Neural Network (RNN). Ia merupakan model neural network yang dikhususkan untuk memproses sequential data.

Pada arsitektur RNN terdapat sebuah komponen bernama memory. Komponen ini memungkinkan kita untuk meneruskan informasi data sebelumnya agar dapat digunakan ketika memproses data berikutnya.


Long Short-Term Memory

Long Short-Term Memory (LSTM) merupakan bentuk modifikasi dari model RNN. Ia dikhususkan untuk menangani data sequential yang memiliki urutan panjang. Pada arsitektur LSTM, kita memiliki dua jenis memori yaitu long-term dan short-term memory. Short-term memory memiliki fungsi yang sama dengan memory pada RNN, sedangkan long-term memory (sering juga disebut cell state) merupakan komponen yang menyimpan informasi dari data sebelumnya agar dapat digunakan lagi untuk memproses beberapa data berikutnya. Long-term memory inilah yang memungkinkan LSTM memproses data yang memiliki urutan panjang.

Pada arsitektur LSTM juga terdapat tiga jenis gate yaitu forgetinput, dan output gate. 

  • Forget gate: gate ini membantu model untuk memutuskan informasi mana yang masih relevan untuk disimpan berdasarkan input saat ini.
  • Input gate: gate ini membantu model untuk memutuskan seberapa banyak informasi dari input input saat ini yang harus ditambahkan ke memori sel.
  • Output gate: inilah gate yang akan memproses output dan meneruskannya melalui short-term memory agar dapat digunakan untuk memproses data berikutnya.

Rangkuman Studi Kasus Membuat Business Dashboard


Pengenalan Business Dashboard 

Business dashboard merupakan sebuah media yang digunakan untuk memonitori berbagai metrik yang dianggap penting untuk perkembangan sebuah perusahaan. Oleh karena itu, insight yang diperoleh dari sebuah business dashboard sering digunakan sebagai landasan dalam pengambilan keputusan dan perencanaan strategi bisnis.

Untuk membuat business dashboard yang baik, hal pertama yang harus Anda ketahui adalah kepada siapa dashboard tersebut akan ditampilkan? Atau dengan kata lain kita perlu memahami audiens dari dashboard yang akan dibuat. Tentunya hal ini akan mempengaruhi kebutuhan insight yang ingin diperoleh dari dashboard tersebut.

Secara umum, kita dapat mengelompokkan target audiens ke dalam tiga kelompok besar yaitu seperti berikut.

  • C-level executive
    Kelompok audiens ini bisanya terdiri dari manager, BOD (Board of Directors), dll. Kelompok ini biasanya tidak memiliki waktu banyak untuk melihat dan memahami sebuah dashboard. Oleh karena itu, untuk kelompok audiens ini, kita perlu menyajikan dashboard yang mudah dipahami dan disertai dengan insight serta rekomendasi dari grafik yang ditampilkan. Selain itu, kita juga perlu menghindari penggunaan komponen visual atau fitur interaktif yang memperlambat penarikan insight.

  • Fellow analyst
    Kelompok audiens berikutnya ialah fellow analyst yang merupakan rekan kerja yang memiliki pengetahuan cukup terkait visualisasi data serta bisnis dari dashboard tersebut. Biasanya kelompok ini memerlukan insight yang mendalam terkait data. Untuk kelompok audiens ini, kita perlu menyediakan dashboard yang dilengkapi dengan fitur yang memungkinkan user untuk mengeksplorasi dan menemukan insight dari sebuah grafik. Selain itu, kita juga perlu menyediakan informasi visual yang detail terkait grafik atau data tersebut.

  • Mainstream
    Audiens dari kelompok ini bisanya terdiri dari khalayak umum yang tidak begitu ahli (awam) dalam memahami sebuah visualisasi data. Ketika membuat dashboard untuk kelompok ini, usahakan untuk membuat dan memilih bentuk visual yang mudah dipahami. Selain itu, kita juga perlu menghindari penggunaan istilah bisnis atau teknis yang sulit dipahami.

Biasanya sebuah business dashboard yang baik selalu menyertakan metrik bisnis dan atau KPI (Key Performance Indicator) yang ingin dicapai.

  • Metrik bisnis: merupakan nilai yang menjadi tolak ukur pencapaian dari sebuah tujuan bisnis. 
  • KPI: merupakan sebuah indikator yang berhubungan dengan performa kerja. 

Berikut merupakan beberapa tahapan yang umum dijumpai dalam pengembangan sebuah business dashboard.

  1. Define
    Pada tahap awal tentunya kita perlu memahami audiens dari dashboard yang akan dibuat. Selain itu, kita juga perlu menentukan tujuan atau keluaran dari dashboard tersebut serta pertanyaan bisnis yang ingin dijawab melalui visualisasi data.

  2. Gather Data
    Tahap berikutnya adalah menentukan atau mengumpulkan data yang akan digunakan untuk menjawab pertanyaan bisnis. Pada tahap ini, kita perlu mempertimbangkan sumber dan kualitas data yang akan digunakan.

  3. Prototype
    Setelah mengetahui tujuan dan data yang akan digunakan, tahap selanjutnya adalah membuat prototipe/sketsa/mockup dari dashboard yang akan dibuat. Hal ini akan membantu Anda dalam membuat susunan dashboard yang baik dan efektif. Pada prosesnya, Anda perlu mempertimbangkan ukuran tampilan serta penggunaan sweet spot yang tepat.

  4. Build
    Jika prototipe yang dibuat telah selesai, Anda dapat mulai membuat dan menyusun dashboard sesuai prototipe yang telah dibuat. Pada prosesnya Anda perlu menentukan bentuk grafik yang tepat untuk menjawab pertanyaan bisnis tersebut.

  5. Evaluasi
    Tahap berikutnya adalah mengevaluasi dashboard yang telah dibuat. Hal ini dilakukan untuk memastikan grafik dan komponen visual lain yang terdapat di dalam dashboard telah efektif dan mudah dipahami.

  6. Feedback
    Terakhir kita juga perlu meminta feedback kepada audiens atau user terkait dashboard yang telah dibuat. Hal ini tentunya akan sangat membantu kita dalam membuat business dashboard yang lebih baik ke depannya.


Pengenalan Metabase

Metabase merupakan sebuah open-source software yang dapat digunakan untuk kebutuhan data analitik (sering juga disebut BI tool). Ia memungkinkan kita untuk mentransformasi data menjadi sebuah insight yang dapat digunakan untuk membuat strategi ataupun pengambilan keputusan bisnis. 

Sebagai salah satu tool data analitik yang Andal, metabase memiliki beberapa kelebihan seperti berikut.

  • Relatif mudah digunakan
  • Memiliki dokumentasi yang lengkap
  • Support berbagai jenis database
  • Free to use

Salah satu cara termudah untuk menjalankan metabase ialah menggunakan Docker image. Jika Anda telah berhasil menginstal Docker pada komputer/laptop, sekarang Anda telah siap untuk menjalankan metabase. 

Berikut merupakan tahapan yang harus Anda ikuti untuk menjalankan metabase menggunakan Docker.

  1. Jalankan perintah berikut pada Terminal/Command Prompt/PowerShell guna memanggil (pull) Docker image untuk menjalankan Metabase.
    docker pull metabase/metabase:v0.46.4
  1. Apabila proses pembuatan docker image telah selesai, Anda dapat menjalankan image tersebut menggunakan perintah berikut.
    docker run -p 3000:3000 --name metabase metabase/metabase

    Pada perintah di atas, kita menjalankan docker image (metabase) yang telah dibuat ke dalam port 3000. Jika proses ini berjalan lancar, Anda akan menjumpai tampilan seperti berikut.
    dos:3ae31a3ab24a99d835f2b331926baa6820230912194120.jpeg

  1. Pada tahap ini, Anda telah siap menggunakan metabase. Untuk masuk ke metabase, Anda dapat menggunakan URL berikut: http://localhost:3000/setup. Jika berhasil, Anda akan menjumpai tampilan seperti berikut.
    dos:289774a47ed298e292a98b5579fb423f20230912194119.jpeg

  2. Selesaikan proses registrasi (pada bagian add your data, klik I'll add my data later) dan Anda siap untuk menggunakan metabase. Berikut tampilan halaman awal dari metabase.

    dos:a1fb8cb8037463bb9e844e98dcc3f2c120230912194118.jpeg



Penentuan Cakupan Proyek


Business Understanding

Seperti yang telah dibahas sebelumnya, pada proyek ini, kita akan mengangkat sebuah studi kasus tentang superstore online. Ia merupakan pusat perbelanjaan yang sangat besar dengan berbagai variasi produk. Anda bisa membayangkannya seperti sebuah toko serba ada (toserba).

Sebagai salah satu toserba yang cukup terkenal, pastinya akan menjumpai beberapa permasalahan terkait permintaan barang yang terus meningkat serta persaingan yang semakin ketat. Oleh karena itu, ia membutuhkan pengetahuan seorang praktisi data seperti Data Scientist untuk memberikan insight dari data yang ada. Harapannya insight ini dapat digunakan untuk membuat strategi bisnis yang lebih baik.


Menentukan Cakupan Proyek & Persiapan

Nah, berdasarkan permasalahan bisnis di atas, kita akan menentukan cakupan proyek yang akan dikerjakan. Pada proyek ini, kita hanya akan membuat business dashboard untuk memonitori data penjualan.

Berikut beberapa pertanyaan yang akan kita cari jawabannya dalam proyek ini.

  • Bagaimana performa penjualan setiap bulannya?
  • Seberapa besar revenue yang dihasilkan per bulan?
  • Daerah mana yang menghasilkan revenue paling banyak?
  • Berapa jumlah pelanggan yang berbelanja setiap bulannya?
  • Berapa jumlah revenue yang dihasilkan dari setiap segmentasi pelanggan?
  • Berapa jumlah produk yang terjual setiap bulannya?
  • Berapa nilai Average Order Value (AOV) setiap bulannya?
  • Kategori produk yang paling banyak dibeli beserta keuntungannya?

Nah, itulah beberapa pertanyaan yang akan kita coba cari jawabannya dalam proyek ini. Untuk menjawab pertanyaan tersebut, kita perlu menyiapkan beberapa hal terlebih dahulu seperti berikut.

  1. Menyiapkan environment proyek: sebelum mengerjakan proyek ini, Anda perlu menginstal beberapa library Python yang dibutuhkan untuk mengolah dataset yang akan digunakan. Berikut merupakan perintah yang dapat Anda gunakan untuk menginstalnya.
  2. Menyiapkan dataset: Anda juga perlu menyiapkan dataset yang akan digunakan. Pada proyek ini, kita akan menggunakan superstore dataset
  3. Menyiapkan database: untuk proyek ini, kita akan menggunakan PostgreSQL sebagai DBMS dari database yang akan digunakan. Ia akan dijalankan pada sebuah layanan cloud bernama supabase. 
  4. Mengirim dataset ke dalam database: Anda dapat mengirim dataset yang sebelumnya telah kita unduh ke dalam database menggunakan library sqlalchemy. Untuk melakukannya, Anda membutuhkan DATABASE_URL yang disediakan oleh supabase.


Data Preparation

Pada proyek ini, kita hanya perlu melakukan tiga tahap data preparation yaitu

  1. menghubungkan metabase dengan database yang akan digunakan;
  2. memeriksa data schema dari dataset/tabel yang akan digunakan; dan
  3. membuat model data sebagai building blocks dari business dashboard yang akan dibuat.


Menghubungkan Metabase dengan Database 

Setelah masuk ke halaman awal metabase, sekarang Anda siap menghubungkan metabase dengan database yang sebelumnya telah kita buat. Berikut tahapan untuk melakukannya.

  1. Silahkan klik bagian Settings dan masuk ke bagian Admin settings.
  2. Pada halaman Admin setting, masuk ke bagian Database dan klik Add database.
  3. Tahab berikutnya adalah lengkapi informasi konfigurasi dari database yang sebelumnya telah Anda buat.

Menyesuaikan Data Schema

Tahap ini dilakukan untuk memastikan metabase memahami tipe data dari tiap kolom data yang akan kita gunakan. Untuk melakukannya, Anda dapat mengikuti beberapa langkah berikut.

  1. Pada halaman Admin setting, klik bagian Data model.
  2. Setelah masuk halaman Data Model, pilih database superstore dan klik bagian public dan pilih orders (nama dari tabel yang kita gunakan). 
  3. Pada halaman ini, kita akan menyesuaikan semua tipe kolom yang terdapat dalam tabel orders. Apabila dibutuhkan, Anda juga dapat menambahkan keterangan tambahan pada bagian column description.
  4. Setelah proses tersebut selesai, Anda dapat kembali ke halaman utama dengan cara mengklik Exit admin.

Membuat Model Data

Pada metabase, model data merupakan kumpulan data yang disusun dari sebuah atau beberapa tabel dalam suatu database. Biasanya, ia dibuat untuk hal yang spesifik dan mencegah. 

Berikut tahapan untuk membuat model data pada metabase.

  1. Pada halaman awal, klik New dan pilih Model.
  2. Untuk membuat model data, Anda dapat memilih menggunakan notebook editor atau native query. Pada latihan ini, kita akan menggunakan native query. 
  3. Pada halaman Query, pilih superstore sebagai sumber database.
  4. Selanjutnya, masukkan dan jalankan perintah query yang sesuai dengan kebutuhan Anda.
  5. Setelah menjalankan perintah tersebut, Anda perlu memeriksa kembali tipe data dari setiap kolom dengan cara mengklik bagian Metadata.
  6. Apabila telah selesai, simpan model data tersebut dengan nama Monthly sales.


Data Visualization

Berdasarkan pertanyaan yang telah dibuat sebelumnya, kita dapat menentukan beberapa metrik bisnis yang akan digunakan yaitu seperti berikut.

  • Recent revenue: jumlah revenue yang dihasilkan pada bulan terkini.
  • Recent number of customers: jumlah customers yang melakukan transaksi pada bulan terkini.
  • Recent average purchase frequency: rata-rata jumlah transaksi yang dilakukan customers pada bulan terkini.
  • Recent  AOV: rata-rata jumlah revenue yang dihasilkan setiap transaksi pada bulan terkini.
  • Recent average order size: rata-rata jumlah produk yang terjual setiap transaksi pada bulan terkini.

Metrik pertama yang akan kita buat ialah recent revenue. Berikut tahapan yang dapat Anda ikuti untuk membuatnya. 

  1. Pada halaman utama klik New dan pilih Question.
  2. Kemudian pilih model data yang akan digunakan. Untuk metrik ini, kita menggunakan model data Monthly sales.
  3. Setelah memilih sumber data yang akan digunakan, Anda akan diminta untuk membuat query untuk memperoleh data yang divisualisasikan. Metabase menyediakan dua cara untuk melakukannya, pertama menggunakan editor dan yang kedua menggunakan perintah SQL. 
  4. Pada bagian summarize pilih metrik sum of dan klik kolom revenue.
  5. Berikutnya, pilih kolom date untuk melakukan group by Month
  6. Klik tombol Visualize.
  7. Pada bagian visualization, pilih Trend. Grafik ini dapat digunakan untuk menampilkan nilai metrik terkini dan membandingkannya dengan nilai periode sebelumnya. 
  8. Klik Save untuk menyimpan hasil visualisasi tersebut.

Nah, Anda dapat menggunakan tahapan yang sama untuk menghasilkan visualisasi dari metrik yang lain. Perbedaannya hanya terdapat pada metrik dan kolom serta model data yang digunakan. Untuk recent number of customers dan recent average purchase frequency, kita menggunakan model data Purchase frequency. Di lain sisi, untuk  recent  AOV dan recent average order size, kita menggunakan model data Orders size

Selain beberapa metrik bisnis di atas, kita juga perlu membuat beberapa visualisasi data lain seperti.

  • Monthly order volume: menggambarkan jumlah order tiap bulannya.
  • Total revenue by segment: menggambarkan jumlah revenue yang dihasilkan dari setiap segmentasi customer.
  • Number of product sold by category: jumlah produk yang terjual untuk setiap kategori produk.
  • Total revenue by states: jumlah revenue yang dihasilkan dari setiap daerah.

Untuk membuat visualisasi data monthly order volume, Anda dapat mengikuti tahapan berikut.

  1. Pada halaman utama klik New dan pilih Question.
  2. Kemudian pilih model data yang akan digunakan. Untuk metrik ini, kita menggunakan model data Monthly sales.
  3. Pada bagian summarize pilih metrik sum of dan klik kolom num_orders.
  4. Kemudian Anda juga bisa menambahkan metrik jumlah diskon untuk mengetahui korelasinya dengan jumlah order.
  5. Berikutnya, pilih kolom date untuk melakukan group by Month
  6. Klik tombol Visualize.
  7. Pada bagian visualization, Anda dapat memilih bentuk visual yang paling sesuai dan mempercantiknya sesuai kebutuhan.

Anda dapat menggunakan tahapan yang sama untuk menghasilkan visualisasi data yang lain. Perbedaannya hanya terdapat pada metrik dan kolom serta bentuk visual yang digunakan.


Membuat Business Dashboard 

Untuk mulai membuat dashboard dengan metabase, Anda dapat mengikuti langkah berikut.

  1. Masuk ke halaman utama lalu klik New dan pilih Dashboard.
  2. Selanjutnya, masukkan nama dari dashboard yang akan Anda buat. Pada proyek ini kita akan menamainya sebagai Sales Dashboard.
  3. Pada halaman dashboard, Anda dapat mengklik Add a saved question untuk memasukkan visualisasi data yang sebelumnya telah kita buat. 
  4. Pada bagian awal, masukkan semua bentuk visual dari metrik bisnis yang sebelumnya telah kita buat. Kemudian susun metrik tersebut sesuai sketsa yang telah kita buat sebelumnya.
  5. Tahap berikutnya adalah memasukkan berbagai grafik yang sebelumnya telah kita buat. Untuk menambahkannya, Anda dapat mengklik Add question dan pilih grafik yang ingin dimasukkan. Susunlah grafik tersebut sesuai sketsa dashboard yang sebelumnya telah kita buat.

Sekarang kita perlu menambahkan filter ke dalam dashboard tersebut. Untuk melakukannya, Anda perlu mengklik Add filter lalu pilih Time dan klik Quarter and Year. Kemudian Anda perlu memilih kolom yang akan difilter, untuk proyek ini kita akan memilih kolom Date

Pastikan untuk memilih kolom yang akan di filter pada semua grafik yang terdapat dalam dashboard. Setelah selesai, Anda dapat mengklik Done lalu Save. untuk menggunakan filter ini, Anda dapat mengklik Quarter and Year lalu pilih kuartal yang ingin dilihat (ingat kita hanya memiliki dari dari tahun 2014 sampai 2017).

Nah, untuk memastikan dashboard tersebut mudah dipahami, Anda dapat memperlihatkannya kepada mentor, teman, atau keluarga lalu meminta mereka bertanya apabila terdapat bagian yang membingungkan.


Rangkuman Studi Kasus Customer Segmentation Analysis


Pengenalan Customer Segmentation Analysis

Customer segmentation analysis merupakan sebuah proses pengelompokan pelanggan ke dalam beberapa klaster atau kelompok berdasarkan kesamaan karakteristik, preferensi, dan pola atau perilaku ketika melakukan transaksi pembelian. 

Pengelompokan ini tentunya akan mempermudah kita dalam memahami pelanggan dan merancang sebuah strategi marketing yang sesuai kebutuhan tiap klaster. Selain itu, pengelompokan ini dapat memberikan beberapa manfaat, antara lain

  • meningkatkan kepuasan pelanggan karena telah berhasil memahami kebutuhan mereka;
  • meningkatkan efisiensi penggunaan sumber daya dengan memfokuskan strategi bisnis kepada segmen yang berpotensi menghasilkan keuntungan terbesar (sesuai kebutuhan perusahaan); dan yang terpenting
  • customer segmentation analysis ini dapat membantu kita dalam mengurangi customer retention dengan mengidentifikasi serta membuat strategi bisnis yang sesuai dengan karakteristik dan kebutuhan dari pelanggan yang mungkin akan melakukan churn.

Berikut beberapa metode yang umum digunakan untuk melakukan customer segmentation analysis.

  • Rule-based segmentation
    Rule-based segmentation merupakan sebuah metode pengelompokan pelanggan yang mengandalkan aturan atau kriteria tertentu yang telah ditentukan sebelumnya. Aturan tersebut selanjutnya akan diterapkan untuk mengelompokkan pelanggan berdasarkan karakteristik tertentu, seperti daerah, jenis kelamin, umur, latar belakang pendidikan, dll. Sebagai contoh kita mengelompokkan pelanggan ke dalam tiga kategori, yaitu remaja (13-22 tahun), dewasa (23-50 tahun), dan lansia (>50 tahun).

  • RFM analysis
    RFM analysis merupakan metode pengelompokan pelanggan berdasarkan tiga parameter utama yaitu seperti berikut.
    • Recency: parameter yang digunakan untuk melihat kapan terakhir seorang pelanggan melakukan transaksi.
    • Frequency: parameter ini digunakan untuk mengidentifikasi seberapa sering seorang pelanggan melakukan transaksi.
    • Monetary: parameter terakhir ini digunakan untuk mengidentifikasi seberapa besar revenue yang berasal dari pelanggan tersebut.

  • Machine learning
    Pada metode ini, kita menggunakan pendekatan machine learning untuk mengelompokkan pelanggan berdasarkan data karakteristik dan perilaku belanjanya. Pada praktiknya, kita biasanya menggunakan algoritma clustering yang merupakan bagian dari unsupervised learning seperti K-means clustering.

Business Understanding & Penentuan Cakupan Proyek

Sebuah toserba biasanya memiliki banyak pelanggan dengan karakteristik dan preferensi yang berbeda-beda. Hal ini tentunya mempersulit toserba tersebut dalam mengidentifikasi pelanggannya. Oleh karena itu, ia membutuhkan bantuan seorang data scientist untuk mengidentifikasi berbagai kelompok pelanggan sehingga dapat membuat strategi bisnis yang efektif untuk menjaga serta meningkatkan kepuasan pelanggan tersebut.

Untuk menjawab permasalahan bisnis tersebut, kita akan menerapkan customer segmentation analysis. Nah, pada proyek ini kita akan menerapkan dua metode untuk melakukan customer segmentation yaitu RFM analysis dan machine learning. Algoritma machine learning yang digunakan akan disesuaikan dengan keadaan dataset (akan ditentukan pada Customer Segmentation dengan Machine Learning).

Selain itu, kita juga akan melakukan sedikit proses Exploratory Data Analysis (EDA) untuk memperoleh gambaran terkait dataset yang akan kita gunakan. Pada prosesnya, kita juga akan coba melihat karakteristik dari setiap kelompok data (berdasarkan beberapa kolom kategoris) yang terdapat dalam dataset. 

Nah, berdasarkan cakupan proyek tersebut, kita membutuhkan beberapa resource dan tool, yaitu

  • data transaksi setiap pelanggan (superstore dataset); 
  • bahasa pemrograman Python sebagai tool utama kita dalam proyek ini; serta
  • berbagai library pendukung untuk pengolahan data dan pengembangan model machine learning.

Data Preparation

Pada proyek ini kita melakukan beberapa tahapan data preparation, seperti

  1. mengumpulkan data yang akan digunakan;
  2. membersihkan data;
  3. membuat feature baru yang dibutuhkan, serta
  4. menghilangkan beberapa feature yang tidak dibutuhkan.


Exploratory Data Analysis

Jika sebelumnya kita telah selesai melakukan tahap data preparation, kini saatnya masuk ke tahap Exploratory Data Analysis atau sering disingkat EDA. Pada tahap ini, kita akan melakukan eksplorasi data untuk menemukan pola, hubungan, serta membangun intuisi terkait data yang diolah. 

Pada proyek ini, proses EDA dilakukan untuk memperoleh gambaran terkait distribusi data yang akan kita gunakan. Selain itu, kita juga sedikit melihat preferensi pengguna berdasarkan pengelompokan data yang sudah ada.


RFM Analysis

Pada bagian ini, kita akan coba menerapkan metode RFM analysis untuk mengidentifikasi berbagai kelompok pelanggan berdasarkan tiga parameter. Apakah Anda masih ingat ketiga parameter tersebut? Oke, jika lupa, berikut merupakan ketiga parameter yang digunakan dalam RFM analysis.

  • Recency: parameter yang digunakan untuk melihat kapan terakhir seorang pelanggan melakukan transaksi.
  • Frequency: parameter ini digunakan untuk mengidentifikasi seberapa sering seorang pelanggan melakukan transaksi.
  • Monetary: parameter terakhir ini digunakan untuk mengidentifikasi seberapa besar revenue yang berasal dari pelanggan tersebut.

Ketika menggunakan metode ini, kita akan biasanya kita akan memberikan sebuah nilai (0-5 atau 0-10) berdasarkan ketiga parameter di atas. Nilai tersebut selanjutnya akan dikombinasikan dan dikelompokkan ke dalam beberapa klaster. Contohnya, pelanggan dengan nilai recency, frequency, dan monetary yang tinggi akan dikelompokkan ke dalam high-value segment. Sebaliknya, jika nilai dari ketiga parameter tersebut kecil, kita akan mengelompokkannya ke dalam low-value segment.  


Customer Segmentation dengan Machine Learning

K-means clustering merupakan salah algoritma machine learning yang masuk ke dalam kategori unsupervised learning. Ia digunakan untuk mengelompokkan data tanpa label (unlabeled data) ke dalam beberapa grup atau klaster. Hal ini dilakukan dengan membuat sebuah skema berdasarkan kemiripan dari setiap titik data.  

Pada K-means clustering, setiap klaster didefinisikan dengan sebuah titik sentral (central point) yang disebut centroid. Ia merepresentasikan posisi sentral dari setiap klaster atau dalam bahasa matematis disebut nilai mean dari seluruh titik data pada sebuah klaster. Nah, dari sinilah nama K-means clustering berasal.

Secara garis besar terdapat tempat tahapan dalam algoritma K-means clustering antara lain seperti berikut.

  1. Menentukan jumlah klaster dan memilih titik centroid untuk setiap klaster secara acak.
  2. Mengelompokkan seluruh titik data ke dalam centroid terdekat.
  3. Menghitung nilai mean dari tiap klaster sebagai titik centroid baru.
  4. Mengulang tahap 2 dan 3 hingga posisi seluruh titik centroid tetap atau tidak berubah.

Pertanyaan berikutnya adalah bagaimana cara menentukan jumlah klaster yang optimal? Untuk melakukannya, kita perlu mempertimbangkan kebutuhan bisnis dan atau domain knowledge dari proyek yang kita kerjakan. Hal ini dapat menjadi patokan bagi kita dalam menentukan jumlah klaster yang akan digunakan. 

Selain menggunakan kebutuhan bisnis dan domain knowledge, kita juga dapat menggunakan beberapa metode untuk menentukan jumlah klaster yang optimal. Namun, sebelum kita membahasnya, ketahuilah terlebih dahulu dua kriteria utama dalam menentukan hasil clustering yang baik. Idealnya, jarak antar titik data dalam satu klaster haruslah sangat dekat. Di saat yang bersamaan, jarak antar klaster haruslah terpisah dengan baik (memiliki memiliki jarak yang cukup jauh satu sama lain). Keduanya kriteria inilah yang menjadi patokan dalam menentukan kualitas dari hasil clustering.

Nah, terdapat dua metrik yang umum digunakan untuk menilai kualitas dari suatu hasil clustering yaitu inertia dan silhouette coefficient.

  • Inertia
    Inertia merupakan metrik yang digunakan untuk menghitung total jarak kuadrat antar titik data (x) dengan centroid (c) dalam suatu klaster. Secara matematis, inertia diformulasikan menggunakan persamaan berikut.
    dos:d005971688b080c6b45cfd9791b2f9a320230914200146.jpeg
    Semakin besar nilai inertia, semakin besar pula jarak antar titik data dengan centroid dalam sebuah klaster. Di sisi lain, semakin kecil nilai inertia, semakin kecil pula jarak antar titik data dengan centroid dalam sebuah klaster.

  • Silhouette coefficient
    Silhouette coefficient merupakan salah satu metrik alternatif yang dapat digunakan untuk menilai kualitas dari suatu hasil clustering. Proses perhitungan dimulai dengan menghitung nilai rata-rata jarak antar titik data dalam sebuah klaster yang sama (a). Selanjutnya, kita perlu menghitung nilai rata-rata jarak antar titik data dalam suatu klaster dengan titik data dari klaster lain (b). Kemudian, kita dapat menggunakan persamaan berikut untuk menghitung silhouette coefficient.
    dos:fb7893a0ea5ae7b1e7204624fe076d3c20230914200145.jpeg
    Nilai silhouette coefficient berkisar antara -1 sampai +1. Semakin besar nilai silhouette coefficient, semakin baik hasil clustering tersebut. Di sisi lain, semakin kecil nilai silhouette coefficient, semakin jelek hasil clustering tersebut.

Rangkuman Studi Kasus Credit Scoring Analytics


Pengenalan Credit Scoring Analytics

Credit scoring analysis merupakan sebuah proses analisis yang dilakukan oleh pemberi pinjaman (lenders) atau institusi keuangan guna menentukan kelayakan kredit (creditworthiness) dari peminjam (borrower). Proses ini biasanya akan menghasilkan sebuah nilai numerik yang menentukan kemungkinan peminjam tersebut gagal bayar.

Pada proses credit scoring analysis, kita perlu mempertimbangkan berbagai faktor yang mempengaruhi kemampuan peminjam dalam memenuhi kewajibannya (melunasi hutang). Berikut beberapa di antaranya.

  • Credit history
    Riwayat kredit seorang peminjam merupakan faktor utama dalam penentuan kelayakan dari sebuah kredit. Hal ini untuk menilai seberapa sering peminjam melakukan kredit serta apakah pembayaran kredit dilakukan secara tepat waktu.
  • Credit utilization ratio
    Faktor berikutnya adalah besar perbandingan (rasio) antara jumlah kredit yang digunakan oleh peminjam dengan total kredit yang tersedia untuknya (credit limit). Hal ini mengindikasikan seberapa besar tekanan keuangan yang dimiliki seorang peminjam. Biasanya semakin besar nilai rasionya, semakin tinggi pula resiko dari pinjaman tersebut.
  • Length of credit history
    Durasi riwayat kredit juga merupakan salah satu faktor penting dalam menilai resiko dari sebuah pinjaman. Semakin panjang riwayat penggunaan kredit, semakin banyak data yang dapat digunakan untuk menilai kelayakan dari sebuah pinjaman.
  • Credit mix
    Variasi jenis kredit seperti kartu kredit, pinjaman, mortgages, dll. Portofolio kredit yang terdiversifikasi menunjukkan kemampuan manajemen utang yang baik.
  • New credit
    Faktor berikutnya adalah seberapa sering seorang peminjam mengajukan pinjaman baru. Semakin sering seseorang mengajukan pinjaman baru, biasanya menunjukkan keuangan yang tidak stabil.


Business Understanding & Penentuan Cakupan Proyek


Business Understanding

Finance Merdeka merupakan sebuah perusahaan teknologi baru yang bergerak di bidang keuangan. Ia menyediakan berbagai solusi keuangan berbasis teknologi untuk memberdayakan individu dan pelaku usaha.

Walaupun menyediakan berbagai solusi keuangan berbasis teknologi, terdapat beberapa tahapan dalam layanan tersebut yang dilakukan secara manual. Salah satu tahapan tersebut ialah pemeriksaan risiko kredit ketika individu dan pelaku usaha mengajukan pinjaman. Tahapan ini sepenuhnya dilakukan secara manual oleh tim Risk Analytics Analyst. Tahapan ini tentunya memakan banyak waktu dan sangat tidak efisien. Oleh karena itu, Finance Merdeka berupaya untuk mengoptimalkan tahapan tersebut.


Menentukan Cakupan Proyek

Oke, untuk menjawab permasalahan bisnis tersebut, kita akan menggunakan data yang telah dikumpulkan tersebut untuk mengembangkan sebuah sistem berbasis machine learning untuk memprediksi risiko kredit dari seorang pelanggan. Pada proses pengembangannya, kita akan bereksperimen dengan berbagai pendekatan atau algoritma machine learning serta membandingkannya untuk memperoleh model dengan performa terbaik. 

Nah, berdasarkan cakupan proyek tersebut, kita membutuhkan beberapa resource dan tool seperti berikut.

  • Data yang berkaitan dengan keadaan keuangan dan kredit dari seluruh pelanggan setidaknya dalam satu tahun terakhir.
  • Bahasa pemrograman Python sebagai tool utama kita dalam proyek ini.
  • Berbagai library pendukung untuk pengolahan data dan pengembangan model machine learning.
  • Streamlit sebagai tool yang kita gunakan untuk membuat sebuah prototype sederhana.


Data Understanding

Pada proyek ini, kita akan menggunakan Dataset credit score classification yang berasal dari Kaggle. Dataset ini menyediakan berbagai informasi terkait kredit dari setiap individu selama satu tahun yang dimuat dalam 27 feature atau kolom seperti berikut. 

  • ID: kolom ini merupakan indeks dari dataset yang akan kita gunakan.
  • Customer_ID: kolom ini berisi customer ID yang bersifat unik.
  • Month: kolom ini merepresentasikan bulan dalam satu tahun.
  • Name: kolom ini berisi nama dari pelanggan tersebut.
  • Age: kolom ini memuat informasi terkait umur dari seorang pelanggan.
  • SSN: kolom ini berisi informasi terkait SSN (mirip seperti NIK) dari seorang pelanggan.
  • Occupation: kolom ini berisi informasi pekerjaan dari seorang pelanggan.
  • Annual_Income: kolom ini berisi informasi terkait total pendapatan dari seorang pelanggan per tahun.
  • Monthly_Inhand_Salary: kolom ini berisi informasi terkait gaji pokok perbulan dari seorang pelanggan. 
  • Num_Bank_Accounts: kolom ini menunjukkan jumlah rekening bank yang dimiliki seorang pelanggan.
  • Num_Credit_Card: kolom ini menunjukkan jumlah kartu kredit yang dimiliki seorang pelanggan.
  • Interest_Rate: kolom ini menunjukkan jumlah bunga kartu kredit yang dikenakan kepada seorang pelanggan.
  • Num_of_Loan: kolom ini berisi informasi terkait jumlah pinjaman dari seorang pelanggan.
  • Type_of_Loan: kolom ini berisi informasi terkait jenis pinjaman yang dimiliki seorang pelanggan (Not SpecifiedPersonal LoanStudent Loan, dll.
  • Delay_from_due_date: kolom ini menunjukkan jumlah rata-rata hari keterlambatan dari tanggal jatuh tempo.
  • Num_of_Delayed_Payment: kolom ini menunjukkan jumlah rata-rata pembayaran yang tertunda.
  • Changed_Credit_Limit: kolom ini memuat informasi terkait persentase perubahan limit kartu kredit.
  • Num_Credit_Inquiries: kolom ini memuat informasi terkait jumlah pengajuan atau permintaan kartu kredit oleh seorang pelanggan.
  • Credit_Mix: kolom ini memuat informasi terkait klasifikasi campuran kredit (StandardStandardGood, dan Bad).
  • Outstanding_Debt: kolom ini menunjukkan jumlah total sisa utang yang harus dibayar oleh seorang pelanggan.
  • Credit_Utilization_Ratio: kolom ini menunjukkan rasio penggunaan kartu kredit oleh seorang pelanggan.
  • Credit_History_Age: kolom ini menunjukkan usia riwayat kredit dari seorang pelanggan.
  • Payment_of_Min_Amount: kolom ini menunjukkan apakah seorang pelanggan hanya melakukan pembayaran dengan jumlah minimum (YesNoNM). 
  • Total_EMI_per_month: kolom ini memuat informasi terkait  jumlah EMI (Equated Monthly Installment) yang harus dibayar seorang pelanggan.
  • Amount_invested_monthly: kolom ini menunjukkan jumlah investasi oleh seorang pelanggan tiap bulannya. 
  • Payment_Behaviour: kolom ini menggambarkan pola pembayaran dari seorang pelanggan (Low_spent_Small_value_paymentsHigh_spent_Small_value_payments, dll..
  • Monthly_Balance: kolom ini menunjukkan jumlah saldo bulanan yang dimiliki seorang pelanggan.
  • Credit_Score: kolom ini menunjukkan kategori credit score yang dimiliki seorang pelanggan (PoorStandard, dan Good).

Data Preprocessing

Data preprocessing merupakan salah satu tahapan penting dalam proyek data science. Ia adalah tahap di mana kita melakukan proses transformasi pada data sehingga menjadi bentuk yang cocok untuk proses pemodelan. Ada beberapa tahapan yang umum dilakukan pada data preparation, antara lain, feature selection, transformasi data, feature engineering, dan dimensionality reduction

Nah, pada proyek ini kita akan melakukan beberapa tahapan untuk menyiapkan dataset sebelum digunakan untuk melatih model seperti berikut.

  1. Membagi dataset menjadi dua bagian yaitu data latih dan uji.
  2. Mengatasi imbalanced data dengan teknik undersampling.
  3. Melakukan encoding terhadap feature kategorik dan scaling terhadap feature numerik.
  4. Reduksi dimensi dan mengatasi multikolinearitas pada feature numerik.


Modeling

Pada proyek ini, kita ingin memanfaatkan algoritma machine learning guna mengoptimalkan proses pemeriksaan risiko kredit ketika pengajuan pinjaman berlangsung. Berdasarkan data yang kita miliki, target keluaran yang diharapkan adalah mengelompokkan pelanggan yang mengajukan pinjaman ke dalam tiga kategori yaitu Good, Standard, dan Poor. 

Ini merupakan salah satu contoh persoalan klasifikasi lebih tepatnya ini merupakan multiclass classification. Sesuai namanya, pada multiclass classification kita akan mengelompokkan data ke dalam lebih dari dua kategori atau kelas.

Pada proyek ini, kita akan mengembangkan beberapa model menggunakan algoritma machine learning yang berbeda-beda. Kemudian, kita akan mengevaluasi performa masing-masing model lalu menentukan model mana yang memiliki performa terbaik. Nah, berikut merupakan beberapa algoritma yang akan kita gunakan.

  • Decision tree
  • Random forest
  • Gradient Boosting

Selain beberapa algoritma machine learning di atas, kita juga akan menggunakan algoritma grid search untuk melakukan mencari parameter paling optimal dari suatu model.


Grid Search

merupakan sekumpulan konfigurasi parameter yang biasa ditentukan sebelum proses training berlangsung. Hyperparameters digunakan untuk meng-custom model dan mengontrol proses training sesuai dengan dataset atau permasalahan yang ingin diselesaikan. 

Pada proses pengembangan model, bisanya kita akan bereksperimen dengan berbagai konfigurasi hyperparameter. Tujuannya adalah untuk memperoleh konfigurasi yang paling optimal untuk melatih model machine learning. Proses ini sering disebut hyperparameter tuning.

Pada praktiknya, proses hyperparameter tuning ini dapat dijalankan secara manual dengan mencoba berbagai konfigurasi hyperparameter yang ada hingga diperoleh konfigurasi yang paling optimal. Alternatif lain, kita bisa menjalankan proses hyperparameter tuning secara otomatis dengan bantuan beberapa algoritma salah satunya adalah grid search.

Grid search merupakan algoritma yang memungkinkan kita untuk melakukan proses hyperparameter tuning secara otomatis. Pada prosesnya, algoritma ini akan membuat sebuah n-dimensional search space yang terbentuk dari n hyperparameter dari sebuah model. Setiap titik yang terdapat pada search space mewakili satu konfigurasi atau perpaduan dari n hyperparameter. Algoritma ini bekerja dengan mengevaluasi setiap titik yang terdapat dalam search space untuk memperoleh konfigurasi hyperparameter yang paling optimal.

Untuk menerapkan algoritma ini, kita akan menggunakan tool yang disediakan oleh scikit learn yang bernama GridSearchCV(). Ketika dipanggil, tool ini akan menerima berapa parameter seperti

  • estimator: parameter yang menampung model object;
  • param_grid: kumpulan hyperparameter yang akan diguankan untuk membuat grid search;
  • cv: parameter untuk mengatur proses cross validation; dan
  • n_jobs: jumlah job (pekerjaan) yang dikerjakan secara paralel. n_jobs=-1 artinya semua proses berjalan secara paralel.


Decision Tree

Decision tree merupakan sebuah algoritma machine learning yang dapat digunakan untuk menyelesaikan problem classification dan regression. Algoritma ini akan membuat keputusan berdasarkan benar atau salahnya sebuah pernyataan yang terdapat dalam sebuah pohon keputusan.

Pada library scikit learn. Anda dapat menggunakan function DecisionTreeClassifier() untuk membuat dan melatih model decision tree yang mampu menyelesaikan permasalahan klasifikasi. Model menerima beberapa parameter seperti berikut.

  • random_state: digunakan untuk mengontrol random number generator yang digunakan oleh model.
  • max_depth: hyperparameter yang mengatur kedalaman atau panjang pohon keputusan.
  • max_features: hyperparameter yang mengatur jumlah maksimum feature yang digunakan untuk mencari percabangan terbaik.
  • criterion: metrik yang digunakan untuk mengukur kualitas dari sebuah percabangan.

Random Forest

Random forest merupakan  bentuk pengembangan dari algoritma decision tree. Sesuai namanya, pada algoritma ini, kita mengombinasikan hasil prediksi dari berbagai model decision tree yang dibuat secara acak. Praktik ini tentunya akan menghasilkan prediksi yang lebih baik. 

Untuk membuat model random forest untuk persoalan klasifikasi, kita bisa menggunakan tool RandomForestClassifier() yang telah disediakan oleh scikit learn. Ia menerima beberapa parameter seperti berikut.

  • random_state: digunakan untuk mengontrol random number generator yang digunakan oleh model.
  • max_depth: hyperparameter yang mengatur kedalaman atau panjang pohon keputusan.
  • max_features: hyperparameter yang mengatur jumlah maksimum feature yang digunakan untuk mencari percabangan terbaik.
  • criterion: metrik yang digunakan untuk mengukur kualitas dari sebuah percabangan.
  • n_estimators: hyperparameter yang menentukan jumlah trees (pohon) yang digunakan dalam algoritma random forest.


Gradient Boosting

Algoritma terakhir yang akan kita bahas adalah gradient boosting. Ia merupakan algoritma machine learning yang memadukan hasil prediksi dari beberapa model untuk menghasilkan prediksi yang lebih baik seperti halnya algoritma random forest.

Pada algoritma gradient boosting, model dilatih secara berurutan dalam proses yang iteratif. Pertama algoritma ini akan membuat sebuah model (biasanya menggunakan decision tree) yang disebut weak learner pertama. Kemudian model kedua akan dibuat untuk meningkatkan performa dari model sebelumnya (weak learner pertama) dan disebut weak learner kedua. Proses ini berlangsung terus menerus hingga mencapai jumlah maksimum model yang digunakan.

Nah, untuk membuat model dengan algoritma gradient boosting, kita bisa menggunakan GradientBoostingClassifier() yang juga disediakan oleh scikit learn. Ia menerima beberapa parameter seperti berikut.

  • random_state: digunakan untuk mengontrol random number generator yang digunakan oleh model.
  • max_depth: hyperparameter yang mengatur kedalaman atau panjang pohon keputusan.
  • max_features: hyperparameter yang mengatur jumlah maksimum feature yang digunakan untuk mencari percabangan terbaik.
  • n_estimators: hyperparameter yang menentukan jumlah trees (pohon) yang akan digunakan.


Evaluation

Secara umum terdapat beberapa metrik yang dapat digunakan untuk mengevaluasi model pada kasus multiclass classification seperti berikut.

  • Confusion matrix
    Pada problem classification, salah satu metrik utama yang harus diperhatikan adalah confusion matrix. Metrik ini akan memberi gambaran performa model pada berbagai kelas. Ia menunjukkan berapa banyak jumlah prediksi yang benar (True) dan salah (False) untuk setiap label. Berikut merupakan contoh ilustrasi confusion matrix untuk multiclass classification.

    Berdasarkan hasil di atas, kita dapat melihat seberapa baik performa model untuk melakukan prediksi pada setiap kelas atau label. Hal ini akan sangat berguna terutama ketika berhadapan dengan data yang memiliki kelas tidak seimbang (imbalance data). Selain itu, hasil dari confusion matrix ini akan digunakan untuk menghitung berbagai metrik lain seperti accuracy, precision, dll.
  • Accuracy
    Metrik berikutnya yang sering digunakan adalah accuracy. Metrik ini akan menilai seberapa banyak model menghasilkan hasil prediksi yang benar. Ia didefinisikan sebagai perbandingan antara jumlah prediksi yang benar dengan jumlah total seluruh sampel.
  • Precision
    Precision merupakan metrik yang digunakan untuk mengukur berapa banyak model menghasilkan prediksi yang benar untuk suatu kelas tertentu. Precision didefinisikan sebagai perbandingan antara jumlah hasil prediksi yang benar untuk kelas tertentu dengan jumlah total prediksi untuk kelas tersebut.
  • Recall
    Precision merupakan metrik yang digunakan untuk mengukur seberapa baik model dalam memprediksi suatu kelas tertentu. Recall didefinisikan sebagai perbandingan antara jumlah hasil prediksi yang benar untuk kelas tertentu dengan jumlah total sampel pada kelas tersebut.
  • F1 score
    Nah, metrik lain yang sering digunakan adalah F1 score. Metrik ini merupakan kombinasi antara nilai precision dan recall dari suatu kelas tertentu.

Deployment

Akhirnya sampailah kita pada tahap terakhir dalam proyek ini yaitu deployment. Pada tahap ini kita akan membuat sebuah prototype sederhana untuk memprediksi risiko kredit dari seorang pelanggan menggunakan model dengan performa terbaik yang telah kita kembangkan sebelumnya.

Nah, untuk membuat prototype ini, kita akan menggunakan sebuah tool bernama streamlit. Ia merupakan salah satu open-source web app framework untuk bahasa pemrograman Python yang memungkinkan kita membuat web app yang baik dan interaktif dalam waktu yang singkat. Selain itu, ia juga kompatibel dengan berbagai library populer seperti NumPy, pandas, matplotlib, dll. Inilah yang menjadi alasan kita menggunakan tool ini untuk membuat prototype.


Rangkuman Pengolahan Big Data dengan PySpark


Pengenalan PySpark

Big data merupakan himpunan atau kumpulan data dalam skala yang sangat besar sehingga tidak mampu diolah dengan perangkat lunak konvensional seperti google spreadsheet ataupun excel. Big data umumnya memiliki tiga karakteristik utama, yaitu volume (volume), variety (varietas), dan velocity (kecepatan). Ketiganya dikenal dengan istilah 3V.

Apache Spark merupakan sebuah open-source distributed processing system yang didesain untuk memproses data dengan skala yang sangat besar. 

Distributed processing merupakan keadaan ketika beberapa komputer (processor) digunakan untuk menjalankan sebuah proses komputasi. Alih-alih memproses data berukuran besar dalam satu komputer, Apache Spark memungkinkan kita untuk menjalankan proses tersebut ke dalam beberapa komputer disebut executor atau node (bekerja secara paralel) yang saling berkomunikasi satu sama lain melalui cluster manager. Hal ini tentunya akan mempercepat proses pengolahan data yang berukuran besar sehingga sangat cocok digunakan untuk mengolah big data.

Pada proses pengolahan data, Apache Spark memanfaatkan sebuah fundamental abstraction bernama Resilient Distributed Dataset (RDD). Ia merupakan programming abstraction yang merepresentasikan kumpulan elemen data yang bersifat immutable (tidak dapat dimodifikasi), dapat dibagi ke dalam beberapa klaster komputasi, dan dieksekusi secara paralel. Hal inilah yang memungkinkan Apache Spark memproses big data secara cepat dan scalable.

Apache Spark sebenarnya ditulis menggunakan bahasa pemrograman Scala. Namun, saat ini ia dapat dijalankan pada beberapa bahasa pemrograman lain salah satunya adalah Python. Kombinasi antara Apache Spark dan Python ini melahirkan sebuah tool baru bernama PySpark. Inilah tool yang akan kita dalami pada materi kali ini.

Sebagai gabungan antara Python dan Apache Spark, PySpark mendukung berbagai fungsionalitas yang terdapat dalam Apache Spark dengan syntax yang lebih mudah digunakan. Hal ini tentunya akan mempermudah kita dalam mengolah big data nantinya.  

Untuk menginstal dan menjalankan PySpark, kita perlu menyiapkan beberapa hal terlebih dahulu seperti berikut.

  • Java Development Kit (JDK)
  • Apache Spark
  • Python virtual environment


Pyspark DataFrame

Pada PySpark, DataFrame didefinisikan sebagai sebuah data structure berbentuk tabel yang terdiri dari headerindexcolumn, & row. Konsep ini sangat mirip dengan DataFrame pada library pandas

Untuk mendukung skalabilitas dalam pengolahan data, DataFrame dalam PySpark biasanya disimpan dalam beberapa komputer. Pada prosesnya, PySpark akan membagi data ke dalam beberapa bagian yang disebut partitions. Hal ini tentunya mempermudah kita dalam mengolah data yang berukuran sangat besar. 

Untuk membaca data dan mengoperasikannya sebagai DataFrame, Anda perlu menjalankan PySpark session. Lalu Anda dapat menggunakan method read yang diikuti berbagai pengaturan untuk menentukan schema serta header dari data tersebut.  

Setelah Anda membuat PySpark DataFrame, Anda dapat melakukan berbagai operasi seperti melihat summary statistic, mengakses data dari kolom tertentu, dll. 


Data Aggregation & Join dengan PySpark


Data Aggregation

Aggregation merupakan proses pengelompokan data berdasarkan parameter tertentu. Pada prosesnya, kita perlu menentukan key atau kolom kategorikal yang digunakan untuk mengelompokkan data. Selain itu, kita juga perlu menentukan aggregation function yang digunakan untuk menghitung parameter statistik dari beberapa baris data.

Untuk membantu kita melakukan proses aggregation, PySpark telah menyediakan banyak aggregation function. Berikut beberapa di antaranya.

  • count()
    Ini merupakan function untuk menghitung jumlah baris dalam sebuah kolom.
  • countDistinct()
    Mirip seperti function sebelumnya, countDistinct() digunakan untuk menghitung baris yang terdapat dalam sebuah kolom. Hal yang membedakannya adalah function ini hanya menghitung jumlah baris dengan nilai yang unik.
  • min() dan max()
    Pastinya Anda bisa menebak kegunaan dari kedua function tersebut. Keduanya digunakan untuk mengambil nilai maksimum dan minimum dari sebuah kolom.
  • sum()
    Function berikutnya ialah sum(). Ia digunakan untuk menjumlahkan baris dari suatu kolom numerik.
  • avg()
    Selain menjumlahkan seluruh baris dalam sebuah kolom, terkadang kita juga perlu menghitung nilai rata-rata atau average dari kolom tersebut.
  • median()
    Function berikutnya yang sering kita gunakan ialah median(). Sesuai namanya, ia merupakan function yang digunakan untuk menghitung nilai median dari sebuah kolom numerik.

Setelah memahami beberapa aggregation function yang dapat digunakan, kini saatnya kita mengelompokkan berdasarkan kolom kategorikal tertentu dan menghitung parameter statistik untuk kolom tersebut. Untuk melakukannya, kita dapat menggunakan method groupBy(). Method tersebut menerima input berupa nama kolom yang digunakan sebagai key. Selanjutnya, kita perlu menentukan aggregation function yang ingin digunakan. 


Join

Join atau dikenal juga dengan merge merupakan salah satu teknik penggabungan data yang paling sering digunakan. Beberapa dari Anda mungkin sudah familier dengan teknik ini. Ia merupakan teknik untuk menggabungkan dua tabel data dengan memanfaatkan relationship yang terbentuk oleh primary key (PK) dan foreign key (FK).

Primary key merupakan sebuah kolom dengan nilai unik yang merepresentasikan suatu data dalam sebuah tabel. Di lain sisi, foreign key merupakan kolom yang berisi primary key dari tabel lain. Ia digunakan untuk mereferensikan data dari tabel lain hingga terbentuk sebuah relationship antar tabel.

Pada PySpark, terdapat beberapa jenis join antara lain seperti berikut.

  • Inner joins: proses join yang hanya mengambil nilai yang bersesuaian di kedua tabel.
  • Outer joins: proses join yang akan mengambil semua nilai dari kedua tabel.
  • Left outer joins: proses join yang akan mengambil semua nilai dari tabel kiri beserta nilai yang bersesuaian dari tabel kanan.
  • Right outer joins: proses join yang akan mengambil semua nilai dari tabel kanan beserta nilai yang bersesuaian dari tabel kiri.
  • Left semi joins: proses join yang akan mengambil seluruh nilai dari tabel kiri beserta nilai yang bersesuaian dan mengabaikan semua kolom dari tabel kanan.
  • Left anti joins: proses join yang hanya akan mengambil nilai dari tabel kiri yang tidak bersesuaian dengan tabel kanan.


Data Cleansing dengan PySpark


Assessing Data

Sebelum melakukan pembersihan data, kita perlu menilai kualitas dari data tersebut. Hal ini dilakukan untuk mengidentifikasi masalah yang terdapat dalam data.

Tahap pertama yang bisa Anda lakukan untuk menilai kualitas dari suatu data adalah dengan memeriksa tipe data dan summary statistics. Hal ini bisa Anda lakukan dengan memanfaatkan method printSchema() dan summary().

Untuk memeriksa data yang mengandung missing value, Anda dapat memanfaatkan method where() (memfilter data berdasarkan suatu kondisi) yang diikuti oleh function isnull() (mendeteksi null) atau isnan() (mendeteksi NaN). 

Masalah selanjutnya yang harus kita periksa ialah duplikasi data. Untuk melakukan hal ini, kita bisa menggunakan method distinct() dan count() untuk menghitung jumlah data yang unik dan menguranginya dengan jumlah data keseluruhan. 


Data Cleansing

Setelah memahami cara mengidentifikasi masalah dalam sebuah data, kita perlu membahas cara membersihkan masalah tersebut. Masalah pertama yang akan kita bahas ialah terkait kesalahan tipe data. Untuk mengubah tipe data dalam PySpark, kita bisa menggunakan method cast().

Selain kesalahan tipe data, masalah lain yang sering kita jumpai adalah missing value. Seperti yang telah kita bahas pada materi sebelumnya, terdapat dua metode yang paling sering digunakan untuk menangani missing value yaitu droppingimputation, dan interpolation.

  • Dropping
    Pada metode ini, kita akan menghapus seluruh baris atau kolom yang memiliki missing value. Untuk melakukannya, kita bisa menggunakan method drop() yang telah disediakan PySpark.

    Ketika menggunakan method drop(), kita bisa mengatur bagaimana proses dropping ini dilakukan. Sebagai contoh, kita bisa menggunakan how=”any” untuk menghapus seluruh baris data yang mengandung missing value (walaupun hanya 1). Selain itu, kita juga bisa mengatur jumlah minimum missing value yang dimiliki sebuah baris untuk di-drop.

  • Imputation
    Metode ini bekerja dengan cara mengisi (fill) missing value dengan nilai tertentu. Hal ini tentunya akan mencegah hilangnya informasi akibat missing value. PySpark telah menyediakan method fill() yang bisa digunakan untuk mengisi missing value dengan nilai tertentu.

  • Interpolation
    Interpolasi merupakan salah satu pendekatan numerik yang digunakan untuk menghitung titik data baru berdasarkan range data yang sudah ada. Perhitungan ini menggunakan sebuah persamaan garis linear ataupun polynomial. Perhitungan tersebut membuat metode ini sangat cocok digunakan untuk menangani missing value pada data time series.

    Sayangnya, untuk menerapkan metode ini dengan PySpark relatif sulit. Namun, jangan khawatir, kita bisa menjalankan pandas di atas PySpark tanpa menghilangkan berbagai manfaat yang kita peroleh dari PySpark.

Masalah lain yang biasanya kita jumpai adalah invalid value. Untuk mengatasi invalid value, kita membuangnya (drop) atau mengganti data tersebut dengan nilai yang benar. 

Masalah terakhir yang umum dijumpai adalah duplikasi. Untuk mengatasi duplikasi dalam sebuah data, kita bisa memanfaatkan method dropDuplicates()


Preprocessing Data dengan PySpark

Scaling

Secara umum terdapat dua metode scaling yang paling sering digunakan yaitu standard scaling dan min-max scaling.

  • Standard scaling
    Pada metode ini, kita akan mengubah skala pada data numerik sehingga memiliki nilai rata-rata 0 dan standar deviasi 1. PySpark telah menyediakan StandardScaler() yang dapat digunakan untuk melakukan standard scaling.

  • Min-max scaling
    Metode ini akan mengubah skala pada data numerik sehingga memiliki rentang dari 0 hingga 1. Untuk menerapkan metode ini, kita bisa menggunakan MinMaxScaler() yang telah disediakan oleh PySpark. 


Label Encoding

Label encoder merupakan proses untuk membuat sebuah indeks dalam bentuk bilangan bulat yang mewakili kategori tertentu dalam sebuah feature kategorik. Proses ini perlu dilakukan karena model machine learning hanya mampu memproses data dalam bentuk numerik.

Untuk membantu kita dalam melakukan label encoding, PySpark telah menyediakan StringIndexer(). Jika ingin mengembalikan lagi data tersebut, Anda dapat menggunakan IndexToString().

One-Hot Encoding

One-hot encoding merupakan metode lain yang digunakan untuk melakukan preprocessing terhadap data kategorikal. Pada metode ini, kita akan merepresentasikan setiap kategori kedalam nilai boolean yaitu 1 dan 0.

PySpark telah menyediakan OneHotEncoder() untuk mempermudah kita dalam menerapkan one-hot encoding. Untuk menggunakannya, kita perlu melakukan proses label encoding terlebih dahulu.

PCA

Pada proyek sebelumnya, kita juga menerapkan metode PCA untuk mengurangi jumlah feature atau kolom yang digunakan untuk melatih model serta menyelesaikan masalah multikolinearitas yang terdapat dalam sebuah data. Nah, untuk menerapkan PCA dalam PySpark, kita bisa menggunakan PCA().


Latihan Membuat Data Pipeline dengan PySpark


Data Pipeline

Data pipeline merupakan sekumpulan proses yang membantu kita dalam memindahkan data dari satu atau beberapa sumber (data source) ke dalam target database atau sistem analisis (destination). Target database ini selanjutnya dapat dihubungkan dengan sebuah dashboard ataupun sistem machine learning.

Secara umum, terdapat tiga proses utama dalam sebuah data pipeline yaitu extracttransform, dan load.

  • Extract
    Proses untuk mengambil data dari data source bisa dalam bentuk SQL atau NoSQL database atau bahkan transactional systems. Tahap ini akan menghasilkan sebuah data mentah yang perlu diolah terlebih dahulu.
  • Transform
    Proses untuk mengubah format atau struktur data sehingga sesuai dengan kebutuhan target database maupun sistem analisis. Pada prosesnya, kita perlu melakukan data aggregation, join, dll.
  • Load
    Proses untuk menyimpan data yang telah ditransformasi ke dalam sistem yang menjadi target kita. Hal ini bisa berupa data base, sistem analisis, ataupun sistem machine learning.

Rangkuman Implementasi Proyek Data Science dalam Environment Cloud


Pengenalan Cloud Computing

Cloud computing atau komputasi awan sendiri adalah model penyediaan sumber daya komputasi seperti perangkat keras, penyimpanan, basis data, jaringan, dan perangkat lunak yang dapat diakses secara remote. Penyediaan sumber daya tersebut akan disesuaikan dengan permintaan (on-demand) dan dapat dihentikan secara cepat dan mudah.

Model layanan cloud computing didasarkan pada konsep berbagi sumber daya komputasi, perangkat lunak, dan informasi yang dikelola oleh sebuah perusahaan yang disebut cloud provider. Perusahaan atau individu yang menggunakan sumber daya tersebut membayar ke cloud provider untuk mengakses sekumpulan sumber daya virtual, termasuk layanan komputasi, penyimpanan, dan jaringan yang terletak di suatu lokasi yang dimiliki dan dikelola oleh cloud provider.

Salah satu dari banyak keuntungan cloud computing adalah Anda hanya membayar apa yang Anda gunakan yang dikenal dengan istilah pay as you go. Hal inilah yang memungkinkan perusahaan untuk lebih fleksibel dalam menambah atau mengurangi jumlah sumber daya komputasi dengan cepat dan efisien tanpa beban harus membeli dan memelihara server fisik mereka sendiri.

Secara umum, terdapat tiga jenis model layanan cloud yang dapat Anda pilih, yakni Infrastructure as a Service (IaaS), Platform as a Service (PaaS), dan Software as a Service (SaaS).

  • Software as a Service (SaaS)
    SaaS merupakan layanan yang disediakan dalam bentuk software atau perangkat lunak yang dijalankan dan diatur oleh cloud provider. Ia memberikan kemudahan kepada pengguna untuk dapat memanfaatkan sumber daya perangkat lunak tanpa perlu memikirkan infrastruktur yang ada pada cloud seperti server, jaringan, sistem operasi, dll.
  • Platform as a Service (PaaS)
    Pada jenis layanan ini, cloud provider menyediakan layanan berupa lingkungan untuk testing dan deployment aplikasi. Hal ini memungkinkan kita untuk mengembangkan aplikasi ke lingkungan cloud tanpa perlu khawatir akan konfigurasi infrastruktur. Selain itu, layanan PaaS bahkan bisa melakukan mengatur kebutuhan sumber daya yang sesuai untuk aplikasi Anda. Bahkan tidak jarang layanan PaaS telah dilengkapi dengan fitur scaling to zero (penyesuaian kapasitas sampai tidak ada instance yang berjalan sama sekali) sehingga Anda tidak perlu membayar apapun ketika tidak ada permintaan traffic ke aplikasi Anda.
  • Infrastructure as a Service (IaaS)
    IaaS merupakan layanan yang paling fleksibel bagi konsumen dalam membangun dan mengatur infrastrukturnya sendiri. Pada jenis layanan ini, pengguna dapat dengan bebas menyewa infrastruktur yang dibutuhkan, seperti server, jaringan, hingga storage. Di sisi lain, cloud provider-lah yang bertanggung jawab dalam manajemen hardware dan perawatannya.


Pengenalan Google Cloud Platform

Google Cloud Platform (GCP) merupakan sebuah platform cloud computing yang disediakan oleh Google. Sebagai salah satu perusahaan teknologi yang besar, Google menginvestasikan miliaran dolar selama bertahun-tahun untuk mengembangkan infrastruktur (jaringan) dan layanan dalam GCP. Jaringan Google tersebar dan saling terhubung di seluruh dunia melalui kabel fiber sepanjang 100.000 KM, 8 kabel bawah laut, lebih dari 100 Edge Point of Presence, dan lebih dari 7500 Edge Node.

Hingga saat ini, GCP telah menyediakan lebih dari 100 produk layanan yang dapat digunakan secara publik. Seluruh layanan tersebut dapat dikelompokkan ke dalam beberapa kategori, seperti compute, storage, AI/ML, dll. Pada beberapa materi ke depan, kita memanfaatkan beberapa layanan tersebut untuk menjalankan proyek data science.


Pengenalan Google Compute Engine

GCE merupakan salah satu layanan Infrastructure as a Service (IaaS) yang ditawarkan oleh GCP. Layanan ini memungkinkan kita Google Compute Engine memungkinkan Anda untuk membuat dan menjalankan virtual machine (VM) di infrastruktur Google.

VM merupakan sebuah lingkungan virtual yang berfungsi sebagai sistem komputer virtual dengan CPU, memori, antarmuka jaringan, dan penyimpanannya sendiri yang dibuat di atas sistem perangkat keras fisik (disebut host). VM dibuat dan dijalankan menggunakan perangkat lunak bernama hypervisor. Hypervisor inilah yang memungkinkan satu mesin host untuk menjalankan beberapa VM dengan berbagi sumber dayanya secara virtual.

Ketika membuat sebuah VM menggunakan GCE, Anda akan diberikan kebebasan dalam menentukan konfigurasi infrastruktur yang akan digunakan. Hal ini tentunya akan memberikan kita kontrol penuh terhadap infrastruktur yang digunakan. Saat membuat VM, terdapat dua hal terpenting yang perlu kita atur, yaitu region dan zone; serta machine configuration.

  • Region dan Zone
    Ketika Anda membuat sebuah VM menggunakan GCE, hal pertama yang harus dilakukan ialah menentukan region dan zone. Region adalah area geografis independen yang terdiri dari beberapa Zone (area deployment untuk sumber daya GCP). Anda sangat disarankan untuk memilih region dan zone yang memiliki jarak paling dekat dengan target user Anda.

  • Machine configuration
    Hal berikutnya yang harus kita atur ialah machine configuration. Pada bagian inilah kita menentukan resource yang akan digunakan oleh VM seperti jumlah vCPU (virtual CPU) atau memori. Kita mengaturnya dengan menggunakan predefined machine type (spesifikasi mesin yang telah disediakan) atau dengan membuat custom machine type (spesifikasi mesin yang bisa diatur sendiri).


Pengenalan Cloud Run

Cloud run merupakan salah satu layanan komputasi GCP yang memungkinakn kita untuk menajalankan aplikasi berbasis container. Ia merupakan layanan yang dikelola secara penuh oleh GCP sehingga kita sebagai pengguna tidak perlu memikirkan terkait infrastrukturnya. Layanan ini juga memiliki fitur scales up dan down secara otomatis. Hal ini tentunya akan meningkatkan skalabilitas dari aplikasi yang kita jalankan. 

Seperti halnya layanan GCP yang lain, ketika menggunakan Cloud Run, kita hanya perlu membayar sumber daya komputasi yang digunakan. Hal ini tentu akan membantu kita dalam menghemat biaya operasional dari sebuah aplikasi.


Container

By definition, container adalah sebuah mekanisme pengemasan aplikasi yang mengabstraksi lingkungan tempat aplikasi tersebut dijalankan. Sederhananya, kita bisa menggunakan container untuk mengemas kode beserta semua dependensinya sehingga aplikasi Anda bisa berjalan dengan lancar. Hal ini tentunya akan membantu kita dalam melakukan deployment dengan cepat dan konsisten di beberapa lingkungan komputasi terlepas dari sistem operasi yang digunakan.

Container sering kali dibandingkan dengan virtual machines (VM) karena keduanya merupakan mekanisme virtualisasi. Namun, container memiliki ukuran yang relatif lebih kecil karena tidak menyertakan sistem operasi di dalam paketnya seperti pada VM. Selain itu, container dinilai lebih fleksibel dan mudah digunakan dan efisien dari segi penggunaan resource. Hal ini tentunya akan membantu kita dalam menghemat biaya operasional.

Selain memiliki performa yang lebih tinggi dan ukuran yang kecil, container memiliki beberapa kelebihan lain yang bisa menjadi pertimbangan dalam pengembangan aplikasi, antara lain:

  • Lingkungan yang konsisten
    Container memungkinkan developer untuk menentukan dependencies seperti versi bahasa atau library yang dibutuhkan untuk menjalankan sebuah aplikasi. Hal ini tentunya dapat membantu kita untuk memastikan aplikasi dijalankan pada environment yang konsisten.
  • Berjalan di mana saja
    Container memungkinkan kita untuk menjalankan aplikasi di mana saja (selama docker runtime available) tanpa perlu khawatir masalah dependency. Hal ini tentunya membantu kita terhindar dari masalah “but it works on my machine”.
  • Terisolasi
    Container memungkinkan kita membuat sebuah environment yang sepenuhnya terisolasi dari environment lain. Hal ini bisa terjadi karena container memvirtualisasikan CPU, memori, penyimpanan, dan jaringan pada level OS. Apabila terjadi masalah pada salah satu container, ia tidak akan mempengaruhi container atau environment yang lain.


Pengenalan Layanan Pengolahan Data dalam GCP

Umumnya dalam sebuah proses pengolahan data, kita membutuhkan cukup banyak tools. Tools tersebut dapat kita kelompokkan ke dalam tiga kelompok besar yaitu penyimpanan data, pemrosesan data, dan visualisasi data.

  • Penyimpanan data
    Dalam proses pengolahan data tentunya kita membutuhkan wadah untuk menyimpan data. GCP telah menyediakan banyak layanan yang dapat kita gunakan untuk menyimpan data, seperti cloud storage, cloud SQL, Firestore, BigQuery, dll.
  • Pemrosesan data
    Selain penyimpanan data, kita juga membutuhkan tool untuk pemrosesan data. Sebagai salah satu cloud provider terbesar, GCP juga telah menyediakan berbagai tools yang dapat digunakan untuk pemrosesan data salah satunya adalah DataFlow.
  • Visualisasi data
    Last but not least, dalam proses pengolahan data tentunya kita juga membutuhkan tool visualisasi data. Tools inilah yang kita gunakan untuk mengomunikasikan insight dari data yang kita olah. GCP juga telah menyediakan sebuah tool yang bisa kita gunakan untuk membuat visualisasi data bernama Looker studio.


Cloud Storage

Cloud Storage adalah layanan penyimpanan objek (object storage) milik GCP yang memungkinkan Anda untuk menyimpan dan mengambil data di seluruh dunia kapan saja. Object storage adalah arsitektur penyimpanan data untuk data tidak terstruktur. Object storage memperlakukan data sebagai objek yang utuh. Setiap objek yang disimpan terdiri atas data itu sendiri, metadata, dan pengidentifikasi (identifier) unik alias key.  

Cloud Storage juga merupakan layanan yang scalable dan dikelola sepenuhnya oleh Google. Itu berarti Anda tidak perlu mengurusi soal kapasitas dan pemeliharaan. Tinggal taruh saja objek Anda ke sana dan Cloud Storage akan menyimpannya dengan daya tahan (durability) dan ketersediaan (availability) yang tinggi.

Hal lain yang perlu Anda ingat adalah file yang disimpan di Cloud Storage dikelompokkan ke dalam bucket. Saat membuat bucket, Anda perlu menentukan beberapa konfigurasi, seperti nama yang unik secara global, storage class (kelas penyimpanan), serta lokasi geografis tempat bucket dan isinya tersimpan.


Cloud SQL

Cloud SQL adalah layanan untuk relational database yang dikelola sepenuhnya oleh GCP. Layanan ini memungkinkan kita menjalankan RDBMS (Relational Database Management System) tanpa perlu memikirkan terkait infrastruktur pendukungnya. 

Sederhananya, Cloud SQL menawarkan layanan database untuk membantu aplikasi Anda menjaga data agar tetap konsisten dan akurat. Ia menyediakan beberapa opsi RDBMS, seperti MySQL, PostgreSQL, dan Microsoft SQL Server yang bisa Anda pilih sesuai kebutuhan. 

Berikut beberapa manfaat yang akan Anda peroleh ketika menggunakan layanan Cloud SQL.

  • Pertama, Cloud SQL menyediakan beberapa layanan replika, seperti read replicafailover, dan external replica. Artinya, Cloud SQL dapat mereplikasi data di antara beberapa zone dengan failover otomatis. 
  • Cloud SQL juga membantu Anda mencadangkan data dengan pencadangan sesuai permintaan (on-demand backup) atau terjadwal (scheduled backup).
  • Cloud SQL juga dapat melakukan vertical scaling (penyesuaian kapasitas secara vertikal) dengan mengubah machine type
  • Cloud SQL instance menyertakan firewall jaringan untuk memastikan keamanan data. Selain itu, data pelanggan juga dienkripsi saat berada di jaringan internal Google serta saat disimpan di tabel database, temporary file, dan backup.
  • Manfaat lain dari instance Cloud SQL adalah dapat diakses oleh layanan GCP lain dan bahkan layanan eksternal. Anda dapat mengotorisasi Compute Engine instance untuk mengakses Cloud SQL instance menggunakan external IP address. Anda juga bisa mengonfigurasi Cloud SQL instance agar berada di zone yang sama dengan mesin virtual Anda.
  • Cloud SQL juga mendukung aplikasi dan tools, seperti SQL WorkBench, Toad, dan aplikasi eksternal lainnya menggunakan standard MySQL drivers. 


BigQuery

BigQuery adalah layanan data warehouse (gudang data) yang dikelola sepenuhnya oleh GCP. Sebagai sebuah data warehouse, BigQuery dirancang untuk membuat proses analisis data menjadi lebih produktif karena infrastruktur sepenuhnya dikelola oleh Google. 

Anda dapat memuat data dari Cloud Storage atau layanan penyimpanan data lainnya ke dalam BigQuery hingga 100.000 baris per detik. Setelah data berada di sana, Anda dapat menjalankan kueri SQL yang super cepat untuk memproses terabyte data hanya dalam hitungan detik.

Mungkin sebagian dari Anda bertanya, “bagaimana cara BigQuery melakukan hal tersebut?”. Jawabannya ada pada arsitekturnya. Ia memisahkan antara storage (penyimpanan) dan compute (komputasi). Hal ini memungkinkan BigQuery untuk scale (menyesuaikan kapasitas) untuk storage dan compute secara terpisah.  

Saat Anda menjalankan query pada BigQuery, mesin query akan mendistribusikan pekerjaan secara paralel ke beberapa worker, yakni mesin yang memindai tabel yang relevan di BigQuery storage, memproses query, lalu mengumpulkan hasilnya. BigQuery mengeksekusi query sepenuhnya di memory menggunakan petabit network (jaringan berkecepatan petabit) untuk memastikan data berpindah dengan sangat cepat dari/ke worker.

Selain itu, BigQuery juga memiliki fitur bernama BigQuery ML yang memungkinkan kita membuat dan menjalankan model machine learning sintak SQL pada BigQuery. Bukan hanya itu saja, ia juga memungkinkan kita membagi sebuah tabel menjadi beberapa partisi berdasarkan suatu kolom tertentu (biasanya berdasarkan kolom tanggal seperti creation_date). Hal ini tentunya akan mempermudah kita dalam mengolah dan menjalankan query secara lebih efisien serta menghemat biaya ketika menjalankannya.


DataFlow

Layanan berikutnya yang akan kita bahas ialah DataFlow. Ia merupakan layanan data pipeline (melakukan proses extracttransform, dan load) yang dikelola sepenuhnya oleh GCP. Layanan ini sangat cocok digunakan untuk pemrosesan data baik secara stream (data diproses secara real-time) maupun batch (data diproses secara periodik).

Layanan ini memiliki fitur auto scaling yang mengoptimalkan penggunaan sumber daya dan meminimalkan pipeline latency (waktu pemrosesan dalam sebuah pipeline). DataFlow menyediakan pre-build pipeline (Dataflow templates) yang mempercepat kita dalam membuat data pipeline. Selain itu, layanan ini juga menyediakan costume pipeline templates yang dapat diintegrasikan ke BigQuery atau Vertex AI Workbench untuk mempermudah kita dalam membuat data pipeline yang sesuai kebutuhan

Dataproc

Dataproc merupakan salah satu layanan yang dikelola sepenuhnya oleh GCP untuk menjalankan Apache Hadoop, Apache Spark, dan berbagai tool open source lainnya untuk pengolahan big data yang scalable. Ini bisa menjadi alternatif bagi Anda yang ingin menggunakan tool pengolahan big data seperti Apache Spark tanpa perlu memikirkan infrastruktur untuk menjalankannya. 

Layanan ini memiliki beberapa keunggulan seperti berikut.

  • Ketika menggunakan layanan ini, kita bisa melakukan upscaling dan downscaling secara mudah sehingga bisa menghemat penggunaan resource dan biaya. 
  • Dengan menggunakan layanan ini, kita bisa membuat Spark cluster dengan sangat cepat.
  • Dapat dengan mudah diintegrasikan dengan berbagai layanan lain dalam GCP, seperti Cloud Storage, BigQuery, dll.      

Datastream

Datastream juga merupakan salah satu layanan yang dikelola sepenuhnya oleh GCP untuk melakukan proses replikasi data dari source database (biasanya berbentuk operational database) ke dalam data warehouse seperti BigQuery. 

Pada proses replikasinya, layanan ini akan menggunakan teknik change data capture (CDC) yang memungkinkan kita untuk mengidentifikasi dan menangkap setiap perubahan dalam source database. Sederhana, teknik ini memungkinkan kita untuk menyalin perubahan dalam source database dan memasukkannya ke dalam data warehouse. Jadi, kita tidak perlu lagi melakukan rewrite terhadap data yang terdapat dalam data warehouse.

Ketika menggunakan layanan ini, kita tidak perlu memikirkan konfigurasi infrastruktur karena telah dikelola sepenuhnya oleh GCP. Layanan ini sangat mudah diintegrasikan dengan layanan data warehouse milik GCP yaitu BigQuery. Hal ini tentunya akan membantu kita dalam menjalankan proses replikasi data secara seamless. 


Looker Studio

Layanan terakhir yang akan kita bahas ialah Looker Studio. Ia merupakan BI tool yang disediakan oleh GCP untuk membantu kita dalam menganalisis data dan membuat visualisasi data. Selain itu, kita juga bisa membuat real time business dashboard menggunakan layanan ini.

Salah satu keunggulan Looker Studio adalah ia dapat diintegrasikan dengan berbagai layanan GCP lainnya seperti BigQuery, Cloud SQL, dll. Selain itu, looker memiliki UI yang intuitif dan mudah digunakan. Hal ini tentunya akan mempermudah kita dalam menganalisis data serta menyampaikan insight dari data melalui sebuah dashboard.


Pengenalan Vertex AI Workbench

Vertex AI merupakan salah satu Platform as a Service (PaaS) yang disediakan oleh GCP. Platform ini memungkinkan kita untuk menggunakan beberapa layanan GCP yang berhubungan dengan AI dan machine learning. Layanan ini telah mencakup seluruh tahapan dalam pengolahan dan pengoperasian sistem machine learning.

Vertex AI pertama kali diperkenalkan dalam sebuah acara Google I/O 2021. Ia menggabungkan dua buah layanan, yaitu AutoML dan AI Platform dalam sebuah unified API, client library, dan user interface. Sebagai perpaduan dari kedua layanan tersebut, Vertex AI memungkinkan kita untuk menggunakan AutoML maupun custom model dalam proses training. Selain itu, Vertex AI juga menyediakan layanan lain untuk menjalankan seluruh machine learning workflow dalam sebuah platform.

Seluruh layanan (sering juga disebut komponen) yang terdapat dalam Vertex AI dapat dikategorikan ke dalam empat kategori berikut.

  • Tools
    • Dashboard
    • Workbench
    • Pipelines
  • Generative AI Studio
    • Language
    • Vision
    • Speech
  • Data
    • Features Store
    • Datasets
    • Labeling tasks
  • Model development
    • Training
    • Experiments
    • Metadata
  • Deploy and use
    • Endpoints
    • Model registry 
    • Batch predictions
    • Matching engine


Vertex AI Workbench

Vertex AI Workbench merupakan salah satu layanan dalam Vertex AI yang memungkinkan untuk membuat dan menjalankan Jupyter Notebook development environment pada infrastruktur GCP. Pada prosesnya layanan ini akan membuat sebuah VM menggunakan GCE dan menyiapkan seluruh environment yang dibutuhkan untuk menjalankan Jupyter Notebook. Ini artinya kita tidak perlu repot-repot menyiapkan environment untuk menjalankan Jupyter Notebook karena GCP telah melakukannya untuk kita.

Keunggulan utama dari layanan ini adalah mudah untuk diintegrasikan dengan berbagai layanan dalam GCP seperti Cloud Storage, BigQuery, DataFlow, dll. Hal ini tentunya akan mempermudah kita dalam mengolah data mengembangkan solusi untuk menjawab tantangan bisnis. Selain itu, layanan ini juga memiliki banyak manfaat lain seperti berikut.

  • Memungkinkan kita mengolah data yang berukuran besar secara cepat dan efisien dengan memanfaatkan berbagai layanan dalam GCP.
  • Memberikan kita akses terhadap sumber daya komputasi yang tak terbatas termasuk GPU. Hal ini tentunya akan mempermudah kita melakukan distributed training terhadap model yang berukuran sangat besar.
  • Layanan ini juga telah menginstal seluruh packages dan library yang dibutuhkan untuk mengolah data, membuat model machine learning, dan deep learning.
  • Dapat diintegrasikan dengan version control repository seperti GitHub.

Bagaimana, sangat luar biasa, bukan? Untuk menyesuaikan kebutuhan kita, Vertex AI Workbench menyediakan tiga jenis tipe instance seperti berikut.

  • Vertex AI Workbench Instances.
  • Managed notebooks.
  • User-managed notebooks.

Tidak ada komentar: