Halaman

Khamis, 15 Ogos 2024

Mistake and Error

Bismillahirrahmanirrahiim. Dengan nama Allah yang Maha Pemurah lagi Maha Penyayang.

...

Sepanjang kehidupan kita ni, memang kita ni tak lari dari buat kesilapan. Even hari ni sekali pon.

I said I wanted to be better. Tapi kadang - kadang, tiap - tiap hari aku rasa aku still lagi buat kesilapan yang sama. Dan yang lama.

Dan kadang - kadang, aku masih lagi dihantui dengan kesilapan dari zaman silam aku. Terasa berat. Sebab ada yang diantara kesilapan aku itu, menyebabkan rekod aku tercalar sampai bila - bila. Dan tak lama lagi aku kene menghadapi outcome dari kesilapan aku itu.

Dan terus terang aku katakan, dah lebih beberapa tahun benda ni berlaku, tapi aku tau aku masih lagi kene hadapinya. But this time, sampai sekarang aku rasa aku tak dapat nak brain apa yang akan berlaku selepas aku dapat outcome tu. Berat sangat. Impact dia ke future aku sangat besar.

Betul.

Sedih tau tak. I cannot change the future because the mistake that I have done.

...

Mistake.

It is not an error.

Well.. Sort of.

Aku biasanya anggap error ni lebih kepada kuantitatif. Yang boleh diukur. So kita boleh define.

Dan mistake ni pula lebih kepada kualitatif. Mistake in judgement contohnya.

Dan kalau error pulak.. Emm kalau macam dalam programming, error lebih kepada nak bagitau yang "this is bad and this thing shouldn't be happen". Quite qualitative IMHO but still, I'm going to make it as kuantitatif.

Sebab apa. Sebab error yang keluar dari programming is actually something that we can define clearly. It's not like it will have infinity kind of error. Just a small set that we can actually think of. Contohnya untuk aplikasi yang buat connection ke database. So the possible error that we can think of:

  • Error connection to the database at service layer (network blocked atau service database tak up).
  • Error username password (sebab policy kene expiry password after 3 months)
  • Error establishing connection (sebab connection pool dah penuh)
  • ... and et cetera

This is categorized kind of data that we can easily clearly define.

So it is not a mistake.

A mistake in here would be something like this.

  • Aku tak check connection tu ok ke tak sebelum hantar data dan database aku tak resiliant (tak autoup kalau major catastrophe berlaku).
  • Aku tak ikut policy kene tukar password.
  • Salah aku sebab aku ni tak kira connection pooling from queue incoming request ke apa yang database aku boleh handle.
  • ... and et cetera

Right.

...

But for every app, they have their own unique error which was caused by some mistake. 

Tapi aku lagi suka how error is defined kalau dalam matematik dan statistik. Error is clearly and easily defined as some outcome yang tak sepatutnya berlaku (but yet, we are expecting it to happens).

Basically, in contrary with app that we build, in math and stats, there's a standard way for us to measure the error.

Hear me out fam. The most basic way in calculating error in math/stats are using these methods:

MAE (Mean Absolute Error).

So let say aku ada some sort of linear based model, I can use MAE to determine the mean of the error. Equation dia senang je, camni.

\[ \text{MAE} = \frac{1}{n} \sum_{i=1}^{n} |\hat{y}_i - y_i| \] 

Take a look at \( |\hat{y}_i - y_i| \). So dia dapatkan mean dari absolute value beza antara observed value (atau data yang kita ada, and we call it as \( y_i \)) dengan result dari kita punya forecast punya data (\( y \) yang ada topi atas dia, we call it as y hat or \( \hat{y}_i \) - I'm not kidding. Memang dia dipanggil y bertopi). 

So this one is straight forward. Kita ambil positif dan kita dapatkan mean (average, sort of) untuk jumlah (absolute) error dia tu.

MSE

Ok yang ni pulak, kejam sikit. Basically, dia akan penaltikan kalau error dia makin tinggi.

\[ \text{MSE} = \frac{1}{n} \sum_{i=1}^{n} (\hat{y}_i - y_i)^2 \]

Biasa kita gunakan MSE ni untuk nak measure precision model yang kita guna tu.

Contoh,

Katakan nilai \( |\hat{y}_i - y_i| \) untuk \( i \in \{1, 2, 3\}\) ialah \( \{1, 4, 7\}\).

So untuk MAE, kita akan dapat \( \text{MAE} = 4 \) dan \( \text{MSE} = 22 \).

Ok nampak macam biasa je kan. Normal lah tu dua tu guna measurement berbeza.

Tapi, katakan nilai \( |\hat{y}_i - y_i| \) untuk \( i \in \{1, 2, 3\}\) ialah \( \{1, 1, 11\}\).

So, \( \text{MAE} = 4 \) dan \( \text{MSE} = 34 \).

See right? MSE lebih kepada nak tengok precision dia dan dia akan penaltikan kalau error dia tinggi. MAE tak pulak. Sebab MAE cuma pentingkan overall beza dia sahaja.

...

Now, for defining error, picking up the correct method untuk dapatkan objektif adalah penting. Otherwise, it will be a mistake.

So when I'm saying i'm doing a big mistake, that's mean there's an error in my judgment. And to be fair, in my life, I should be using MSE-like method to capture and measure my mistake.

The bigger error I have done, the more penalty that I should serve.

No, I'm not kind of sadist. Cuma, kalau aku bernasib baik, aku boleh turn around and fix again myself, seperti mana deep learning tu berlaku (whats with backward propogation and stuff.. nanti kita citer pasal ni).

But the only problem is that. Kalau tak bernasib baik. Melibatkan banyak pihak.

Macam mana tu?

Tanggung je lah.

Nak buat apa lagi.

Stress aku.. 

And people said thaat, we can't always fix what is already broken. 

But to be honest, I'm not fully agree with this..

Islam is the true way of life. There exist a solution for any kind of problem. Including mine.

Dan kepada siapa lagi kita mohon bantuan selain dari Yang Maha Pemurah lagi Maha Penyayang. Surely He will help me to soothing my heart..

"Kena banyakkan beristighfar", kata kawanku 20 tahun lepas...

Tiada ulasan:

Catat Ulasan

terima kaseh :)