Nền tảng Thống kê¶
Thống kê cung cấp ngôn ngữ để mô tả dữ liệu và định lượng sự không chắc chắn. Tài liệu này bao quát các phân bố, biến ngẫu nhiên, PMF, PDF, CDF, kỳ vọng, phương sai, moment, và định lý giới hạn trung tâm — những khái niệm làm nền tảng cho mọi metric đánh giá và hàm mất mát trong học máy.
-
Thống kê là khoa học học từ dữ liệu. Bạn thu thập các quan sát, tóm tắt chúng, và rút ra kết luận, thường là về những thứ bạn không thể đo trực tiếp.
-
Hãy tưởng tượng bạn muốn biết chiều cao trung bình của mọi người trưởng thành trong một quốc gia. Bạn không thể đo tất cả mọi người, nên bạn đo một mẫu và dùng thống kê để đưa ra ước lượng có căn cứ về toàn bộ tổng thể.
-
Có hai nhánh chính:
- Thống kê mô tả (descriptive statistics): tóm tắt dữ liệu bạn đã có (số trung bình, biểu đồ, bảng)
- Thống kê suy luận (inferential statistics): dùng một mẫu để đưa ra khẳng định về một nhóm lớn hơn
-
Khối xây dựng của thống kê là phân bố (distribution), một mô tả về cách các giá trị được phân tán ra. Mọi thứ khác — số trung bình, kiểm định, dự đoán — đều xuất phát từ việc hiểu phân bố.
-
Một phân bố tần số (frequency distribution) đếm tần suất mỗi giá trị (hoặc khoảng giá trị) xuất hiện trong dữ liệu của bạn. Hãy nghĩ đến việc sắp xếp điểm thi vào các bin và đếm xem có bao nhiêu sinh viên nằm trong mỗi bin. Kết quả là một biểu đồ histogram.
-
Một phân bố xác suất (probability distribution) thay thế các số đếm thô bằng xác suất. Thay vì "12 sinh viên đạt điểm từ 70 đến 80," nó nói "có xác suất 0.24 để đạt điểm từ 70 đến 80." Các cột histogram trở thành một đường cong mượt khi dữ liệu là liên tục.
-
Histogram bên trái được xây dựng từ dữ liệu thực tế bạn thu thập được. Đường cong mượt bên phải là một mô hình toán học mô tả mô hình ẩn sau dữ liệu. Một cái là thực nghiệm, cái kia là lý thuyết.
-
Để làm việc với các phân bố một cách toán học, ta cần một cách gán số cho các kết cục. Đó chính xác là những gì một biến ngẫu nhiên (random variable) làm.
-
Một biến ngẫu nhiên là một hàm ánh xạ mỗi kết cục của một thí nghiệm thành một số thực. Tung đồng xu: kết cục là "ngửa" hoặc "sấp," nhưng một biến ngẫu nhiên \(X\) chuyển đổi nó thành \(X(\text{ngửa}) = 1\) và \(X(\text{sấp}) = 0\). Bây giờ ta có thể làm số học.
-
Một biến ngẫu nhiên rời rạc (discrete) nhận một tập đếm được các giá trị: số mặt ngửa trong 10 lần tung, kết quả của một con xúc xắc, số email bạn nhận trong một giờ.
-
Một biến ngẫu nhiên liên tục (continuous) có thể nhận bất kỳ giá trị nào trong một khoảng: chiều cao chính xác của bạn, thời gian cho đến khi xe buýt tiếp theo đến, nhiệt độ vào buổi trưa.
-
Sự phân biệt này quan trọng vì nó thay đổi cách ta tính xác suất. Với biến rời rạc, ta cộng. Với biến liên tục, ta tích phân (nhớ lại tích phân từ Chương 3).
-
Với một biến ngẫu nhiên rời rạc, hàm khối xác suất (PMF) (probability mass function) cho xác suất của mỗi giá trị cụ thể:
- Với một biến ngẫu nhiên liên tục, hàm mật độ xác suất (PDF) (probability density function) cho xác suất nằm trong một khoảng. Xác suất của bất kỳ giá trị chính xác đơn lẻ nào cũng bằng không; chỉ có các khoảng mới có xác suất dương:
-
Khi đã có thể gán số cho các kết cục, câu hỏi tự nhiên nhất là: trung bình ta kỳ vọng giá trị nào?
-
Kỳ vọng (expectation hay expected value) là trung bình có trọng số của tất cả các giá trị có thể, với các trọng số là các xác suất. Hãy nghĩ về nó như là "trọng tâm" của phân bố.
-
Nếu bạn tung một con xúc xắc cân bằng nhiều lần, trung bình tung của bạn hội tụ về 3.5. Đó là kỳ vọng, mặc dù bạn không bao giờ có thể thực sự tung được 3.5.
-
Với một biến ngẫu nhiên rời rạc:
- Với một biến ngẫu nhiên liên tục (sử dụng tích phân từ Chương 3):
- Ví dụ: một con xúc xắc sáu mặt cân bằng có \(p(x) = 1/6\) với \(x = 1, 2, 3, 4, 5, 6\).
-
Kỳ vọng có tính tuyến tính, nghĩa là \(E[aX + b] = aE[X] + b\). Tính chất này cực kỳ hữu ích và xuất hiện liên tục trong các hàm mất mát của ML.
-
Kỳ vọng cho ta biết tâm, nhưng nó không nói gì về độ phân tán của các giá trị. Để mô tả đầy đủ hình dạng của một phân bố, ta cần các moment (moments).
-
Một moment là kỳ vọng của một lũy thừa của \(X\). Moment thô (raw moment) thứ \(k\) là:
-
Moment thô thứ nhất (\(k = 1\)) chính là trung bình: \(\mu_1' = E[X] = \mu\).
-
Các moment thô được đo từ không. Thường ta quan tâm đến độ lệch khỏi trung bình hơn. Moment trung tâm (central moment) thứ \(k\) định tâm phép đo:
-
Moment trung tâm thứ nhất luôn bằng không (các độ lệch lên trên và xuống dưới trung bình triệt tiêu lẫn nhau). Moment trung tâm thứ hai là phương sai (variance).
-
Để so sánh các phân bố trên các thang đo khác nhau, ta chuẩn hóa (standardise) bằng cách chia cho lũy thừa phù hợp của độ lệch chuẩn \(\sigma\):
- Mỗi moment nắm bắt một khía cạnh khác nhau của hình dạng phân bố:
- Moment thứ 1 (Trung bình): Phân bố được định tâm ở đâu. Điểm cân bằng.
- Moment thứ 2 (Phương sai): Các giá trị phân tán quanh trung bình thế nào. Phương sai càng cao càng rộng.
- Moment thứ 3 (Độ lệch - Skewness): Phân bố nghiêng trái hay phải. Độ lệch không nghĩa là đối xứng.
-
Moment thứ 4 (Kurtosis): Phần đuôi nặng thế nào. Kurtosis càng cao nghĩa là có nhiều ngoại lệ cực đoan hơn.
-
Hãy cùng tính cả bốn moment cho một tập dữ liệu cụ thể: \(X = \{2, 4, 4, 4, 5, 5, 7, 9\}\).
-
Bước 1: Trung bình (moment thô thứ 1)
- Bước 2: Phương sai (moment trung tâm thứ 2). Trừ trung bình khỏi mỗi giá trị, bình phương, rồi lấy trung bình:
-
Độ lệch chuẩn là \(\sigma = \sqrt{4} = 2\).
-
Bước 3: Độ lệch (Skewness) (moment trung tâm thứ 3 đã chuẩn hóa). Lập phương các độ lệch, trung bình, chia cho \(\sigma^3\):
-
Độ lệch dương nghĩa là đuôi phải dài hơn, hợp lý vì 9 ở xa phía trên trung bình.
-
Bước 4: Kurtosis (moment trung tâm thứ 4 đã chuẩn hóa). Nâng độ lệch lên lũy thừa 4:
- Phân bố chuẩn có kurtosis bằng 3 (gọi là "mesokurtic"). Giá trị 2.781 của ta gần sát, gợi ý các đuôi gần như chuẩn. Giá trị trên 3 ("leptokurtic") báo hiệu đuôi nặng hơn; dưới 3 ("platykurtic") báo hiệu đuôi nhẹ hơn. Một số công thức báo cáo kurtosis dư (excess kurtosis) bằng cách trừ đi 3, vậy kurtosis dư của ta là \(-0.219\).
Bài tập lập trình (dùng CoLab hoặc notebook)¶
-
Tính kỳ vọng của một con xúc xắc thiên lệch nơi mặt 6 có xác suất 0.3 và các mặt khác chia đều xác suất còn lại. Kiểm tra bằng mô phỏng 100,000 lần tung.
import jax import jax.numpy as jnp # Loaded die: face 6 has p=0.3, others share 0.7 equally probs = jnp.array([0.14, 0.14, 0.14, 0.14, 0.14, 0.30]) faces = jnp.array([1, 2, 3, 4, 5, 6]) # Analytical expected value ev = jnp.sum(faces * probs) print(f"Expected value (formula): {ev:.4f}") # Simulation key = jax.random.PRNGKey(42) rolls = jax.random.choice(key, faces, shape=(100_000,), p=probs) print(f"Expected value (simulation): {rolls.mean():.4f}") -
Tính cả bốn moment (trung bình, phương sai, độ lệch, kurtosis) cho tập dữ liệu từ ví dụ đã làm, sau đó sửa đổi dữ liệu và quan sát cách mỗi moment thay đổi.
import jax.numpy as jnp x = jnp.array([2, 4, 4, 4, 5, 5, 7, 9], dtype=jnp.float32) mean = jnp.mean(x) variance = jnp.mean((x - mean) ** 2) std = jnp.sqrt(variance) skewness = jnp.mean(((x - mean) / std) ** 3) kurtosis = jnp.mean(((x - mean) / std) ** 4) print(f"Mean: {mean:.3f}") print(f"Variance: {variance:.3f}") print(f"Std Dev: {std:.3f}") print(f"Skewness: {skewness:.3f}") print(f"Kurtosis: {kurtosis:.3f}") print(f"Excess K: {kurtosis - 3:.3f}") -
Trực quan hóa PMF và CDF cạnh nhau cho một lần tung xúc xắc cân bằng. Thử thay đổi các xác suất để xem hình dạng thay đổi thế nào.
import jax.numpy as jnp import matplotlib.pyplot as plt faces = jnp.array([1, 2, 3, 4, 5, 6]) pmf = jnp.ones(6) / 6 # fair die; try changing these! cdf = jnp.cumsum(pmf) fig, (ax1, ax2) = plt.subplots(1, 2, figsize=(10, 4)) ax1.bar(faces, pmf, color="#3498db", alpha=0.8) ax1.set_title("PMF") ax1.set_xlabel("Face") ax1.set_ylabel("P(X = x)") ax1.set_ylim(0, 0.5) ax2.step(faces, cdf, where="mid", color="#e74c3c", linewidth=2) ax2.set_title("CDF") ax2.set_xlabel("Face") ax2.set_ylabel("P(X ≤ x)") ax2.set_ylim(0, 1.1) plt.tight_layout() plt.show()