Linear Regression — Studi Kasus : Prediksi Pendapatan pada Film Box Office

Awaliyatul Hikmah
7 min readMay 30, 2021

--

Linear regression adalah metode yang sangat sederhana namun terbukti sangat berguna dalam beberapa kondisi dan situasi. Pada kesempatan kali ini, kita akan belajar bagaimana cara mengimplementasikan Linear Regression untuk memprediksi pendapatan film box office.

Jadi ceritanya ada teman kita, si Joko, produser film yang kurang terkenal itu, sedang dilema berat. Dia rela menghabiskan uang ratusan juta dollar, menggadaikan rumah satu-satunya, menjual mobil kesayangannya, bahkan perhiasan anak bojo pun ikutan dijual demi membiayai film yang ditargetkan akan tayang setelah pandemi mereda. Bayangkan jika film tersebut nantinya tidak laku? Ditambah lagi ada segrombolan manusia yang tidak berakhlak mulia dan suka menonton film bajakan itu. Oh, atau pandemi yang tak kunjung reda hingga film ini tidak jadi rilis atau produksi terhenti di tengah jalan? Tamatlah riwayat hidup si Joko ini. Sudahlah bangkrut, diomelin neneknya, anak istrinya ngambek pula.

Eh tapi, untungnya nih.. Joko teringat sama kamu, tukang ramal intelektual di era 4.0 yang sangat di puja-puja masyarakat padahal hanya import-import library doang kerjaannya, hehe. Canda ya. Tapi ini yang sebenarnya akan kita lakukan 😋

Baiklah, supaya beneran terlihat intelek, ada beberapa hal yang perlu kita lakukan, yaitu:

Workflow diagram

1. Formulate Question

Tahap ini harus dilakukan dengan hati-hati. Buatlah daftar pertanyaan yang ingin kamu jawab melalui penelitian ini. Semakin jelas dan spesifik, semakin bagus. Baiklah, kembali ke permasalahannya Mas Joko tadi, kita akan coba membedah apa saja rumusan masalahnya, antara lain:

a. Berapa pendapatan yang akan dihasilkan oleh film ini?

Dari sini mungkin muncul pertanyaan baru lagi, hal apa saja yang kiranya dapat mempengaruhi pendapatan dari sebuah film?

  1. Aktor?
  2. Script?
  3. Sutradara?
  4. Marketing?

Hmm.. Kalau kita melihat keempat elemen di atas, semua sangat tergantung akan satu hal. Apakah itu? Yap. Cuan. Salam Cuan! 🤑. Nah, dari sini kita dapat membuat rumusan masalah yang kedua.

b. Apakah anggaran dana dapat digunakan untuk memprediksi pendapatan film?

Pertanyaan menarik. Kita lanjut dulu ke proses berikutnya untuk dapat menjawab pertanyaan-pertanyaan ini.

Btw, kalian bisa menggunakan rumusan masalah versi kalian sendiri ya..

2. Data Collection

Untuk dapat menjawab pertanyaan-pertanyaan tadi, tentu kita butuh data historis dari film-film sebelumnya. Yap, algoritma ini akan belajar dari pengalaman yang sudah berlalu. Semakin banyak pengalamannya (datanya) prediksi yang dihasilkan akan semakin akurat.

Dalam hal ini kita akan memecah data tersebut menjadi 2 bagian. Bagi kalian yang pernah belajar statistik pasti tidak asing dengan istilah independent variable dan dependent variable. Dalam prespektif machine learning, kita biasa menggunakan istilah feature/attribute (untuk independent) dan target (untuk dependent). Dengan demikian, kita dapat memetakan data yang akan kita gunakan sebagai berikut:

DependentVariable = f (IndependentVariable)

targetVariable = f (inputFeatureVector)

  1. Data on feature => Movie budgets (anggaran film)
  2. Data on target => Movie revenue (pendapatan film)

Jadi gini, machine learning itu akan mempelajari fungsi (f) yang paling baik untuk memetakan input variabel (X) ke output variabel (Y).

Y = f (X)

Dengan kata lain, fungsi tersebut yang membuat si mesin itu mampu membuat prediksi (Y) di masa depan dengan memberikan variabel input (X) yang baru. Kita tidak perlu ambil pusing bentuk fungsinya seperti apa, karena jika kita tahu, tentu kita tidak butuh machine learning untuk membuat prediksi, kan? Kannn?? Yoi. Sip.

Baiklah, semoga bisa clear ya, di sini.

Sebenarnya tahap ini merupakan salah satu tahapan yang paling banyak menghabiskan waktu. Akan tetapi, kita cukup tertolong dengan adanya website “The Numbers” dengan slogannya Where data and movie business meet. Cocoklah sudah. Kita tinggal meluncur kesana dan mencari data yang kita butuhkan. Jika kalian bingung cara mengambil datanya, kalian bisa menggunakan data mentah yang ada di github saya (link tercantum di akhir postingan).

3. Data Cleaning

Setelah berhasil memperoleh datanya, selanjutnya kita harus membersihkannya terlebih dahulu. Barangkali di sana ada nilai yang salah, hilang, atau terdapat instance/baris yang dengan feature yang tidak lengkap.

Pertama, mari kita lihat sekilas data yang akan kita gunakan.

Dataset overview

Berdasarkan rumusan masalah yang sudah kita tentukan di atas, kita hanya mencari hubungan antara anggaran (production budget) dengan pendapatan (worldwide gross), bukan? ada domestic gross dan worldwide gross, kita akan menggunakan yang worldwide gross, karena cakupannya lebih luas.

Oleh sebab itu, kita bisa menghapus kolom-kolom lain (Seperti rank, release date, movie title, dan domestic gross) dan hanya menyisakan dua kolom saja, yaitu production budget dan worldwide gross.

Kedua, perhatikan formatting pada kolom production budget dan worldwide gross. Simbol dollar ($) dan koma (,) yang ada di sana akan menganggu kita saat melakukan perhitungan. Kita perlu menghilangkan simbol tersebut atau mengubah format datanya menggunakan angka biasa. (maksudnya, ubah $1,000 menjadi 1000). Dalam kasus ini, saya juga akan mengubah nama header untuk masing-masing kolom untuk memudahkan penulisan selama pengerjaan.

Ketiga, terdapat beberapa film dengan anggaran dan/atau pendapatan $0 di sana. Hal tersebut dapat terjadi karena beberapa faktor, entah kesalahan input atau memang film tersebut batal rilis. Sayangnya, hal ini dapat mempengaruhi hasil analisis kita. Oleh sebab itu, mari kita hilangkan saja.

Sebenarnya kita masih bisa melakukan eksplorasi lebih jauh lagi terkait data outliers dan menerapkan teknik data cleaning lainnya. Namun untuk permulaan, kita mulai dari yang sederhana dulu :D

Kalian tentu bisa melakukan data cleaning menggunakan spreadsheet atau excel. Tetapi pada kesempatan kali ini saya akan mencobanya menggunakan notebook dengan bantuan library pandas.

4. Explore and Visualise

Pada tahap ini, kita akan menggunakan data yang telah dibersihkan. Sama seperti tahap yang sebelumnya, saya akan menggunakan notebook.

5. Train Algorithm

Seperti yang telah disebutkan sebelumnya, pada kasus ini terdapat 2 data, yaitu: anggaran (budget) sebagai feature dan pendapatan (revenue) sebagai target. Adapun Linear Regression akan mencoba merepresentasikan hubungan antara budget dan revenue sebagai garis lurus.

Mari kita ambil diagram scatter yang telah dibuat di langkah sebelumnya dan kita tambahkan beberapa garis lurus.

Pada gambar di atas, saya membuat 3 garis. Kira-kira garis mana yang merupakan garis terbaik untuk memetakan fungsi x terhadap y?

Kita bisa melihat pada gambar, ada banyak gap antara actual data point dengan predicted value. gap ini dinamakan residual. Residual inilah yang akan membantu kita untuk menentukan kemungkinan slope (koefisien kemiringan) terbaik dari garis yang kita buat. Semakin kecil nilai residualnya, semakin baik model tersebut. Lebih sederhananya, mari lihat gambar di bawah ini.

Bagaimana residual bekerja? Lihatlah ilustrasi di bawah. Sebagai contoh, saya hanya akan menggunakan 3 data point pertama.

Karena data point pertama terletak di bawah garis, maka kita mendapatkan residual dengan nilai negatif (-6), sedangkan nilai negatif tidak diperkenankan di sini. Mengapa? Karena tujuan kita mencari nilai minimum dari residual seluruh data point tadi. Bayangkan jika ada garis lain yang seluruh data point-nya berada jauh di bawah garis, tentu nilainya akan semakin kecil, padahal gapnya sangat besar. Untuk itu, setiap residualnya akan kita kuadratkan. Dengan demikian, akan dihasilkan nilai tunggal — Residual Sum of Squares (RSS).

Inilah angka yang akan diminimumkan oleh linear regression dalam pemilihan parameter terbaik untuk memetakan variabel input x ke variabel target y.

Sederhananya begini, pada ilustrasi sebelumnya kan ada beberapa garis dengan kemiringan yang berbeda, nah garis yang paling baik, paling akurat, dan paling top itu ya garis yang memiliki nilai RSS paling kecil. Tugas linear regression ya mencari garis terbaik itu.

Jika kalian masih bingung dengan penjelasan saya di atas, ada baiknya kalian belajar dari sumber lain terlebih dahulu dan memahami betul teori terkait Linear Regression.

Selanjutnya, kita akan kembali ke notebook dan mengimplementasikan linear regression (yang sebenarnya cukup hanya dengan 2 baris kode dengan bantuan library sklearn :D)

6. Evaluate

Dari tahap sebelumnya, kita telah berhasil menemukan nilai dari slope coefficient dan intercept. Lalu bagaimana kita menerjemahkan angka tersebut?

Slope coefficient = 3.11150918, itu berarti adanya relasi positif antara anggaran (budget) dan pendapatan (revenue). (rumusan masalah kedua terjawab✅)

Selain itu, setiap 1 dollar yang kita keluarkan untuk membiayai suatu film, maka kita akan memperoleh pendapatan sekitar 3.1 dollar. Semakin besar biaya yang dianggarkan, maka pendapatan yang dihasilkan juga akan cenderung lebih besar pula.

Bagaimana tentang intercept?

Intercept = -7236192.729139626, itu berarti sebuah film dengan anggara (budget) $0 akan mengalami kerugian lebih dari 7 juta dollar. Yap. Ini memang tidak realistik dan sungguh problematik :D

Lalu, bagaimana cara membuat prediksi berdasarkan model yang kita buat?

Mari kita ingat-ingat kembali formula untuk mencari nilai y yang ada di tahap sebelumnya

y = (slope)x + intercept
revenue = (slope)*budget + intercept

Pada tahap ini kita telah berhasil menemukan nilai dari koefisien slope dan intercept, maka untuk menghitung pendapatan (revenue) film dengan anggaran (budget) $50,000,000 adalah:

revenue = 3.11150918 * 50,000,000 + (-7,236,192.729139626)
revenue = 148,338,807

Berdasalkan model prediktif yang kita hasilkan, dengan budget $50,000,000 maka besar pendapatan yang diprediksikan adalah $148,338,807. (rumusan masalah pertama terjawab ✅)

Pertanyaan selanjutnya, seberapa akuratkah model yang kita buat?

model

Harus kita akui dengan melihat gambar di atas, masih terdapat banyak data point yang memiliki gap yang agak besar dengan predictive valuenya, terutama untuk nilai ekstrim.

Lalu, bagaimana kita mengukur kinerja dari model tersebut? Pada kasus ini kita menggunakan R², dan saya telah menghitungnya di tahap sebelumnya. Lihatlah di baris paling bawah pada notebook yang terakhir, di sana kalian akan melihat skor sebesar 0.5496485356985729.

Apa makna dari angka tersebut? Itu artinya, variabel anggaran (budget) memberikan pengaruh sebesar 55% terhadap variabel pendapatan (revenue). Well, itu cukup bagus mengingat kita hanya menggunakan model yang sangat sederhana dan hanya menggunakan 1 feature saja.

Baiklah, mungkin sekian dulu. Sampai bertemu di project berikutnya :D

Full code on my github repo : click here

--

--

Awaliyatul Hikmah
Awaliyatul Hikmah

Written by Awaliyatul Hikmah

A passionate full-stack developer with expertise in software development and deep learning, particularly in Natural Language Processing (NLP)

No responses yet