k-means-এর মতো একই দুটি ধাপ — তবে soft।
k-means জিজ্ঞেস করে “কোন centroid সবচেয়ে কাছে?” এবং প্রতিটি পয়েন্টকে একটি বেছে নিতেই হয়।
একটি mixture model জিজ্ঞেস করে “এই পয়েন্টটি component j থেকে আসার সম্ভাবনা কতটুকু?”
আর উত্তরটি হলো কতগুলো ভগ্নাংশ যাদের যোগফল 1, যাদের বলা হয় responsibilities।
E-step প্রতিটি পয়েন্টের জন্য সেই ভগ্নাংশগুলো আবার হিসাব করে; M-step প্রতিটি component
— তার weight, তার mean এবং তার covariance — সব পয়েন্ট ব্যবহার করে আবার fit করে,
যেখানে প্রতিটি পয়েন্টের ওজন হয় ওই component সেটির কতটুকু মালিক তার ভিত্তিতে। পুরো অ্যালগরিদম এটুকুই।
দুটি ধাপ: Expectation এবং Maximization।
যা চেষ্টা করে দেখার মতো:
1. Overlapping, k = 2। চালান, তারপর দুটি blob-এর মাঝের অংশটিতে তাকান: ওই পয়েন্টগুলো চিরকাল
ঘোলাটেই থেকে যায়, কারণ সেগুলো সত্যিই দ্ব্যর্থক এবং model সেটাই বলছে। পয়েন্টগুলোর মাত্র 64%
কখনো কোনো এক দিকে 90%-এর বেশি প্রতিশ্রুতিবদ্ধ হয় — Three blobs-এ সেই সংখ্যাটি
100%। k-means-এর কাছে এই পার্থক্য প্রকাশ করার কোনো উপায় নেই: তাকে প্রত্যেকটিকেই কোনো এক দিকে
তুলে দিতে হয়। mixture model ব্যবহারের পুরো কারণই এটি: অনিশ্চয়তাটুকুও উত্তরের অংশ।
2. Elongated, k = 2। Full দিয়ে দুটি ellipse হেলে গিয়ে সিগারগুলোর দৈর্ঘ্য বরাবর শুয়ে
পড়ে, আর প্রতিটি পয়েন্ট সঠিকটিতেই পড়ে। এবার Circular চেপে আবার চালান: গোল হতে বাধ্য হওয়ায়
component-গুলো দুটি সিগারকে আলাদা করা বন্ধ করে দিয়ে সেগুলোর আড়াআড়ি কাটতে শুরু করে —
মাত্র প্রায় 65% পয়েন্ট সঠিক গ্রুপে পড়ে, আর log-likelihood −1962 থেকে নেমে −2102
হয়। এটাই মোদ্দা কথা: k-means আসলে একটি mixture model, যার component-গুলো বৃত্তাকার ও সমান আকারের
এবং assignment কঠোর। k-means-এর তুলনায় GMM যা কিছু বাড়তি দেয়, সবই ওই একটি শব্দে —
covariance।