পাঠ ৩ · ২৮-এর মধ্যে · মডিউল ১

Probability Density Estimation

Density estimation — the heart of generative modeling
৭ মিনিট পড়া উচ্চ · Advanced Histogram · KDE · Gaussian

এই পাঠে যা শিখবেন

  • Density এবং Distribution-এর গাণিতিক পার্থক্য
  • Non-parametric (histogram, KDE) ও parametric (Gaussian fit, GMM) পদ্ধতি
  • Maximum Likelihood Estimation (MLE) — generative training-এর মূল objective
  • High-D-তে density estimation কেন কঠিন — এবং neural approach কেন প্রয়োজন

১ · Density কী

Probability Density FunctionPDFএকটি function $p(x)$ যা প্রতিটি point-এ "ঘনত্ব" বলে। Continuous variable-এ probability শূন্য একটি point-এ — কিন্তু density (per unit volume) থাকে। Integral $\int p(x) dx = 1$। $p(x)$ — একটি function যা প্রতিটি $x$-এ "কত ঘন" data — সেটা বলে। Discrete-এ আমরা probability mass বলি $P(x)$; continuous-এ density $p(x)$।

Density-র দু'টি মূল constraint:

$$p(x) \geq 0 \quad \text{সর্বদা}, \qquad \int_{-\infty}^{\infty} p(x) \, dx = 1$$

গুরুত্বপূর্ণ পার্থক্য

Density $p(x_0)$ probability নয় — এটি $1$-এর চেয়ে বড়ও হতে পারে।
Probability পেতে integral দরকার: $P(a \leq x \leq b) = \int_a^b p(x) \, dx$।
Continuous-এ exact point-এ probability শূন্য।

২ · Density estimation — মূল প্রশ্ন

আমার কাছে $n$টি sample আছে — $x_1, x_2, \ldots, x_n$ — কোনো অজানা distribution থেকে। প্রশ্ন: এই sample থেকে underlying $p(x)$ recover করি কীভাবে?

ভাবুন আপনি ঢাকায় ১,০০০ জনের বাসস্থানের location plot করলেন — Google Maps-এ ১,০০০ pin। কোথায় pin বেশি ঘন (গুলশান, ধানমন্ডি)? কোথায় বিরল (পূর্বাচল)? এটাই density estimation — discrete pin থেকে continuous "ঘনত্বের ছবি" বানানো।

৩ · Histogram — সবচেয়ে সরল

$x$-এর range-কে $K$টি bin-এ ভাগ করুন। প্রতিটি bin-এ কতগুলো sample পড়ছে গুনুন। তারপর normalize করুন:

$$\hat{p}(x) = \frac{\#\{x_i \in \text{bin}(x)\}}{n \cdot \text{bin width}}$$

সমস্যা:

  • Bin width বাছা arbitrary — অনেক bin = noisy; অল্প bin = oversmooth।
  • Discontinuous (step function) — derivative নেই।
  • $d$-D-তে $K^d$ bin দরকার — exponential explosion। $d = 10$-এ ১০ million bin!

৪ · Kernel Density Estimation (KDE)

Histogram-এর smoother বিকল্প। প্রতিটি sample-এর জায়গায় একটি ছোট bell-curve (kernel) বসান, তারপর সব যোগ করুন:

$$\hat{p}(x) = \frac{1}{n h} \sum_{i=1}^{n} K\left(\frac{x - x_i}{h}\right)$$

যেখানে $K$ একটি kernel (সাধারণত Gaussian), $h$ bandwidth (smoothing parameter)। ছোট $h$ = wiggly; বড় $h$ = oversmooth।

সুবিধা: Smooth, continuous, derivative আছে।
সমস্যা: Storage = $O(n)$ (সব sample রাখতে হয়); high-D-এ এখনো ব্যর্থ।

৫ · Parametric — Gaussian fit

Distribution-এর shape আগে থেকে assume — তারপর parameter fit। সবচেয়ে common: Gaussian।

$$p(x; \mu, \sigma^2) = \frac{1}{\sqrt{2\pi\sigma^2}} \exp\left(-\frac{(x-\mu)^2}{2\sigma^2}\right)$$

Maximum Likelihood EstimationMLEParameter বাছার সবচেয়ে common method — যে parameter-এ training data-র probability সর্বোচ্চ। Generative AI-র সব training (LLM, VAE, Flow) MLE-এর কোনো না কোনো রূপ। দিয়ে — best $\mu, \sigma$ বের করি যেখানে training data-র total probability সর্বোচ্চ:

$$\hat{\mu} = \frac{1}{n} \sum_{i=1}^{n} x_i, \qquad \hat{\sigma}^2 = \frac{1}{n} \sum_{i=1}^{n} (x_i - \hat{\mu})^2$$

সুবিধা: অল্প parameter (২টি), efficient, scalable।
সমস্যা: Real data প্রায়ই Gaussian-এর মতো না — multimodal, skewed, heavy-tailed।

৬ · Gaussian Mixture Model (GMM)

একটিই Gaussian যথেষ্ট না? — কয়েকটি যোগ করুন:

$$p(x) = \sum_{k=1}^{K} \pi_k \cdot \mathcal{N}(x; \mu_k, \Sigma_k), \quad \sum_k \pi_k = 1$$

$K$ component, প্রতিটির নিজস্ব mean, covariance, weight। EM algorithmExpectation-MaximizationGMM, HMM-র parameter শেখার iterative algorithm। E-step: assignment guess। M-step: parameter update। Converges to local optimum। দিয়ে fit।

GMM ১৯৭৭-এর Dempster-Laird-Rubin paper থেকে — speech recognition (পূর্ব-DL যুগে), anomaly detection, customer segmentation-এ অপরিহার্য।

৭ · Curse of dimensionality — high-D-এর সমস্যা

১-D-এ KDE perfectly কাজ করে। ১০-D-এ আংশিক। ১,০০০-D-এ (একটি ছবির অর্ধেক)? — সম্পূর্ণ ব্যর্থ।

  • $d$-D-এ density estimation-এর sample complexity $O(n^{-1/(4+d)})$ — exponentially deteriorate।
  • ৩২×৩২ RGB ছবি = ৩,০৭২-D। এ space-এ KDE meaningless।
  • Volume-এর প্রায় সবটুকু "edge"-এ — center "empty"।
Real generative AI-তে naive density estimation কাজ করে না। তাই Normalizing Flow (যা invertible neural network), Diffusion, VAE — এগুলো invent হয়েছে। সব fundamentally density estimation, কিন্তু high-D structure exploit করে।

৮ · Modern density estimator — preview

  • Autoregressive (PixelCNN, GPT): $p(x) = \prod_i p(x_i | x_{
  • Normalizing Flow: Invertible neural network — exact likelihood compute।
  • VAE: Variational lower bound — approximate likelihood।
  • Diffusion: Score function $\nabla_x \log p(x)$ — density-র gradient শেখে।
  • GAN: Implicit — likelihood compute করে না, শুধু sample।
Density Estimation — চারটি approach same data → different methods 📊 Histogram stepped, simple, 1-D ok 〰️ KDE smooth, kernel sum 🔔 Gaussian (parametric) μ 2 params (μ, σ) 🎯 GMM (mixture) K Gaussians + weights ⚠️ All fail in high-D — Neural methods (Flow, VAE, Diffusion) needed.
একই ডেটা — চারটি ভিন্ন density estimator। ১-D-এ ভালো কাজ; high-D-এ neural method দরকার।

৯ · Python-এ density estimation

NumPy ও SciPy দিয়ে চারটি method একসাথে।

Python · NumPy + SciPy
import numpy as np
from scipy import stats
import matplotlib.pyplot as plt

# একটি bimodal distribution থেকে sample (২টি Gaussian-এর mix)
np.random.seed(42)
data = np.concatenate([
    np.random.normal(-2, 1, 300),   # cluster 1
    np.random.normal(3, 0.5, 200)   # cluster 2
])

x_grid = np.linspace(-6, 6, 200)

# (1) Histogram
hist_density, bins = np.histogram(data, bins=30, density=True)

# (2) KDE
kde = stats.gaussian_kde(data, bw_method=0.3)
kde_density = kde(x_grid)

# (3) Single Gaussian fit (MLE)
mu, sigma = data.mean(), data.std()
gauss_density = stats.norm.pdf(x_grid, mu, sigma)

# (4) GMM (sklearn)
from sklearn.mixture import GaussianMixture
gmm = GaussianMixture(n_components=2).fit(data.reshape(-1, 1))
gmm_density = np.exp(gmm.score_samples(x_grid.reshape(-1, 1)))

print(f"Single Gaussian: mu={mu:.2f}, sigma={sigma:.2f}")
print(f"GMM components: means={gmm.means_.flatten().round(2)}")
print(f"GMM weights: {gmm.weights_.round(2)}")
print("\n→ একটি Gaussian bimodal data fit করে না ভালো; GMM করে।")

    
Output-এ দেখবেন GMM-এর দু'টি component প্রায় -২ ও +৩-এ — true mean-এর কাছে। Single Gaussian mean ~০.৬-এ — দুই cluster-এর মাঝখানে — completely wrong। Model choice matters।

১০ · Maximum Likelihood — MLE-র গভীরে

Generative AI-র train objective প্রায় সবসময় MLE-র কোনো রূপ। Idea: training data-র total log-likelihood সর্বোচ্চ করুন:

$$\theta^* = \arg\max_\theta \sum_{i=1}^{n} \log p_\theta(x_i)$$

LLM-এ এটাই "next-token prediction"। GPT train মানে — Wikipedia-র প্রতি token-এর likelihood maximize। VAE-তে — ELBO (lower bound on likelihood)। Diffusion — denoising loss = noisy likelihood।

একটি গভীর insight: MLE = $\min$ KL-divergence between empirical distribution এবং model distribution। Generative AI-র সব training এই KL minimization — শুধু parameterization আলাদা।

ভাবনার প্রশ্ন

প্রতিটি প্রশ্ন নিজে কিছুক্ষণ ভাবুন — তারপর "→ উত্তর" চাপুন।

প্র ০১ "Curse of dimensionality" density estimation-কে কীভাবে ভাঙে — ঠিক কোন গাণিতিক phenomenon-এ? এবং deep generative model কীভাবে এই curse এড়ায়?

Bellman ১৯৬১-এ "curse of dimensionality" শব্দটি ব্যবহার করেন। Density estimation-এ এটা সবচেয়ে devastating।

গাণিতিক phenomenon — ৫টি দিক:

  • (১) Volume concentration: $d$-D unit cube-এ thin shell-এ (boundary)-এ volume-এর $1 - (1-\epsilon)^d \approx 1$ যেখানে $d$ বড়। ১,০০০-D-এ ৯৯.৯৯% volume edge-এ — center "empty"।
  • (২) Distance concentration: high-D-এ random point pair-এর distance প্রায় constant। "নিকটতম" আর "দূরতম"-এর পার্থক্য vanishingly small (Beyer et al., ১৯৯৯)।
  • (৩) Sample sparsity: Naive estimator-এ $n^{-1/(4+d)}$ rate। $d = 100$-এ — $\epsilon = 0.1$ accuracy পেতে $n = 10^{40}$ sample দরকার। universe-এর atom-এর চেয়ে বেশি।
  • (৪) Neighborhood empty: KDE বা k-NN-এ "neighbor-এর density"-এর জন্য পর্যাপ্ত neighbor সংগ্রহ করতে — bandwidth space-এর প্রায় সবটুকু cover করতে হয়।
  • (৫) Integration intractable: Normalization constant $\int p(x) dx$ compute অসম্ভব high-D-এ।

Deep generative কীভাবে এড়ায়:

  • Manifold hypothesis exploit: Real data $\mathbb{R}^{d}$-এর ক্ষুদ্র manifold-এ থাকে। ৩২×৩২ ছবি technically ৩,০৭২-D, কিন্তু "natural images" হয়তো ৫০-D manifold-এ।
  • Inductive bias via architecture: CNN spatial locality assumes; Transformer attention pattern; Diffusion smooth interpolation। এই bias দিয়ে effective dimensionality কমে।
  • Factorization: Autoregressive $p(x) = \prod p(x_i|x_{
  • Latent variable models: $p(x) = \int p(x|z)p(z)dz$ যেখানে $z$ low-D। VAE, GAN — দু'টোতেই।
  • Score-based: Diffusion শুধু $\nabla_x \log p(x)$ শেখে — full density compute না করেই sample।
  • Implicit modeling: GAN density compute না করে শুধু sample — likelihood evaluate এড়ায়।

Theoretical foundation:

  • Manifold dimension $m \ll d$ হলে — sample complexity $n^{-1/(4+m)}$ — $d$-এর উপর depend করে না।
  • Universal approximation theorem — neural network যেকোনো smooth function approximate করতে পারে।
  • SGD-এর implicit regularization — flat minima generalize ভালো।

একটি practical example:

  • StyleGAN ১৬,৩৮৪-D image space-এ photorealistic faces generate করে।
  • কিন্তু "human faces" হয়তো ৫০০-D manifold-এ।
  • Latent $z \in \mathbb{R}^{512}$ এই manifold parametrize করে।
  • Curse এড়ানো গেছে — কারণ inductive bias + data abundance।

মূল উপলব্ধি: Curse of dimensionality গাণিতিকভাবে অপরিহার্য — কিন্তু real data low-D structure-এ থাকে। Deep generative model এই structure শেখে। তাই "curse" না — বরং "blessing of structure"। এটাই deep learning-এর philosophical foundation।

প্র ০২ Maximum Likelihood Estimation (MLE) — generative AI-র training objective। কিন্তু MLE-র সমস্যা কী, কেন কখনো KL divergence, কখনো adversarial loss — ভিন্ন objective ব্যবহার করা হয়?

MLE statistical estimation-এর "default" — Fisher (১৯২২)-এর contribution। কিন্তু generative AI-তে MLE সবসময় ideal না।

MLE কী আসলে:

  • Goal: $\theta^* = \arg\max_\theta \mathbb{E}_{x \sim p_{\text{data}}}[\log p_\theta(x)]$।
  • Equivalent: $\arg\min_\theta \text{KL}(p_{\text{data}} \| p_\theta)$।
  • "Forward KL" — model data-এ যেখানে probability আছে, সেখানেও probability দিতে চেষ্টা করে।

MLE-র সমস্যা — ৫টি:

  • (১) Mode covering bias: MLE = forward KL = "all modes covered" — মডেল data-র সব mode include করতে চেষ্টা করে। Mode miss করলে penalty বড় (log 0 = ∞)।
  • (২) Mean over modes — blurriness: Image generation-এ MLE প্রায়ই blurry output। কারণ uncertainty থাকলে — MLE average বাছে।
  • (৩) Density ≠ perceptual quality: High likelihood মানে নয় human-perceived quality high। GAN-এর low-likelihood image often more realistic-looking।
  • (৪) Likelihood উন্নত হলেও sample খারাপ হতে পারে: Theis et al. (২০১৬) দেখাল likelihood ও sample quality decoupled হতে পারে।
  • (৫) Implicit model-এ unavailable: GAN, score-based — exact likelihood compute করে না; MLE infeasible।

Alternative objectives — কোথায় কোনটি:

  • Reverse KL (Variational Inference): $\text{KL}(p_\theta \| p_{\text{data}})$ — "mode seeking"। Single mode pick করে clean। VAE-এর ELBO এর variant।
  • JS Divergence (original GAN): Symmetric। Training stable when balanced — কিন্তু gradient vanish issue।
  • Wasserstein Distance (WGAN, ২০১৭): Geometric — earth-mover। Smooth gradient, mode collapse less।
  • Adversarial loss: Implicit metric — discriminator define করে। Sample quality-এ better।
  • Score matching (Diffusion): $\mathbb{E}\|\nabla \log p_\theta - \nabla \log p_{\text{data}}\|^2$ — normalization constant এড়ায়।
  • RLHF (modern LLM): Human preference reward — beyond likelihood। "Helpful, harmless, honest"।

Practical pattern:

  • LLM pretraining: MLE (next-token cross-entropy)।
  • LLM fine-tuning: SFT (still MLE) → RLHF (preference)।
  • Diffusion: Denoising score matching (MLE-related)।
  • GAN: Adversarial (non-MLE)।
  • VAE: ELBO (MLE lower bound)।

একটি subtle paradox:

  • MLE asymptotically optimal — infinite data + correct family-এ।
  • Real-world: family misspecified, data finite। তাই alternative objective practical-এ ভালো।
  • "Right" objective = end goal-এর সাথে aligned। Image quality? GAN। Density estimation? Flow। Reasoning? RLHF।

মূল উপলব্ধি: Objective choice = engineering decision, philosophy না। MLE perfect না, কিন্তু default starting point। Generative AI-র history অনেকটা "MLE-এর সমস্যা ও alternative-এর evolution"।

প্র ০৩ Bangladesh-এর CMSME loan default prediction-এ density estimation কীভাবে সাহায্য করতে পারে? Discriminative classifier-এর তুলনায় কী advantage?

বাংলাদেশের ৭৮ লক্ষ Cottage, Micro, Small & Medium Enterprise (CMSME) — অনেকেরই formal credit history নেই। Default prediction critical কিন্তু challenging।

Traditional approach (discriminative):

  • Logistic regression / XGBoost — features (revenue, location, sector, owner age) → default probability।
  • সমস্যা: default rate ~৩-৫% — extreme imbalance।
  • Feature missing হলে — handling tricky।
  • "Why declined?" — বুঝানো কঠিন (regulatory issue)।
  • New business pattern — train-এ ছিল না — fail।

Density-based approach:

  • Step 1: "Successful business"-এর density $p(x | \text{healthy})$ শেখা — GMM, autoencoder বা normalizing flow দিয়ে।
  • Step 2: নতুন application-এ likelihood compute। Low likelihood = anomaly = potential default।
  • Bonus: এই approach unsupervised-ও কাজ করে — যেখানে label rare।

Concrete advantages:

  • Imbalance-অসংবেদনশীল: Healthy business data-ই ৯৫%। Density model এই majority ভালো শেখে।
  • Novel pattern detection: COVID-এর মতো shock-এ — pattern shift instantly detect।
  • Missing data robust: Generative model marginalize করতে পারে missing feature।
  • Confidence quantification: Likelihood = continuous risk score। "Tier 1 (high risk), Tier 2 (mid)" — natural।
  • Synthetic counter-factual: "এই business যদি $50K loan পায় — performance কেমন হবে?" — generative model simulate।

Hybrid system — production-এ best:

  1. Layer 1: Density-based screening (broad anomaly)।
  2. Layer 2: Discriminative classifier (known default patterns)।
  3. Layer 3: Human underwriter (high-stakes decisions)।
  4. Layer 4: Continuous monitoring — distribution drift alert।

Bangladesh-specific challenges:

  • Data scarcity: CIB data limited। Alternative data (mobile usage, electricity bill, supplier transactions) দরকার।
  • Privacy regulation: Data Protection Act ২০২৩ — sensitive feature carefully।
  • Cultural pattern: "Eid season"-এ revenue spike, "monsoon"-এ dip — generative model ঋতু-aware হতে হবে।
  • Informal economy: Cash transaction dominant — formal record incomplete।
  • Fairness: Geographic, religious, gender bias avoid করতে হবে — model audit critical।

Real-world parallel:

  • India-র Credit Vidya, Lenddo — alternative data + ML credit scoring।
  • Kenya-র Tala — mobile usage pattern → credit।
  • Bangladesh-এ bKash + AI = enormous opportunity।

মূল উপলব্ধি: Density estimation শুধু academic concept না — emerging market-এ financial inclusion-এর চাবিকাঠি। যেখানে label scarce, distribution shifting, fairness critical — density-based approach essential। বাংলাদেশের পরবর্তী fintech wave এই foundation-এ build হবে।

প্র ০৪ "Likelihood = 0.95" শুনতে ভালো — কিন্তু high-D-এ likelihood প্রায়ই misleading। Nalisnick et al. (২০১৯)-এর paradox কী, এবং এটা কেন matters?

Nalisnick, Matsukawa, Teh, Gorur, Lakshminarayanan-এর ২০১৯-এর ICLR paper "Do Deep Generative Models Know What They Don't Know?" — generative AI-র সবচেয়ে disturbing finding।

The paradox:

  • CIFAR-10 ছবিতে train করা একটি Glow (normalizing flow) model।
  • Test time-এ — SVHN (door numbers) ছবি দেখানো — completely different distribution।
  • Expected: SVHN-এ likelihood low (out-of-distribution)।
  • Actual: SVHN-এ likelihood higher than CIFAR-10 itself!
  • Same pattern PixelCNN, VAE-এ replicated।

কেন এটা ঘটে — তিনটি ব্যাখ্যা:

  • (১) Pixel-level statistics: SVHN ছবি smooth — কম pixel variation। High-D Gaussian-এ smooth ছবি high likelihood। CIFAR-এর texture-rich ছবি লোয়ার।
  • (২) Volume vs typical set: High-D-এ likelihood ও typical set ভিন্ন জিনিস। True samples typical set-এ থাকে, high likelihood region-এ না সবসময়।
  • (৩) Model capacity asymmetric: Model "low-frequency" pattern শিখে, "high-frequency" structure miss করে। Smooth out-of-distribution ছবি model-এর low-freq prior-এ fit।

Why this matters — practical implications:

  • Anomaly detection unreliable: Likelihood-based anomaly detection production-এ failure-prone।
  • OOD detection harder: "Did the model see this kind of data before?" — hard to answer।
  • Model evaluation flawed: Higher likelihood ≠ better generative model। Sample quality (FID, IS) ব্যবহার করতে হয়।
  • Safety implication: Self-driving, medical AI — uncertainty estimate-এ বিশ্বাস করা ঝুঁকি।

Subsequent research — solutions:

  • Likelihood ratio (Ren et al., ২০১৯): Model likelihood / background likelihood — relative score।
  • Typicality test: "Sample-এর likelihood typical set-এর সমান?" — distribution-test।
  • Energy-based models: Learning relative density আরো reliable।
  • Ensemble + Bayesian uncertainty: Multiple model-এর agreement OOD detect।

একটি deeper philosophical lesson:

  • "Probability" আমাদের intuition mostly low-D থেকে। High-D-এ অনেক jargon counter-intuitive।
  • "More likely" ≠ "more typical" ≠ "more in-distribution"।
  • Density-র interpretation careful হতে হয় — especially neural network-এ।

Bangladesh context:

  • Fraud detection model-এ "likelihood threshold" naive use করলে — false security।
  • Medical AI-এ rare disease detect করতে — likelihood-based screening unreliable।
  • Always validate on diverse OOD data; ensemble + multiple metrics use।

মূল উপলব্ধি: Density estimation মৌলিক, কিন্তু high-D-এ subtle। "Likelihood high মানে model জানে" — naive। Modern generative AI-তে likelihood একটি signal, definitive answer না। Research community এই lesson hard way শিখেছে — production-এ এই humility important।

অনুশীলন

  1. হিসাব করুন: ৫টি data point: $\{2, 4, 4, 6, 8\}$। MLE দিয়ে best Gaussian fit করুন — $\hat{\mu}, \hat{\sigma}^2$ কত?

    $\hat{\mu} = (2+4+4+6+8)/5 = 24/5 = 4.8$

    $\hat{\sigma}^2 = \frac{1}{5}\sum (x_i - 4.8)^2 = \frac{1}{5}(7.84 + 0.64 + 0.64 + 1.44 + 10.24) = \frac{20.8}{5} = 4.16$

    $\hat{\sigma} = 2.04$।

    (Note: unbiased variance-এ divisor $n-1 = 4$ — তখন $\hat{\sigma}^2 = 5.2$।)

  2. Code চেষ্টা: $1,000$টি sample উৎপন্ন করুন একটি bimodal distribution থেকে — দু'টি Gaussian (mean -3, +3, std 1)। তারপর single Gaussian fit ও GMM(২) fit করে log-likelihood compare করুন।
    import numpy as np
    from sklearn.mixture import GaussianMixture
    from scipy import stats
    
    data = np.concatenate([
        np.random.normal(-3, 1, 500),
        np.random.normal( 3, 1, 500)
    ]).reshape(-1, 1)
    
    # Single Gaussian
    mu, sigma = data.mean(), data.std()
    ll_single = stats.norm.logpdf(data, mu, sigma).sum()
    
    # GMM
    gmm = GaussianMixture(n_components=2).fit(data)
    ll_gmm = gmm.score(data) * len(data)
    
    print(f"Single Gaussian log-lik: {ll_single:.1f}")
    print(f"GMM(2) log-lik: {ll_gmm:.1f}")
    print(f"GMM-এ improvement: {ll_gmm - ll_single:.1f}")

    GMM-এর log-likelihood অনেক বেশি — কারণ bimodal structure capture করে।

  3. ভাবুন: Daraz-এ একটি product-এর order-time pattern (ঘণ্টা ০-২৩) — কোন density estimator ব্যবহার করবেন? Why?

    Best choice: GMM বা KDE।

    • Order-time multimodal — সকাল ১০টা, দুপুর ১টা, রাত ৯টা — তিনটি peak।
    • Single Gaussian fit করবে না — unimodal assume করে।
    • Histogram discrete, derivative নেই — recommendation system-এ awkward।
    • GMM(K=3) — smooth, parametric, interpretable।
    • KDE — non-parametric backup, যদি peak সংখ্যা না জানা।

    Practical use: anomaly time detect (৪টা ভোরে massive order = bot), demand forecasting (প্রতি ঘণ্টায় কতগুলো order expected)।

আরও পড়ুন · ABCL TECH-এ আপনার পরবর্তী পদক্ষেপ

কোড রানার কাজ না করলে? ব্রাউজারে কাজ না করলে Google Colab ব্যবহার করুন — Google-এর ফ্রি অনলাইন Python পরিবেশ, শুধু Gmail অ্যাকাউন্ট লাগে।
পূর্ববর্তী পাঠ
পাঠ ২ · Discriminative vs Generative