Belajar dari Data

January 2020 | Dios Kurniawan

**NOTE: This article is part of my upcoming book and is still written in Bahasa Indonesia. I will provide the English version as soon as possible **

Sadarkah kita bahwa di masa kini, setiap langkah manusia modern dalam kesehariannya selalu meninggalkan digital footprint (jejak digital) di mana-mana? Di dunia yang serba digital saat ini, banyak aspek kehidupan kita dalam aktivitas sehari-hari yang telah direkam ke dalam sistem komputer. Bank menyimpan data transaksi perbankan Anda, toko-toko online menyimpan sejarah belanja Anda, jaringan telepon selular mencatat kemana saja Anda pergi, media sosial mencatat interaksi Anda dengan teman Anda, apa yang Anda bicarakan dan Anda sukai, layanan music streaming mencatat jenis lagu selera Anda, ojek online mencatat perjalanan dan pesanan makanan Anda, dan seterusnya. Suka tidak suka, data tentang kehidupan Anda berceceran di mana-mana.

Salah satu yang menjadi pencetus begitu banyaknya data yang dihasilkan manusia adalah ponsel pintar. Dengan semakin luasnya penggunaan ponsel pintar yang selalu tersambung ke internet, semakin tinggi pula intensitas manusia dalam menghasilkan data. Sebuah laporan riset yang dikeluarkan oleh DOMO[2] menyebutkan bahwa di tahun 2020 rata-rata setiap manusia di bumi menghasilkan data sebesar 1,7 MB per detik. Kelihatannya kecil, tapi jangan lupa, ada 86,400 detik dalam sehari dan ada tujuh milyar lebih manusia di bumi!

Tidak hanya dihasilkan oleh aktivitas manusia, data juga dihasilkan oleh mesin-mesin, sensor-sensor, dan peralatan-peralatan elektronik lainnya. MGD (machine-generated data, data yang dihasilkan oleh mesin) memiliki potensi manfaat yang tinggi karena tidak mendapat pengaruh campur tangan manusia (emosi, subyektivitas, dan sebagainya). MGD yang dihasilkan di dunia cenderung semakin besar dari hari ke hari. Menurut hasil riset yang dilakukan IDC[3], pada tahun 2025, 30% data yang ada di dunia akan dihasilkan oleh mesin, bukan oleh manusia.

Singkatnya, dunia kita akan dibanjiri oleh data yang tersimpan di beragam macam sistem komputer. Itu sebabnya Big Data, yaitu data dalam skala yang amat besar, sudah menjadi istilah yang sering disebut sejak awal dekade ini.

Data yang banyak ini harus kita apakan? Meskipun kita memiliki sangat banyak data, semua tidak akan bermanfaat kecuali kita bisa menggali nilai-nilai yang terkandung di dalamnya. Data yang tidak dimanfaatkan hanya akan menumpuk di dalam sistem komputer, menghabiskan media penyimpan tanpa guna. Di sinilah perlunya ilmu Data Science untuk membantu mendapatkan manfaat dari data.

Dalam bahasa yang paling sederhana, Data Science adalah ilmu multidisipliner yang mempelajari tentang upaya mendapatkan pemahaman yang lebih dari berbagai macam data. Tujuannya agar didapatkan kesimpulan dari informasi yang terkandung di dalam data, sehingga orang dapat mengambil keputusan – dan tindakan – yang tepat.

Ada pula yang menyebut ilmu ini dengan istilah Data Analytics, di mana batas pemisahnya memang tidak terdefinisi dengan jelas. Adapun demikian, di dalam buku ini kita menganggap Data Science memiliki lingkup yang lebih luas dari Data Analytics. Data Analytics lebih difokuskan pada memecahkan permasalahan atau menjawab pertanyaan tertentu yang spesifik. Data Analytics berusaha memberikan kesimpulan dari apa yang sudah diketahui sebelumnya. Berbeda dengan Data Science yang berupaya menghasilkan pemahaman lebih luas, yaitu menemukan hal-hal penting apa saja yang terkandung di dalam data, dan hal-hal yang potensial bisa dijadikan pertanyaan lebih lanjut.

Mungkin Anda bertanya, apa manfaat Data Science sebenarnya dalam kehidupan kita sehari-hari? Jawabannya bisa beragam. Data Science telah umum dipergunakan secara sistematis oleh dunia industri khususnya perusahaan besar untuk berbagai kepentingan misalnya untuk kegiatan pemasaran digital, merancang produk baru, atau meningkatkan kualitas layanan kepada pelanggan. Data Science juga banyak dipergunakan oleh banyak organisasi di bidang kesehatan, bidang ilmiah dan bidang penyusunan kebijakan publik. Adapun demikian, motivasi utama Data Science lebih sering adalah untuk monetisasi (mendapatkan keuntungan finansial), karena informasi yang bernilai tinggi dapat menghasilkan banyak uang. Data bisa dieksploitasi untuk menghasilkan keuntungan bisnis, dan bahkan sering menjadi produk bisnis itu sendiri – ada banyak perusahaan yang penghasilan terbesarnya justru dari menjual data.

Apakah hanya organisasi atau perusahaan besar saja yang bisa mempraktekkan Data Science? Tentu tidak. Usaha kecil dan menengah pun bisa jadi memiliki cukup banyak data yang berpotensi nilai tinggi. Transaksi penjualan toko, penjualan obat di apotik, atau penjualan restoran adalah contoh-contoh data yang meskipun tidak termasuk Big Data namun tetap bisa sangat berguna untuk upaya peningkatan usaha.  

Di masa kini telah tersedia banyak pilihan perangkat lunak yang telah dikembangkan untuk membantu pekerjaan mereka yang bergelut di bidang Data Science. Kita dapat memilih apakah hendak mempergunakan perangkat lunak komersial (yang berbayar) atau perangkat lunak open-source (sumber terbuka), dengan kelebihan dan kekurangan masing-masing.

Dengan relatif murahnya perangkat keras dan perangkat lunak serta begitu banyaknya materi belajar di internet, saat ini Data Science bukanlah ilmu yang eksklusif lagi dan bisa diakses oleh orang kebanyakan. Pendeknya, tanpa memperhatikan latar belakang pendidikan, siapapun yang memiliki laptop dan kemauan untuk belajar yang tinggi, sekarang bisa mencoba algoritma Data Science canggih tanpa kesulitan berarti. Dengan upaya yang lebih serius, setiap orang bisa menerapkan model-model praktis untuk memecahkan problematika bisnis maupun ilmiah, tanpa perlu gelar di bidang matematika atau ilmu komputer.

Adapun demikian tetap diperlukan orang-orang profesional yang memang fokus di bidang Data Science. Data Scientist adalah profesi bagi mereka yang memiliki latar belakang pendidikan matematika, statistik atau ilmu komputer, memiliki pengetahuan mendalam tentang pemrograman (umumnya dengan Python, R, Java atau Scala), serta memiliki pemahaman mendalam akan bidang industri yang digeluti (disebut juga domain expertise). Perlu pengalaman bertahun-tahun sebelum seseorang bisa disebut sebagai Data Scientist. Tidak jarang Data Scientist profesional adalah mereka yang sudah mengenyam jenjang pendidikan master atau doktor.

Data Scientist memang profesi yang relatif masih muda usianya (sepuluh tahun lalu pun orang masih belum banyak mengenal profesi ini), namun saat ini sudah menjadi suatu peran yang sangat dibutuhkan dan berbayaran tinggi. Menurut laporan LinkedIn[4], Data Science merupakan keahlian yang memiliki masa depan paling menjanjikan. Dunia industri bersedia membayar banyak untuk mendapatkan Data Scientist yang berpengalaman untuk memecahkan masalah big data mereka yang semakin hari semakin kompleks. Data Science adalah pilihan karir yang menarik.

Meniru Cara Belajar Manusia

Manusia secara alamiah mempergunakan panca indera yaitu mata, telinga, hidung, lidah dan saraf kulit untuk menangkap hal-hal yang ada di sekitarnya dan kemudian “data mentah” ini dikirimkan ke otak untuk diterjemahkan menjadi konsep-konsep yang sudah dikenal misalnya barang, orang, udara dingin, bau harum, rasa sedap makanan, dan sebagainya. Dengan teknologi, cara kerja manusia inilah yang dalam beberapa hal ingin dicoba ditiru agar bisa diterapkan dalam komputer untuk memudahkan pekerjaan manusia.

Machine learning adalah ilmu yang mempelajari tentang algoritma komputer yang bisa mengenali pola-pola di dalam data, dengan tujuan untuk mengubah beragam macam data menjadi suatu tindakan yang nyata dengan sesedikit mungkin campur tangan manusia. Dengan Machine Learning, kita dapat menciptakan mesin (komputer) yang “belajar” dari data yang ada, selanjutnya dia bisa membuat keputusan secara mandiri tanpa perlu diprogram lagi. Secara umum Machine Learning berada di bawah payung Artificial Intelligence / AI, (kecerdasan buatan).

Walaupun teknologi kecerdasan buatan terus berkembang pesat, mesin yang benar-benar bisa belajar dan “lebih cerdas” dari manusia masih jauh dari kenyataan. Sebenarnya mesin hanya mencari pola dari sejumlah data yang diberikan kepadanya, kemudian mengubah program di dalam dirinya agar mengikuti pola yang telah ditemukan. Bila pola-polanya terkumpul cukup banyak, maka program akan bisa membuat prediksi matematis terhadap apa yang akan datang. Jadi, mesin masih sebatas melakukan pattern matching (pencocokan pola).

Kita bisa beragumentasi bahwa komputer memiliki memori dan kemampuan proses matematis yang jauh lebih cepat dari manusia, namun kecepatan bukanlah kecerdasan. Salah satu perbedaan utama manusia dengan mesin adalah hingga hari ini, belum ada mesin yang bisa mengajari mesin yang lain, seperti halnya manusia bisa mengajari ilmu baru kepada manusia lain.

Lalu apa bedanya Machine Learning dengan Data Science? Batasannya belum disepakati semua orang. Keduanya memiliki sejarah dan tujuan yang berbeda, namun antara kedua bidang ilmu ini banyak beririsan. Adapun untuk mudahnya, kita bisa melihat Machine Learning sebagai bidang yang melengkapi ilmu Data Science. Data Science memiliki cakupan yang lebih luas dan memanfaatkan ilmu komputer, matematika, statistik dan Machine Learning untuk mencapai tujuannya.

Di dunia industri, sekarang muncul para profesional yang disebut sebagai Machine Learning Engineer. Pekerjaan mereka berfokus pada rekayasa perangkat lunak untuk menerapkan algoritma Machine Learning sehingga bisa bekerja pada lingkungan produksi. Mereka membuat program yang mengubah model eksperimental yang dibangun para Data Scientist menjadi berskala besar, bisa mengolah data yang mengalir dengan cepat dan hasilnya bisa dipakai di kegiatan nyata. Ini berbeda dengan Data Scientist yang tugasnya lebih condong pada pekerjaan analisis statistik dan matematis. Adapun demikian, dalam buku ini kita akan mempergunakan istilah Data Scientist saja untuk mengacu pada para profesional di kedua bidang Data Science dan Machine Learning, karena tidak jarang seorang Data Scientist harus berperan sebagai Machine Learning Engineer juga.

Selain itu, ada pula disiplin ilmu serupa yaitu Data Mining yang mempelajari tentang metode untuk menghasilkan pengetahuan dengan mengenali pola-pola dari data yang berjumlah besar, yang bila mempergunakan mata manusia belaka akan sukar dilakukan.

Meskipun mirip, Data Mining tidak sama dengan Machine Learning. Ada irisan antara keduanya yang masih belum terlalu jelas, namun untuk mudah diingat, Machine Learning lebih bertujuan untuk membangun sistem yang melakukan pekerjaan-pekerjaan spesifik secara otomatis, misalnya mesin untuk mengenali gambar, mesin untuk pendeteksi transaksi kartu kredit yang mencurigakan, atau mesin pemberi rekomendasi produk apa yang cocok bagi seorang pelanggan. Sementara itu Data Mining lebih merupakan pekerjaan analisis untuk mencari pola-pola tersebunyi di dalam data untuk membantu pembuatan keputusan, misalnya mencari pola belanja pelanggan pasar, atau memperkirakan berapa calon pelanggan yang akan membeli suatu produk.

Data mining memerlukan banyak peranan manusia di setiap langkah, berbeda dengan Machine Learning yang memerlukan keterlibatan manusia sekali saja di awal dan selanjutnya berlangsung otomatis. Keduanya saling membutuhkan; bila Anda mengerjakan Data Mining, maka kemungkinan besar Anda akan memerlukan metode-metode Machine Learning. Kebalikannya, Machine Learning bisa jadi memerlukan Data Mining untuk mendapatkan data yang sesuai keperluannya.

Proses-proses di Dalam Machine Learning

Untuk dapat berhasil membuat mesin yang berkemampuan Machine Learning, diperlukan adanya tiga komponen dasar: algoritma matematis, prosesor komputer dan data. Ketiganya harus tersedia di waktu yang sama, karena tanpa prosesor komputer, algoritma matematis tidak akan bisa diimplementasikan. Hal yang sama terjadi bila data tidak tersedia, maka algoritma matematis macam apapun tidak akan bisa menghasilkan sesuatu.

Ketiga komponen tersebut masing-masing juga saling memacu perkembangan komponen yang lain. Di masa kini, teknologi prosesor komputer setiap hari semakin maju sehingga kemampuan pemrosesan data semakin hari semakin kuat, yang memungkinkan pengolahan data yang semakin besar yang pada gilirannya mendorong riset dan pengembangan algoritma dan metode matematis baru yang semakin kompleks. Data yang semakin besar juga mendorong pengembangan teknologi prosesor, demikian seterusnya.

Suatu mesin dapat dikatakan “belajar” apabila mesin tersebut dapat menggunakan data yang diberikan kepadanya untuk meningkatkan kualitas keluaran mesin secara bertahap. Ini mirip dengan cara belajar manusia, yaitu mempergunakan pengalaman di masa lalu untuk memperbaiki cara kerjanya sehingga bila menjumpai situasi serupa di masa depan, reaksi manusia akan lebih baik. Manusia (umumnya) bisa belajar dari pengalaman buruk agar tidak ingin jatuh ke lubang yang sama. Bila Anda sudah tahu dari pengalaman bahwa mengendarai mobil pribadi di Jalan Raya Jenderal Sudirman pada saat jam sibuk hari Jumat sore ternyata membuat Anda terjebak kemacetan parah, maka secara alamiah Anda akan memilih jalur lain yang lebih lancar atau naik kendaraan umum di hari Jumat minggu berikutnya. Otomatis otak kita membuat “algoritma” sendiri.

Ada banyak algoritma Machine Learning yang sudah diciptakan untuk keperluan yang berbeda-beda, namun semuanya mengikuti prinsip yang sama yaitu meniru (atau berusaha meniru) cara manusia belajar. Secara umum, ada tiga langkah penting dalam proses belajar:

  1. Pengumpulan Data, misalnya data hasil pengukuran dari transaksi, sensor-sensor, catatan-catatan, tulisan, angka, gambar, suara dan sebagainya. Dalam terminologi komputer, dataset adalah sekelompok data yang memiliki keterkaitan satu sama lain yang dapat dimanipulasi oleh komputer sebagai satu kesatuan.
  2. Abstraksi, yaitu proses yang menterjemahkan data-data menjadi suatu model yang lebih umum (mengenai apa definisi model akan dibahas di bawah ini).
  3. Generalisasi, yaitu proses yang mempergunakan model hasil abstraksi sebagai dasar pembuatan keputusan atau kesimpulan.

Sebagai contoh yang lebih mudah dipahami, ketika Anda hendak melakukan perjalanan dari suatu tempat ke tempat yang lain dengan kendaraan, Anda tidak mencoba mengingat pada detik atau menit ke berapa Anda berbelok ke kiri, kemudian pada detik atau menit ke sekian berbelok ke kanan, dan seterusnya.

Cara yang lebih masuk akal adalah Anda mempergunakan tanda-tanda yang ada di jalanan untuk diingat sebagai tanda kapan harus berbelok kanan, kapan berjalan lurus, kapan berbelok kiri dan seterusnya.  Otak Anda mencoba mempergunakan data-data dari indera mata Anda ke dalam suatu konsep umum yang lebih mudah dipahami dan diingat. Inilah proses abstraksi.

Kemudian Anda melakukan generalisasi, yaitu mempergunakan ingatan itu pada saat Anda harus menjalani lagi tugas yang serupa. Jadi ketika Anda harus melakukan perjalanan menuju tempat yang sama, Anda kemungkinan besar tetap bisa sampai di tujuan meskipun berangkat dari tempat yang berbeda, atau berjalan kaki, bukan naik kendaraan.

Contoh lain adalah ketika Anda di jalan raya melihat sebuah mobil bermerk baru yang belum pernah Anda lihat sebelumnya. Meskipun ini adalah pertama kalinya Anda melihat mobil tersebut, Anda sudah dapat menyimpulkan bahwa barang tersebut adalah sebuah mobil, dikarenakan Anda sudah memiliki ingatan di dalam otak Anda sebagai hasil proses abstraksi di masa lalu terhadap beragam obyek yang pernah Anda lihat. Bila ada barang beroda empat, memiliki pintu-pintu dan jendela kaca, dengan sepasang lampu depan-belakang, maka barang itu memenuhi syarat sebagai sebuah mobil sehingga Anda pun akan mempercayai bahwa yang Anda lihat adalah sebuah mobil. Anda tidak memasukkan data-data yang tidak relevan misalnya warna cat mobil atau warna kaca mobil ke dalam memori Anda.

Di sinilah muncul konsep yaitu model. Dalam contoh di atas, otak Anda telah membuat model untuk benda bernama mobil, dan model itu diterapkan pada panca indera Anda saat melihat obyek baru. Rangsangan visual akan dicocokkan dengan beragam model di otak Anda, sehingga Anda dapat membuat kesimpulan mengenai obyek yang sedang Anda lihat.

Contoh lain: bila Anda sudah pernah menikmati hidangan ayam goreng, berarti lidah dan hidung Anda sudah pernah pula memberikan data-data ke memori otak Anda mengenai citarasa dan aroma ayam goreng. Data-data ini sudah disimpan di dalam otak Anda sebagai model bernama “ayam goreng”. Jadi meskipun seandainya mata Anda ditutup, tidak melihat ke makanan yang sedang disantap, data dari lidah dan hidung Anda beserta model di memori otak Anda sudah cukup untuk mengetahui makanan apa yang sedang Anda makan. Kalau berbau seperti ayam dan rasanya seperti ayam, kemungkinan besar Anda memang sedang makan ayam. Proses abstraksi dan generalisasi ini berlangsung dengan sendirinya di bawah kesadaran Anda.

Adapun tidak demikian untuk sebuah komputer. Semua proses harus diprogram secara jelas. Komputer sendiri tidak bisa membuat dan memilih model apa yang akan dipakai. Komputer harus “diajari” untuk menyimpulkan data-data mentah menjadi suatu model. Inilah yang disebut proses training, yaitu proses “pelatihan” membentuk suatu model berdasarkan suatu dataset (yang disebut training dataset).

Kita melatih model dengan tujuan agar model dapat menghasilkan kesimpulan baru berdasarkan data-data baru yang nantinya akan muncul. Dengan algoritma matematis, model dibuat fit (cocok) dengan training dataset. Semakin bagus kualitas training dataset, semakin bagus model yang dibangun.

Di dalam Machine Learning, model bisa berupa persamaan matematis, atau berupa aturan logis (misalnya “if-then-else”), bisa juga berupa diagram alur berbentuk tree(pohon). Algoritma yang dipergunakan untuk membangun model tentunya tetap harus ditentukan oleh manusia. Bisa kita umpamakan manusia adalah guru, dan mesin adalah murid. Murid hanya memodelkan struktur yang disediakan guru.

Saat model sudah dibangun dan dilatih, data sudah diubah menjadi bentuk abstrak yang merangkum semua informasi aslinya. Dengan bentuk yang abstrak, beragam hubungan di antara data menjadi bisa ditemukan, yang sebelumnya tidak terlihat.

Adapun demikian, proses belajar belum tuntas bilamana hasil proses abstraksi tidak dipergunakan untuk membuat tindakan. Di sinilah proses generalisasi terjadi. Model harus beradaptasi dengan data baru yang belum pernah diterima sebelumnya. Data-data baru yang diterima oleh mesin akan dicocokkan dengan pengetahuan abstrak yang sudah dimiliki untuk kemudian dijadikan suatu kesimpulan. Misalnya program pendeteksi transaksi ilegal di sebuah bank, program tersebut sudah memiliki model yang menggeneralisasi transaksi-transaksi jahat, dan membuat prediksi berupa peringatan ketika pola di data baru ada yang cocok dengan model itu.

Training Dataset

Agar algoritma Machine Learning dapat menjalankan proses belajar, kita perlu mempersiapkan training dataset sesuai dengan kasus yang ingin kita pecahkan. Ada beberapa macam data yang bisa dijadikan training dataset:

  • Structured data, yaitu data yang terstruktur dengan tipe data yang konsisten dan dapat disimpan dalam tabel berupa baris-baris dan kolom (oleh sebab itu biasa disebut data tabular).
  • Unstructured data yang tidak memiliki struktur tetap, misalnya teks, gambar, suara dan video.

Dalam buku ini, kita akan lebih memberi perhatian kepada kasus yang mempergunakan structured data, karena kebanyakan algoritma Machine Learning memerlukan data yang terstruktur. Adapun begitu tanpa memandang macam datanya, secara umum training dataset harus berisikan tiga macam input (masukan) yaitu:

  1. Example, yaitu rekaman yang menggambarkan satu obyek yang sedang diamati. Sebagai contoh, data transaksi penjualan di sebuah toserba adalah sekumpulan example. Dalam structured data, satu baris dalam tabel mewakili satu example, jadi satu transaksi pembelian adalah satu example.
  2. Feature, yaitu karakteristik atau atribut dari suatu example. Misalnya jenis, ukuran, warna, usia, dan beragam macam hasil pengukuran yang terkait dengan obyek yang sedang diamati. Feature bisa berupa elemen data yang bersifat continuous yaitu nilai numerik misalnya angka penjualan dan jumlah pelanggan. Feature bisa juga elemen data dalam bentuk sekumpulan kategori, misalnya jenis kelamin, kategori produk, kelompok penyakit, dan sebagainya. Feature yang berupa kategori seperti ini sering disebut dengan data-data nominal. Lebih khusus lagi, kategori berupa daftar yang berbentuk urutan tertentu (misalnya ukuran kecil/sedang/besar, atau usia anak/remaja/dewasa) disebut sebagai data ordinal. Sementara itu, feature yang berisi elemen data yang hanya memiliki dua kemungkinan nilai (misal ‘Ya’ atau ‘Tidak’) disebut binary feature.
  3. Target Feature (atau disebut juga label) yaitu feature yang ingin diketahui atau diprediksi nilainya dengan bantuan model Machine Learning. Target feature harus terdefinisi dengan baik karena algoritma Machine Learning memerlukannya untuk belajar membuat fungsi matematis yang memetakan hubungan antara feature yang ada dengan target yang ingin diprediksi. Contoh target feature yang umum:
    • Angka penjualan perusahaan
    • Angka pertumbuhan ekonomi dan angka inflasi
    • Jenis kelamin laki-laki atau perempuan
    • Kelompok usia penduduk (anak-anak, remaja, dewasa, tua)
    • Transaksi ilegal atau legal
    • Calon pembeli produk atau bukan calon pembeli produk
    • Pesan e-mail biasa atau e-mail sampah
    • Sentimen percakapan positif atau negatif
    • Transaksi kartu kredit yang jahat atau normal

Hal yang penting diperhatikan dalam adalah training dataset harus mencakup seluruh jangkauan nilai yang nanti akan diprediksi. Sebagai contoh, bila kita ingin memprediksi berapa suhu esok hari di suatu daerah, maka training dataset harus memiliki example yang mencakup seluruh jangkauan suhu yang pernah tercatat di daerah itu, misalnya dari 10°C hingga 35°C. Kita tidak bisa memprediksi sesuatu yang ada di luar jangkauan training dataset, misalnya -100°C.

Mengukur Kinerja Model

Setelah kita membangun model, kita tentu tidak bisa langsung memakainya. Kita harus tahu apakah model sudah baik atau belum, yaitu melakukan apa yang disebut dengan proses evaluasi atau validasi model. Bagaimana mengukur baik atau tidaknya sebuah model? Setelah suatu model dilatih dengan training dataset, model harus diuji dengan dataset baru (disebut test dataset) yang dipergunakan untuk mengukur kinerjanya. Proses memanfaatkan model dengan dataset baru disebut dengan proses scoring.

Ukuran terpenting baik-buruk sebuah model adalah seberapa akurat model tersebut bila dihadapkan dengan data baru. Dalam contoh model pendeteksi transaksi perbankan ilegal, harus diukur berapa banyak transaksi yang oleh model dikategorikan sebagai jahat memang benar-benar terbukti sebagai transaksi jahat. Bila model mendeteksi 100 transaksi jahat namun ternyata hanya 50 saja yang benar-benar transaksi jahat, jadi hanya separuh saja prediksi yang benar, maka model ini memiliki akurasi yang buruk karena tidak ada bedanya dengan deteksi acak atau asal-asalan belaka, seperti melempar koin ke udara dan melihat sisi mana yang menghadap ke atas ketika koin mendarat di tanah.

Dari mana kita bisa mendapatkan test dataset? Praktek yang biasa dilakukan adalah membagi dataset yang tersedia menjadi dua, yaitu training dataset dan test dataset. Test dataset jumlahnya lebih sedikit dari training dataset, umumnya sekitar 20% dari total seluruh example. Meskipun lebih sedikit, dalam pemilihan test dataset ini harus dipastikan bahwa isinya dipilih secara acak, jumlahnya cukup besar serta bisa mewakili keseluruhan populasi dataset.

Perlu diingat bahwa tidak ada model yang selalu sukses melakukan generalisasi semua data dengan tingkat akurasi yang selalu tinggi. Setiap macam algoritma Machine Learning memiliki kelebihan dan kelemahan masing-masing.

Salah satu penyebab mengapa model tidak selalu akurat adalah karena adanya noise, yaitu data yang bervariasi di luar kewajaran bila dibandingkan dengan data lain di dalam dataset yang sama. Terkadang noise diakibatkan oleh hal-hal yang tidak bisa dijelaskan secara pasti, namun lebih sering noise diakibatkan oleh kesalahan dalam pengukuran (misalnya alat ukur yang belum dikalibrasi), atau data yang tidak terekam dengan baik misalnya elemen data hilang, terpotong, atau null (kosong). Bisa juga noise dihasilkan oleh manusia, misalnya dalam suatu survei, responden yang mengisi survei tidak memberikan jawaban yang tepat (karena salah membaca, terburu-buru, atau kelelahan) sehingga hasilnya menjadi tidak masuk akal ketika dibandingkan dengan hasil survei dari responden lain.

Bila kita melatih model dengan terlalu banyak noise di dalam training dataset, kita akan menemukan masalah yang disebut overfitting. Karena noise adalah fenomena yang acak dan tidak bisa dijelaskan secara pasti, noise akan membuat pola sesungguhnya di dalam data menjadi kabur dan tidak jelas. Model yang overfit akan nampak bagus dalam proses training namun ketika diuji dengan test dataset kinerjanya akan merosot. Itu sebabnya kita harus sebisa mungkin menghilangkan noise dari training dataset sebelum membuat model.

Predictive Model

Dalam bahasa ilmiah, prediction (prediksi) yaitu perkiraaan apa yang akan terjadi di masa depan (tentunya dilakukan secara matematis, bukan dengan ilmu gaib). Prediksi bisa didapat berdasarkan pengetahuan dan pengalaman di masa lalu. Sebagai contoh bila kita ingin memprediksi bagaimana cuaca esok hari di sebuah kota maka kita perlu terlebih dahulu mendapatkan data iklim dan pola cuaca di daerah itu untuk tahun-tahun sebelumnya. Bila kita ingin memperkirakan berapa laba perusahaan bulan depan, maka kita memerlukan data-data penjualan dan pengeluaran perusahaan di masa sebelumnya. Karena dipakai sebagai dasar membuat prediksi, data-data ini disebut predictor.

Hampir mirip dengan prediksi, bila kita ingin membuat perkiraan terhadap apa yang telah terjadi, maka yang kita lakukan adalah membuat estimasi. Contohnya adalah membuat estimasi berapa tinggi badan seseorang, atau membuat estimasi berapa jarak yang telah ditempuh sebuah kendaraan.

Predictive model, seperti namanya, dipergunakan untuk memecahkan persoalan-persoalan yang memerlukan prediksi dan estimasi. Algoritma Machine Learning akan mencoba mencari hubungan antara target feature (yang ingin diprediksi) dan feature yang lain yang tersedia di dalam dataset. Perlu dipahami bahwa perbedaan antara prediksi dan estimasi secara matematis sebenarnya tidak ada, sehingga bisa kita pergunakan model yang sama.

Selain dipergunakan untuk membuat prediksi nilai-nilai numerik, predictive model bisa dipergunakan juga untuk melakukan kategorisasi, artinya menentukan suatu example masuk ke dalam kategori yang mana (dalam bidang Machine Learning, kategori disebut juga dengan istilah class). Prediksi seperti ini disebut dengan classification (klasifikasi), dan modelnya disebut classification model. Contoh classification antara lain:

  • Cuaca diperkirakan cerah, berawan, hujan, atau hujan badai
  • Pelanggan dikelompokkan ke golongan pelanggan baru, pelanggan biasa, atau pelanggan setia
  • Pasien dinilai beresiko rendah atau tinggi mendapat serangan jantung
  • E-mail dipisahkan antara spam (berisi pesan sampah) dan yang bukan.

Agar dapat membuat prediksi, predictive model harus diberi petunjuk yang jelas tentang apa yang harus diprediksi, juga bagaimana caranya belajar agar modelnya bisa terbentuk. Ibarat seorang murid yang perlu bimbingan dan pengawasan, proses training seperti ini disebut supervised learning. Pengawasan di sini tidak berarti secara harfiah diawasi oleh manusia, namun artinya manusia harus mempersiapkan apa yang disebut ground truth, yaitu data lengkap hasil pengamatan di dunia nyata yang akan dijadikan masukan bagi dasar proses belajar. Data lengkap ini berisi featurefeature dan target feature. Tugas mesin adalah menemukan fungsi matematis yang paling bisa menggambarkan hubungan antara feature dan target feature-nya.

Hasil keluaran model juga harus dievaluasi oleh manusia agar kemudian dapat dilakukan langkah-langkah untuk membuat model menjadi lebih baik lagi, dengan melihat feature yang mana saja yang paling berpengaruh terhadap unjuk kerja model.

Ada banyak macam algoritma Machine Learning untuk membuat predictive model. Jenis target feature, jumlah feature dan jenis data yang bisa dijadikan predictor akan menentukan algoritma yang cocok untuk memecahkan kasus yang sedang dihadapi. Di dalam buku ini kita akan membahas beberapa algoritma Machine Learning yang paling sering dipakai. Beberapa algoritma supervised learning antara lain:

  • Linear regression
  • Logistic regression
  • Decision Trees
  • Random Forest
  • Naive Bayes
  • Neural Network

Descriptive Model

Ada banyak kasus di mana kita tidak menentukan target yang hendak diprediksi, sebaliknya kita lebih tertarik untuk mencari pola yang terdapat di dalam dataset. Model yang dibuat tidak bersifat prediktif, namun dibuat untuk mengetahui apa yang telah terjadi. Model seperti ini disebut descriptive model.

Ada dua macam penggunaan descriptive model yaitu association dan clustering. Contoh kasus association adalah menemukan pola-pola belanja pelanggan dari jutaan baris data transaksi di sebuah pasar swalayan. Ini yang sering disebut dengan Market Basket Analysis, yang akan kita bahas di Bab 11. Di lain sisi, clustering adalah proses pengelompokan data ke dalam kelompok-kelompok homogen (disebut cluster) berdasarkan atributnya. Secara mandiri, model akan menghasilkan clustercluster berdasarkan kesamaan data tanpa sebelumnya ditentukan oleh manusia. Kita bisa anggap clustering sebagai pengelompokan yang terjadi secara otomatis.

Dalam descriptive model, semua feature yang ada akan diperlakukan sama, tidak ada yang dianggap lebih penting. Tidak ada training dataset, tidak ada target feature yang ditentukan untuk proses belajar. Proses untuk membangun model seperti ini disebut unsupervised learning. Disebut demikian karena ibaratnya murid, tidak ada guru yang mengawasi proses belajarnya. Sang murid harus mencari sendiri pola-pola yang tersembunyi, tanpa diberikan jawaban yang benar.

Bidang ilmu kecerdasan buatan banyak mempergunakan pengembangan dari unsupervised learning yang disebut deep learning. Ini terutama diterapkan pada teknologi pengenalan gambar, pengenalan suara, dan robotika.

Feature Selection

Sepanjang perjalanan proses pembuatan model, kita bisa memulai dengan semua feature yang ada di dataset, namun pada iterasi-iterasi selanjutnya kita akan menjumpai kenyataan bahwa tidak semua feature bisa memberikan kontribusi nyata pada akurasimodel. Tidak jarang di awal proses pembuatan model kita memiliki puluhan hingga ratusan feature di dalam dataset, namun pada akhirnya kita menemukan hanya sepuluh atau bahkan kurang yang benar-benar bermanfaat untuk pembuatan model. Feature yang tidak bermanfaat harus dipilih untuk dibuang sehingga yang tersisa adalah feature yang memang membuat akurasi model menjadi lebih tinggi. Feature yang jumlahnya sedikit juga akan lebih menguntungkan karena volume data menjadi lebih kecil dan kompleksitas model bisa lebih dibatasi.

Proses pemilihan feature ini sering disebut feature selection. Bagaimana cara melakukan feature selection? Salah satu pengukuran yang biasa dipakai untuk memilih feature adalah Pearson Correlation. Gunanya adalah mengukur seberapa dekat hubungan antara dua feature mengikuti suatu garis lurus. Koefisien Pearson jangkauannya dari angka -1 hingga +1. Angka nol menunjukkan tidak ada sama sekali hubungan linier antara kedua feature, sementara bila angka mendekati -1 atau +1 artinya kedua feature memiliki hubungan linier yang nyaris sempurna.

Contoh yang mudah dipahami: bila angka Pearson Correlation antara gaji dan produktivitas pekerja adalah 0,8, artinya terjadi korelasi positif, yaitu bila satu variabel naik, yang lain juga akan naik. Bila gaji meningkat maka produktivitas pekerja juga meningkat. Sebaliknya korelasi negatif bisa terjadi antara suhu ruangan dan produktivitas pekerja; bila suhu ruangan meningkat, pekerja menjadi kegerahan sehingga produktivitas menurun.

Cara yang umum adalah membuat matriks berisikan semua feature di dalam dataset dan menghitung Pearson Correlation untuk semua pasangan yang ada. Contohnya seperti di bawah ini, yaitu Pearson Correlation antara empat feature dalam dataset pekerja pabrik (usia, gaji, produktivitas, jumlah hari absen). Kita lihat, gaji meningkat maka produktivitas meningkat, namun bila usia bertambah, produktivitas menurun (jangan khawatir, ini hanya contoh dan tidak menggambarkan fakta dunia nyata).

Formula perhitungan Pearson Correlation tidak kita bahas di dalam buku ini, adapun aturan umum adalah angka Pearson Correlation di atas 0,5 artinya ada korelasi kuat antara dua feature. Pearson Correlation di bawah 0,5 menununjukkan korelasi yang dianggap lemah. Dengan mengetahui statistik ini, pasangan feature yang tinggi korelasinya akan memiliki efek yang kurang lebih mirip terhadap akurasi model, sehingga bisa dibuang salah satunya dari proses training model.

Persiapan Data

Dalam pembuatan model Machine Learning, kualitas training dataset sangat berpengaruh terhadap kualitas model. Ibaratnya masakan, bahan dasar masakan sangat berpengaruh terhadap citarasa makanan. Data yang kosong, nilai yang keliru atau ketidakwajaran kecil saja di dalam training dataset dapat membuat model yang dihasilkan menjadi buruk kinerjanya.

Untuk mendapatkan data yang berkualitas tinggi bukanlah hal yang sederhana. Tantangan pertama bagi Data Scientist adalah mendapatkan data yang diperlukan dari sumbernya, biasanya berupa sistem transaksional yang isi datanya tidak bersih. Selain itu data yang diperlukan belum tentu tersedia di sumbernya, dan kalaupun tersedia, umumnya terpencar-pencar di banyak lokasi dan lebih rumit lagi, tersimpan dalam berbagai macam format (SQL database, file text, dan sebagainya). Diperlukan mekanisme khusus untuk pengumpulan dan persiapan data agar bisa dipakai untuk keperluan Machine Learning. Di beberapa penerapan, data yang sudah dipersiapkan untuk proses Data Analytics dan Machine Learning disebut dengan Analytical Base Table.

Data collection adalah proses pengumpulan dan pengambilan data dari sumber-sumber data yang bisa dilakukan secara berkala (per hari, per jam, atau per sekian menit) atau secara real-time. Tidak semua data perlu diambil, hanya informasi yang sekiranya diperlukan untuk proses analisis saja yang dipilih. Setelah terkumpul, hampir selalu diperlukan upaya untuk mengkonversi, membersihkan, menghilangkan elemen-elemen data yang duplikat, tidak konsisten, atau isinya bermasalah. Setelah itu, data yang ada harus diubah strukturnya agar sesuai dengan bentuk dan ukuran yang dibutuhkan oleh algoritma Machine Learning yang dituju. Pekerjaan biasanya dikerjakan oleh para Data Engineer, yaitu spesialis yang mengerti bagaimana metode transformasi data ke bentuk yang bisa dipakai oleh para Data Scientist.

Contoh transformasi data antara lain:

  1. Membuang data duplikat/ganda
  2. Membuang data yang kosong
  3. Membuang data yang keliru
  4. Menggabungkan semua data ke dalam satu tabel
  5. Membuat data-data turunan hasil perhitungan (“calculated fields”)
  6. Mentransformasi format dan struktur tabel
  7. Melihat profil data secara keseluruhan dengan cara visual

Kasus yang sangat sering terjadi dalam praktek adalah banyaknya nilai hilang atau kosong di dalam dataset. Kebanyakan algoritma Machine Learning tidak dapat menerima data yang kosong, sehingga dataset harus dimanipulasi terlebih dahulu sebelum masuk ke proses pembuatan model.

Beberapa pendekatan yang umum untuk menangani nilai kosong adalah impute yang artinya mengganti nilai yang hilang dengan nilai yang lain seperti angka rata-rata atau angka default. Pendekatan lain adalah dengan menghapus seluruh example yang memiliki feature berisi nilai kosong bila diketahui informasi yang hilang memiliki hubungan kuat terhadap target feature (dan sebaliknya, example tetap dibiarkan saja bilamana informasi yang hilang setelah melalui pengujian statistik terbukti tidak memiliki hubungan yang kuat dengan target feature).

Kemudian tantangan selanjutnya adalah melakukan data exploration, yaitu eksplorasi untuk memahami apa isi data sehingga bisa diputuskan elemen data mana yang penting dan yang relevan sesuai kasus Machine Learning yang ingin dicapai. Di sini diperlukan Data Scientist yang memahami domain permasalahan yang hendak dipecahkan.

Salah satu yang harus dilakukan dalam eksplorasi data adalah pendeteksian outlier, yaitu example dengan nilai ekstrim dan berbeda jauh dibandingkan keseluruhan populasi. Outlier bisa berupa data yang tidak wajar dan sudah pasti harus dibuang misalnya seorang penduduk yang tercatat berumur 150 tahun, atau bisa saja memang sesuatu yang sah dan tidak harus dibuang misalnya seorang pengusaha muda berusia 19 tahun yang memiliki penghasilan bulanan 30 juta Rupiah, jauh dari rata-rata orang seusianya.

Pendeteksian outlier bisa dilakukan secara visual dengan histogram, yang menunjukkan sebaran data berdasarkan frekuensi kemunculannya seperti contoh di bawah ini:

Di organisasi dan perusahaan besar, sudah menjadi praktek umum bahwa setiap macam data yang disimpan di sistem informasi sudah dilengkapi dengan data dictionary, yaitu dokumentasi yang menjelaskan metadata (data tentang data) beserta isi dan arti setiap feature sehingga siapapun yang membutuhkan data misalnya seorang Data Scientist bisa mendapat gambaran feature apa saja yang potensial bisa diekplorasi lebih lanjut.

Proses-proses di atas sulit atau tidak dapat diotomasi karena membutuhkan keterampilan. Dalam praktek, sebagian besar waktu dan tenaga akan dihabiskan di sisi eksplorasi, persiapan dan dokumentasi data.

Sampling

Dengan semakin majunya teknologi komputasi yang mampu mengolah data dalam jumlah yang semakin besar, sebagian orang berpendapat bahwa kita bisa langsung menganalisis seluruh dataset berapapun besarnya. Ada semacam aturan umum yang menyatakan bahwa “lebih banyak data, lebih baik”. Adapun begitu pandangan ini tidak selamanya benar karena ada kalanya lebih menguntungkan untuk melakukan sampling, yaitu mengambil subset (sebagian) data saja bukan seluruhnya. Dengan tidak mengolah seluruh dataset, proses komputasi bisa dihemat dan waktu proses juga menjadi lebih singkat.

Ada syarat untuk sampling yang baik yaitu data yang diambil harus bisa mewakili keseluruhan populasi. Sampling dilakukan secara acak dari dataset. Berapa banyak data sampling yang diperlukan? Tidak ada aturan baku tentang ini, bisa saja 10% sample sudah cukup mewakili seluruh populasi. Yang terpenting adalah kita harus menghindari sampling bias, atau pengambilan sample-nya condong ke satu atau beberapa kelompok populasi saja. Hal ini bisa membuat kita terbawa ke kesimpulan yang tidak benar. Misalnya mengambil sampling data satu hari transaksi saja sementara ada hari-hari lain yang memiliki pola transaksi berbeda. Pola belanja pelanggan di hari Senin bisa sangat berbeda dengan di hari Sabtu.

Sampling bisa dilakukan dengan pengambilan acak sederhana, atau bisa dengan metode yang disebut stratified sampling, yaitu memisahkan populasi ke dalam segmen-segmen kecil terlebih dahulu sebelum dilakukan pengambilan acak. Tujuannya agar bisa mengambil sample yang merata untuk seluruh elemen data. Misalnya data penduduk dipecah ke dalam beberapa strata berdasarkan jenis kelamin, usia, suku, dan sebagainya sebelum dilakukan pengambilan acak.

Standarisasi Data

Ketika kita akan membangun model Machine Learning, penting untuk memastikan setiap feature berada di dalam jangkauan nilai yang sama. Kita tidak ingin ada feature yang jangkauan angkanya tinggi (misalnya dalam orde ribuan atau jutaan) mendominasi feature yang jangkauan angkanya jauh di bawahnya (misalnya puluhan atau ratusan). Sebagai contoh, adalah hal yang lumrah bila suatu transaksi dengan mata uang Rupiah bernilai dalam orde juta atau milyar, namun orde yang sama tidak wajar untuk transaksi dengan mata uang Dolar Amerika.

Beberapa algoritma Machine Learning tidak bisa bekerja baik bila hal seperti ini dibiarkan. Untuk menghindari ini, diperlukan normalisasi data, yaitu dengan membuat semua feature memiliki skala jangkauan yang seragam, umumnya dengan mengubah nilai-nilai menjadi berpusat di sekitar angka nol. Seperti contoh di bawah, dengan formula matematis data asli yang memiliki jangkauan lebar diubah menjadi berskala 0 hingga 1. Proses normalisasi seperti ini disebut dengan istilah feature scaling atau rescaling.

Demikian juga dengan dataset dengan feature yang isinya sangat beragam, ada kalanya perlu diolah agar menjadi kelompok-kelompok kecil dengan teknik yang disebut binning. Tujuan binning adalah data yang bersifat continuous diubah menjadi bersifat kategorikal, sehingga memudahkan analisis terhadap data yang memiliki jangkauan nilai yang lebar. Binning bermanfaat untuk mencegah model menjadi overfit, yaitu hanya bekerja baik bila dihadapkan dengan training dataset saja. Manfaat lain adalah agar jumlah data yang harus diproses menjadi lebih kecil dan dapat menghemat waktu komputasi.

Contoh binning adalah data penghasilan rumah tangga penduduk di suatu wilayah yang bernilai di atas sepuluh juta Rupiah dikelompokkan menjadi tingkat penghasilan tinggi, di bawah tiga juta Rupiah sebagai tingkat penghasilan rendah, dan seterusnya. Binning juga umumnya dipergunakan untuk pengolahan gambar digital dengan cara mengkombinasikan banyak pixel (elemen terkecil gambar) yang berdekatan menjadi satu pixel saja.

Mendapatkan Dataset

Di lingkungan nyata, data yang akan diolah biasanya berasal dari dalam sistem informasi transaksional di perusahaan atau organisasi yang bersangkutan. Data bisa berupa transaksi penjualan, database pelanggan, hasil survei atau data lain yang dihasilkan kegiatan nyata. Semua organisasi memiliki kebijakan masing-masing mengenai kerahasiaan informasi, termasuk juga adanya undang-undang yang melindungi privasi pelanggan. Oleh karena itu biasanya data akan dijaga ketat dan tidak dapat dibawa keluar dari organisasi.  

Bagi kita yang sedang belajar, kita juga memerlukan dataset untuk berlatih, namun biasanya kita menemui kesulitan untuk mendapatkan dataset yang sesuai karena kita tidak memiliki akses ke data asli seperti mereka yang bekerja di organisasi-organisasi besar. Alternatifnya, ada beberapa situs di internet yang menyediakan contoh-contoh dataset yang bebas untuk dipergunakan. UCI Machine Learning Repository yang berada di University of California di Amerika Serikat adalah salah satu situs yang paling populer untuk mendapatkan contoh dataset bagi proses latihan dan belajar. Situs ini menyediakan banyak dataset yang berasal dari kasus-kasus nyata di berbagai bidang, baik bidang ilmiah maupun sektor bisnis. Setiap dataset sudah dilengkapi dengan deskripsi yang mendetail tentang dataset tersebut.

Sudah siap? Mari kita mulai belajar!

[1] Gartner Release “Global AI Business Value”, https://www.gartner.com/en/newsroom/press-releases/2018-04-25-gartner-says-global-artificial-intelligence-business-value-to-reach-1-point-2-trillion-in-2018

[2] DOMO Report “Data Never Sleeps” https://www.domo.com/news/press/data-never-sleeps-7

[3] IDC Report https://www.seagate.com/id/id/our-story/data-age-2025/

Junkers Ju-52


August 2019 | Dios Kurniawan

This model kit is one of the most exciting but is also one of the most difficult I have ever attempted: Italeri 1:72 Junkers Ju-52. This Nazi-era transport plane has a unique three-motor arrangement which gives the aircraft a very distinctive look.

The quality of the kit itself is not up to my standard: many parts such as the wings, engine cowl and flaps did not really hold together. I had to take multiple attempts to glue the parts, because they fell off easily.

The actual aircraft featured in this kit is a Minesweeper variant. It has a large metal ring under the fuselage (see it here) which works to detonate magnetic mines in sea. In my opinion, the ring would make the plane look unattractive, so I chose not to install it on the model. Cockpit window frames are also difficult to paint, so I simply left them unpainted.

Luftwaffe Ju 52
Ju 52 sitting next to a Luftwaffe Fw190 fighter. As you can see, Ju 52 is a huge plane.

I like WW2 planes, but because of its difficulty, building this one was not really the kind of fun I was looking for.

Tips: Installing Standalone PySpark in MacOS

August 2019 | Dios Kurniawan

I wrote this post to share with you how to install PySpark in MacOS. I was reformatting my laptop last week and I found it difficult to reinstall PySpark because the Apache Spark documentation did not mention much about MacOS. If you Google it, you would find there are quite many different ways of doing this, but I could assure you that what I wrote here would be the most straightforward way to install PySpark in a standalone setup in a MacOS.

Standalone setup is ideal if you need to write in PySpark but do not own or do not have access to a Hadoop / Spark cluster. If you only need to write PySpark programs locally in your laptop without actually running them in a cluster of machines, for example at home or in a coffee shop, then this is the way to go.

To install PySpark, follow these 7 easy steps below. This assumes that you are starting with a clean machine. Be warned, you will need a fast internet connection because the size of the software to download will be quite large.

Steps:

  1. Download and install Java (JDK) SE 8 if you haven’t done so. Beware: do not use other version. If you use newer version, you will have to downgrade.
  2. Download and install Anaconda (http://anaconda.com). Pick Python 3.x instead of Python 2.x. Test your installation by creating and running a simple Python program before you proceed to the next step.
  3. Download and install Homebrew (https://brew.sh). Homebrew is package manager for MacOS, we will need this to install Spark. Once Homebrew is installed, open a new Terminal and run this command to get core Apache Spark package:
brew install apache-spark

4. Once finished, go to your Spark directory /usr/local/Cellar/apache-spark as shown below (change the numbers with the actual version you have installed in your computer, in my case it is “2.4.5”) and then find and edit the bash_profile file in that directory:

cd /usr/local/Cellar/apache-spark/2.4.5
nano ~/.bash_profile

Add these new lines at the very bottom of the file, then save and close:

export SPARK_PATH=/usr/local/Cellar/apache-spark/2.4.5
export PYSPARK_DRIVER_PYTHON="jupyter"
export PYSPARK_DRIVER_PYTHON_OPTS="notebook"
export PYSPARK_PYTHON=python3 alias snotebook='$SPARK_PATH/bin/pyspark --master local[2]'

5. Run the file bash_profile you just edited by executing this:

source ~/.bash_profile

6. Next, download and install Findspark and PySpark using Conda:

conda install -c conda-forge findspark
conda install pyspark

7. Test your installation by starting a new Python 3 program as below (you can also use Jupyter Notebook):

import findspark
findspark.init()
from pyspark import SparkContext
sc = SparkContext(appName="dios")

If the program returns no error, that’s it, you’ve got your Pyspark environment ready!