Halaman

Khamis, 8 Ogos 2024

Clustering

0 comments

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

...

Prolog.

"Akhirnya, saya dah jumpa satu circle yang saya rasa sangat selesa bersama - sama", katanya.

Aku terdiam.

Sebenarnya aku jeleous. Ya. Sebab aku takde pon satu circle yang aku boleh katakan, yang aku sangat selesa to be with...

...

Beberapa ketika lepas. Officemate aku tanya, "Fairuz, you boleh tolong suggest tak?"

"Ha apa dia"

So dia terangkanlah ada beberapa use case yang tengah sangkut sekarang. Kesahnya, sekarang ni ada data geolocation (yang ada latitude dengan longitude) di mana berlakunya tangkapan di laut. So sekarang dia nak suggest tempat rondaan atau berapa kapal yang dicadangkan untuk membuat rondaan di kawasan tersebut.

Aku cakaplah kat dia, "Kalau kat laut, senang. Sebab takde restriction untuk lalu laluan macam jalan raya"

"Meaning?" tanyanya lagi.

"Ok kalau kat laut, data yang melibatkan (x, y) iaitu location, nak paling mudah sekali analisis kita boleh buat, kita boleh gunakan teknik clustering".

Ok sebenarnya clustering ni tak de la strict sangat nak location x,y. Anything with 2 demensional data pon boleh juga. 

...

Anyway, basically untuk clustering ni, dia akan associatekan setiap data point tu ke cluster yang berdekatan.

So let say kita ada 300 sets of data yang quite random macam kat bawah ni.

^ Figure 100: Random points generated

(abaikan kaler - kaler tu) So contohnya aku ada 5 kapal dan point - point tu merujuk kepada lokasi tangkapan berdasarkan jenis - jenis tangkapan (colour coded).

Now, macam mana aku nak maximizekan, i.e. gerakkan kesemua (lima) kapal tersebut meronda di kawasan yang pernah terjadinya tangkapan tersebut, tetapi, memastikan setiap kapal dekat dengan historically/sejarah tangkapan.

So where to put those 5 ships? Using math of course.

We start with simplest type of clustering. K-Means.

Objective Function for K-Means basically can be defined it as below. 

\[ J = \sum_{i=1}^{k} \sum_{j=1}^{n} \left\| \mathbf{x}_j^{(i)} - \boldsymbol{\mu}_i \right\|^2 \label{kmeans}\tag{1} \]

with,

  • \( \boldsymbol{k} \) tu jumlah cluster yang kita define.
  • \( \mathbf{x}_j^{(i)} \) adalah \( j \) data point in cluster \( i \)
  • \( \mu_i \) is the centroid of cluster \( i \)
  • \( \left\| . \right\| \) pulak adalah distance (biasa kita gunakan Euclidean Distance.

Now see here. Yang paling penting adalah untuk nak minimizekan \( \boldsymbol{J} \), which means to get the minimum distance for each point to cluster centroid.

Ok cenggini. Contoh kalau kita gunakan equation $\ref{kmeans}$ kat data yang kita ada sebelum ni, kita akan dapat camni ha.

^ Figure 101: K-Means Clustering

Idea dia, setiap point tu, akan pergi ke centroid yang terdekat. So jadinya macam ni.

^ Figure 102: K-Means Clustering with line connected to centroid

Also notice that yang dekat2 antara dua cluster tu, dia akan pilih the nearest cluster. So basically dia macam ni dari hasil kiraan dia.

^ Table 100: Distance Point to Cluster Center.

So all the distance ni yang paling kecik yang dia dapat untuk minimizekan objective function $\ref{kmeans}$ tu. And of course, ianya dikuasa duakan untuk kasi penalti kepada yang makin jauh (remember the equation for Mean Square Error? Ya. Sama konsep).

Ok yang ni biasanya kita cakap dia sebagai hard clustering. Means that setiap satu points hanya akan sambung ke satu cluster centroid sahaja. So all points ni kita panggil as a cluster member.

Contohnya la kan, kita ada data lokasi kedudukan orang ramai - ramai kat dalam dewan. So nak letak budak sales, kita boleh gunakan ni untuk carik lokasi terbaik (centroid) yang berdekatan dengan setiap orang. So kalau ada 3 budak sales, kita buat 3 cluster. Ok ni theoritically lah.

Tapi, kadang - kadang, tak semestinya setiap point tu boleh connect ke satu cluster centroid sahaja. Boleh jadi satu point tu akan connect ke beberapa centroid. Dia agak fuzzy - fuzzy sikit (sebab bayangkan satu point boleh pergi ke dua tiga cluster).

And that is why nama untuk teknik ni adalah Fuzzy C-Means (FCM). And yes. This is Artificial Intelligence method (kategori fuzzy logic).

So the idea for FCM, dia akan associatekan satu point ni ke semua cluster centroid dan dia akan kira jarak dia.

Macam biasa, objektive function dia adalah untuk minimizekan this \( J \).

\[ J_m = \sum_{i=1}^{k} \sum_{j=1}^{n} u_{ij}^m \left\| \mathbf{x}_j - \boldsymbol{\mu}_i \right\|^2  \label{fcm}\tag{2}\]

dimana,

  • \( \boldsymbol{\mu}_i = \frac{\sum_{j=1}^{n} u_{ij}^m \mathbf{x}_j}{\sum_{j=1}^{n} u_{ij}^m} \) is the centroid at \( i \).
  • \( u_{ij} = \frac{1}{\sum_{l=1}^{k} \left( \frac{\left\| \mathbf{x}_j - \boldsymbol{\mu}_i \right\|}{\left\| \mathbf{x}_j - \boldsymbol{\mu}_l \right\|} \right)^{\frac{2}{m-1}}} \) is the membership.
  • \( m \) is fuzziness parameter (\( m > 1 \). Lagi tinggi \( m \), lagi kabur mata.

Ok nampak bukan. Dia lebih kurang sama je dengan K-Means clustering, cuma tambah fuzziness parameter dengan cara dia update membership cluster dia. Ok there's a lot story behind the "membership". But the idea is that, kita akan connect semua points tu ke cluster and kira jarak, dan anggap je jarak tu sebagai dia punya weightage. 

Boleh refer kat figure bawah ni.

^ Figure 103: Fuzzy C-Means Clustering

The story is like this..

Aku, seorang manusia biasa, boleh belong to all cluster - cluster member aku (kalau aku ni jenis yang ok lah dengan semua orang). Korang pon boleh nampak kan. Yang sorang ni ada geng - geng dia. Yang sorang lagi tu pon ada geng - geng dia jugak. Ada jugak yang dia boleh overlap beberapa geng.

But the most important, diorang ada geng diorang sendiri. In psychology, we (they) call it as "Social Identity Theory". You belonging to one close group. Atau satu komuniti. Yang ada benifit atau some target or positive thing they feel kalau dia ada dalam group/komuniti tu.

...

So apabila kawan aku cakap dia dah jumpa close circle dia, means dia dah betul - betul berada di area dalam satu cluster dengan jarak ke centroid cluster dia sangat rendah (remember, in clustering we are trying to find the minimum distance?).

And why aku jelous.

Basically macam graph bawah ni.

So I try to figure out. Why like this. Aku ni takde ke Social Identity?

Several explaination that I found out actually. One, maybe sebab dah ada family. Kawan - kawan aku pon ada macam ni gak. But later I found out, it is not. Sebab diorang duduk sekali dengan family dia. Aku pulak, well.. aku malas pulak nak citer ni. But the main point, this is not the reason.

Secondly, maybe sebab ada social media, to fill in the gap of the closeness by fitting oneself to social media. Remember Social Identity Theory tu? And also korang tau kan macam mana algorithm social media ni berfungsi? Lagi banyak korang tengok feed/video pasal satu topic tu, algo akan define ko kat dalam some sort of category. 

But I don't think because of that. Aku takde pon main social media sangat. Ada tengok. But not feeling to be a part of it.

Or maybe.

Maybe..

Disebabkan alasan nombor tiga ni:

The kind of guy yang tak boleh rapat dengan mana - mana group.

...

Several weeks ago, Pika ada citer kat aku. Dia kata aku ni jenis kalau orang rapat je dengan aku, nanti aku akan ghostingkan dia. Aku mula menjarakkan diri.

To be honest. Ya. Aku memang macam ni. Makin lama, makin rapat. Makin rapat tu, aku mula lah menjarakkan diri. Tak kesah. Lelaki atau perempuan. Same!

I don't have valid reason kenapa aku macam ni..

Maybe..

I was build like this.

Enough. That's all reasoning that I need.

Bukan aku tak ada kawan rapat. Ada. In fact, aku buat blog ni pon sebab dialah yang 'force' aku buat blog (tengok balik my first post in 2006: here). Ya kawan rapat aku tu is actually my "Social Identity". Aku pergi mana - mana jumpa kawan mutual kitorang, mesti diorang akan tanya, "Raje, kucai mana?".. But unfortunately, dia dah pergi meninggalkan kita semua. Including me.

So I was left with a big hole in my life. Right.. That's is where the jelousy comes in (I force to think that, that is the main reason).

And makin tak lah aku nak rapat dengan orang...

In the end, actually I know the reason.

If I left this world, I wanted to be the furthest from all cluster that is associated with me. So at least diorang ni takde la rasa terluka sangat kan, kalau aku takda?

Khamis, 18 Julai 2024

Kemahiran Berfikir Secara Kritis dan Kreatif, KBKK: Consequence and Sequel

0 comments

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

Antara subjek yang paling aku suka masa belajar kat sekolah menengah dulu adalah subjek KBKK, Kemahiran Berfikir secara Kritis dan Kreatif. Masa tu, tahun 2000 - 2001, aku dalam Form 4 dan Form 5. Dan bagi aku, memang just nice je belajar ni sebelum masuk ke alam universiti. You know, universiti.. Kene berdikari. Kat sekolah dulu semua kene suap.. So from now on, all the decision is on you.

Ok aku suka, sebabnya subjek ni banyak mengajar cara untuk berfikir diluar kotak, memahami masalah dan merungkai situasi untuk membuat keputusan yang bijak. Ada banyak topik dalamnya. Antaranya adalah AGO (Aim, Goal dan Objective - cara nak set target), PMI (Plus, Minus dan Interesting, dissecting issue untuk membuat pilihan) dan satu lagi (yang aku nak citer ni), adalah C&S, iaitu Consequence and Sequel.

Basically , C&S ni lebih kepada nak melihat apa yang akan berlaku kalau sesuatu keputusan yang dibuat (aku google balik untuk confirmkan term ni.. sayangnya tak ramai yang upload cerita pasal KBKK tools ni). Ianya lebih kepada susunan ramalan apa yang akan berlaku berdasarkan,

  1. Short term, (biasa orang assume before 2 years dari masa akan datang)
  2. Intermediate term (assumption: 2 to 5 years), dan
  3. Long term (lebih dari 5 years).

So you see right? C&S ni kita gunakan (dengan tools2 lain) untuk merangka apa yang akan berlaku (consequence) dari masa terdekat sehingga ke masa jauh (dia punya sequel). *But don't hold the 2 years, 5 years tu as a fix value. It's all about our own specific use cases.*

Jadi contohnya (contoh yang paling simple), kalau aku decide untuk sambung PhD, the C&S would be,

  1. Short term: Kene spend banyak resources (time and money) untuk archive PhD. Need to read lots of books/papers and refining back basic knowledge.. Which is resource intensive.
  2. Intermediate term: New knowledge acquired. Dan apa yang kita belajar dan achieve tu tak semestinya akan digunakan di alam pekerjaan.
  3. Long term: Requires sustainability knowledge tersebut. Lepas belajar, kene pandai - pandai apply atau rajin buat research paper. Otherwise, your PhD will be just "on paper".

Now you see. Ianya lebih kepada if this thing happens, what it will do in the future. If I set a rule for myself now, apa impak dia masa hadapan.

Also the thing is, we don't restrict the future to ourself. The future will also impacting the people around us. So kalau Short term dalam contoh tadi tu, aku kene banyak habis masa untuk belajar, means I will have significantly less time for my kids. So kalau aku nak buat keputusan adakah better untuk aku ambil PhD atau tak, will leads to the same question like adakah aku sanggup kurangkan masa aku kat anak - anak aku?

Right.

(Terus terangnya) aku tak rasa ada orang baca blog aku ni, but if you are coming from Computer Science area, it will be a little bit macam Finate State Machine. Ingat lagi tak?

...

Ya. Finate State Machine. Atau FSM.

For every action from a state, akan ada state transition. Dan from THAT state transition, it will go to another state. Something like this,

Let say \( S_A \) is the state where A is true (to simplify, kita panggil je State A) and \( S_B \) is the state where B is true (again, State B). Macam mana State A boleh pergi ke State B, adalah berdasarkan transition function, atau \( \delta(S_A, Action) \) dan \( Action \) tu merujuk kepada apa yang State A buat untuk menjadikan \( \delta \) atau transition tu berlaku.

Likewise, kat dalam C&S kita guna FSM but using more chain. To simplify, kita boleh buat model,

\( S_A \) adalah state sekarang. \( S_B \) adalah state untuk short term akan datang. \( S_C \) adalah state untuk intermediate term dan \( S_D \) adalah long term. So we can define \( \delta(S_A, Action) \) untuk transition menjadikan State B true.

\( \delta(S_B, Action from \delta(S_A, Action)) \) is the transition to let State C true... Sama juga, seterusnya untuk \( D \), \( S_D \).

Kita ambil contoh yang sama sebelum ni,

 

+-----------+  Short Term   +-----------------+
| Ambil PhD | ------------> | Habis resources |
+-----------+               +-----------------+
     ||                             ||
     || Short Term                  || Intermediate Term
     \/                             \/
+------------------+         +---------------+
| Explore new Idea |         | New Knowledge |
+------------------+         |   Unlocked    |
        /|\                  +---------------+
         |                          ||
         |                          || Long Term
         |                          \/
         |    Short Term     +----------------+
         +------------------ | Sustainability |
                             +----------------+

Nampak menarik bukan? Now instead of kita guna C&S untuk lakar future, we can actually try to get back apa yg kita dapat from Long Term impact, i.e. exploring new idea, using the combination of C&S and FSM.

...

Now, the PhD is actually just an example. Kalau betul aku nak ambil PhD, my weightage should be apa yang aku nak achieve from that PhD. Ilmu baru? Contribution to the society? Basically define weightage from the Long Term. But that weightage, (yang nanti aku akan cerita lain kali pasal weightage ni, insyaAllah kalau aku ingatlah), should also carry apa yang berlaku kat keliling aku.

It is something sama macam masa aku plan for my new target in 1446H. Ya. Tak abis lagi citernye.

The thing is that, my target for new year in Hijri will always has to be something yang berat. Yang perlukan consistancy. But it doesn't have to be terus selepuk. Step by step. Sama macam kita citer C&S tadi tu. Start with simple things (for short term) and goes to yang major (for long term).

Tapi..

We live by looking at example that happens around us. And for me, aku selalu nampak orang yang baik - baik, yang beriman, selalu diuji dengan seberat - berat dugaan. Aku tengok sendiri kawan - kawan aku ustaz, diberikan dugaan sampai terduduk. Kawan - kawan aku yang ayah dia alim - alim, tengok pulak kawan aku tu hancur perangainya. Aku sendiri pon fikir kalau aku ada ditempat dia, mungkin aku give up

Sangat berat.

Aku sentiasa fikir, if I'm going towards that route, will I be able to handle it (time datang dugaan tu). Am I still able to keep my sanity?

Ustaz - ustaz selalu pesan, makin kita upgrade amal ibadah diri kita, makin kuat kita diuji. Dan kita diletakkan dibumi Allah ini untuk diuji. Kita akan sentiasa dapat pilihan untuk membuat yang baik atau sebaliknya.

Malah, ianya dinyatakan di dalam Al-Quran.

Patutkah manusia menyangka bahawa mereka akan dibiarkan dengan hanya berkata: "Kami beriman", sedang mereka tidak diuji (dengan sesuatu cubaan)? Dan demi sesungguhnya! Kami telah menguji orang-orang yang terdahulu daripada mereka, maka (dengan ujian yang demikian), nyata apa yang diketahui Allah tentang orang-orang yang sebenar-benarnya beriman, dan nyata pula apa yang diketahuiNya tentang orang-orang yang berdusta.

- Al-Ankabut. 29:2,3

Apa pon pilihan aku, tetap akan diuji. Apa yang aku pilih untuk transition state itu dan akan ke state mana, itulah yang ujiannya. Which \( \delta \) will I choose.

I know. My target is clear. Dan kita hidup ini adalah semata - mata untuk mendapatkan keredhaan Allah SWT.

Cuma.. To be better.. Mungkin aku secara tak langsung mencari - carik alasan.. mengelak.. sebab takut for the uncertainty of the future. Takut kat the consequencenya..

Atau mungkin aku takut aku tak dapat buat.. tak dapat sustain..

Apa pon, this is the path yang aku pilih.

Because,

I wanted to be better.

I aim to be a better person.

And I’m dreaming to be a better family member, a better friend and a better neighbour..

.. And it all should begins with building a stronger relationship with the Almighty Creator.

Doa - doalah apa yang kita hajatkan, akan dicapai. Dan semoga apa pon pilihan kita, semoga semuanya dipermudahkan Allah.

InsyaAllah..