Giả sử bạn là giáo viên môn Machine Learning của một lớp XYZ nào đó. Sau khi chấm điểm cuối kì, bạn nhìn bảng điểm của lớp (cứ cho khoảng 50 SV), và muốn đưa ra một vài kết luận nào đó về tình hình học tập của lớp. Phải làm thế nào?
Thứ nhất, tính điểm trung bình. Đây là một trong những cách đơn giản nhất. Dựa vào điểm trung bình có thể đưa ra vài nhận xét “hồ đồ” về tình hình học tập. Giả sử nếu năm trước điểm trung bình môn ML của lớp là 7.5, năm nay trung bình là 7.6, như vậy có thể nhận xét hồ đồ rằng năm nay sinh viên học tốt hơn năm ngoái, nhưng cả 2 năm sinh viên đều học khá môn ML….
Tất nhiên những nhận xét này là hồ đồ vì có thể có những sinh viên điểm rất cao, ngược lại cũng có điểm rất thấp (cũng giống như nói GDP bình quân đầu người của nước ta là 1000USD, nhưng thu nhập của mỗi người lại rất chênh lệch nhau, hay là chuyện 2 người có 1 con gà). Rõ ràng tính trung bình rất đơn giản và “mạnh mẽ” (từ điểm của 50 sinh viên, tức là 50 mẫu dữ liệu khác nhau, chuyển thành một điểm trung bình duy nhất, và có thể dựa vào điểm trung bình để nhận xét về điểm của 50 sinh viên), nhưng vì thế mà nó làm mất thông tin về phân bố của dữ liệu.
Thứ hai, tính kì vọng và phương sai. Một người học lớp thống kê cơ bản sẽ biết cách tính kì vọng và phương sai của dữ liệu. Trong trường hợp này thì kì vọng chính là điểm trung bình cộng (đến Excel cũng có hàm cho các tính toán cơ bản này). Dựa vào kì vọng và phương sai, ta sẽ có thể đưa ra những nhận xét sâu sắc và ít hồ đồ hơn. Chẳng hạn nếu lớp A có điểm kì vọng là 7.6 và phương sai 2.5, lớp B có điểm kì vọng 7.0 nhưng phương sai 1.5, thì có thể kết luận là nhìn chung lớp A học tốt hơn lớp B, nhưng lớp B học “đều” hơn lớp A (nghĩa là không có chênh lệch quá lớn giữa các sinh viên)… và có thể có hàng chục kết luận khác nữa. Nhờ có thêm giá trị phương sai nên so với cách thứ nhất thì cách thứ 2 cho cách nhìn sâu sắc hơn về dữ liệu, tuy nhiên nó cũng tăng lượng “tham số” so với cách thứ nhất (từ 1 tham số là Điểm trung bình thành 2 tham số là Điểm trung bình và phương sai).
Nhiều người hay blame cách tính trung bình (chẳng hạn như phản bác thái quá cách tính GDP bình quân đầu người, cho rằng con số đó không phản ánh được gì về tình hình kinh tế v.v…), nhưng nếu xét một cách công bằng thì suy cho cùng cách tính trung bình cũng chỉ là một cách để mô hình hóa dữ liệu. Sở dĩ cách tính trung bình không tốt là do nó làm “ẩu”, rút gọn toàn bộ dữ liệu về thành một mẫu duy nhất, dùng một mẫu để đặc trưng cho toàn bộ tập dữ liệu. Tuy nhiên trung bình cũng có cái hay vì nó giảm sự phức tạp của dữ liệu đến mức tối thiểu, và dễ hiểu (rõ ràng nói GDP bình quân đầu người của VN là 1000USD thì dễ hiểu hơn nhiều so với việc liệt kê thu nhập của toàn bộ 80 triệu dân. Kể cả khi việc liệt kê đó là khả thi, thì nhìn vào 80 triệu con số, ta khó mà có ý niệm gì về thu nhập của người dân).
Thứ ba, đếm số lượng điểm trong ngưỡng nào đó. Chẳng hạn ta có thể nói: trong 50 sinh viên thì có 40 sv đạt điểm trên 5 và 10 sinh viên dưới 5. Như vậy có thể hiểu lớp có 4/5 sinh viên trên trung bình. Một cách chi tiết hơn, ta có thể nói: trong 40 sinh viên trên 5 thì có 10 sinh viên trên 8 điểm, 20 sinh viên có điểm từ 6 đến cận 8, và 10 sinh viên có điểm từ 5 đến cận 6. Như vậy có thể hiểu sâu sắc hơn rằng lớp có 1/5 sinh viên giỏi, 2/5 sinh viên khá v.v…. (Đây là cách mà tôi hay dùng ^^)
Một cách tổng quát, đây là cách phân tích bằng histogram. Tư tưởng hết sức tự nhiên: ta chia thang điểm từ 0 đến 10 thành nhiều bin (ngăn, thùng), và tăng biến đếm của mỗi bin ứng với điểm số thuộc bin đó. Rõ ràng histogram cho cái nhìn tốt hơn nữa về tình hình học tập của SV, nhưng ngược lại vì quá nhiều chi tiết nên sẽ mất đi cái nhìn tổng quan: nhìn vào histogram điểm, ta có thể băn khoăn là trung bình thì điểm của sinh viên bằng bao nhiêu v.v… Histogram cũng có các điểm yếu khác như phụ thuộc vào cách chia bin (chia thành 0-5-10 hay 0-5-6-8-10 hay 0-1-2-3-4-5-6-7-8-9-10?), chỉ cho được cái nhìn rời rạc về dữ liệu v.v… Để khắc phục nhược điểm này thì Kernel Density Estimation (KDE) là một trong những phương pháp tốt. Chúng ta sẽ quay lại với KDE trong một bài tới.
Ngoài ra các cao thủ trong Thống kê phái còn rất nhiều chiêu thức để đối phó với dữ liệu lớn, nhìn chung các chiêu thức này đều được xếp vào hai phe chính là parametric và non-parametric.
Võ công của phe parametric hơi “tà giáo” vì nó giả sử rằng dữ liệu tuân theo một mô hình nào đó đã biết trước, và vì mô hình là biết trước nên mô hình này có một số tham số nhất định nào đó. Chỉ cần dựa vào dữ liệu có thể tính được những tham số đó và dùng các tham số này để đặc trưng cho toàn bộ dữ liệu. Rõ ràng cách làm này là tà đạo vì không ai biết được có đúng là dữ liệu tuân theo mô hình đó hay không. Cách 1 và cách 2 bên trên có thể xem là thuộc về phái parametric. Ngoài ra một mô hình hay được dùng là giả sử dữ liệu phân bố theo Gaussian (tại sao là Gaussian? Do kết quả của định lí giới hạn trung tâm), do phân bố Gaussian đặc trưng bởi mean và variance nên chỉ cần tính 2 giá trị này là có thể đặc trưng cho toàn bộ dữ liệu. Cao thủ phe parametric còn có nhiều loại mô hình phức tạp hơn rất nhiều: Markov Chain, Hidden Markov model, Gaussian Mixture model… và rất nhiều loại latent model khác được ứng dụng trong nhiều bài toán cụ thể.
Ngược lại phe non-parametric không hề dựa trên giả sử “trên trời” nào về dữ liệu. Các chiêu thức của phe này thường đi sâu vào bản chất tự nhiên của dữ liệu, tùy tình hình phân bố của dữ liệu để đưa ra cách mô hình hóa phù hợp. Histogram và KDE là 2 chiêu thuộc nhóm này, ngoài ra còn có thể kể đến các chiêu khác như hồi quy v.v…
Với cách tiếp cận như vậy, người ta nói rằng phe non-parametric có khả năng thích ứng tốt hơn với dữ liệu do đi sâu tìm hiểu và khai phá các đặc tính tự nhiên của dữ liệu mà không cần tri thức nào về quá trình phát sinh dữ liệu. Ngược lại phe parametric có lợi thế do việc dùng ít tham số và trong một vài trường hợp các mô hình parametric cũng tỏ ra tương đối hiệu quả. Tuy nhiên không có mô hình nào là tốt nhất để mô hình hóa dữ liệu, các mô hình thống kê thi thoảng và may lắm mới tỏ ra tương đối hiệu quả, và cũng chỉ trong một vài ứng dụng/trường hợp cụ thể nào đó.
Bạn có thể hỏi mô hình hóa dữ liệu để làm gì? Mô hình hóa là một tuyệt chiêu, giúp ta làm được rất nhiều trò hay ho. Chẳng hạn quan sát dữ liệu thời tiết qua các năm, nếu có mô hình thích hợp, ta có thể dự đoán chính xác thời tiết của ngày mai, 2 ngày kế tiếp, 1 tuần tới hay thậm chí là thời tiết 30 năm sau (Tất nhiên mô hình thời tiết như vậy hiện nay chưa có được, không ai dám tin vào kết quả dự báo thời tiết 1 tháng, chứ đừng nói tới 30 năm).
Vui một chút, nắng mưa là chuyện của trời, nên nếu có một mô hình chính xác như vậy thật thì con người có thể dự đoán, làm chủ tự nhiên, cũng có nghĩa là tìm ra được “mô hình hoạt động của tự nhiên”. Các cao thủ Vật lí giáo còn tham vọng tìm được một mô hình của cả vũ trụ (Theory of everything, có liên hệ chặt chẽ với General Unified Theory của Einstein). Tất nhiên không biết hiện nay còn ai nỗ lực tìm/định hình lí thuyết này nữa không, nhưng nếu giả sử lí thuyết như thế là có thật, thì có lẽ đó chính là cái đích cuối cùng của Khoa học, là cách giải thích thế giới hợp lí nhất, là điểm hội tụ của Khoa học và Tôn giáo, là “thế lực” đứng sau mọi hiện tượng tự nhiên. Đó chính là kết quả khi ta tin rằng mọi thứ đều là stochastic process. Khi đó thiên tai, hỏa hoạn… không còn là randomness nữa, mà là predictable. Con người chỉ sợ những thứ random, unpredictable, nên nếu như toàn bộ tự nhiên là predictable, thì sức mạnh của con người sẽ không biết dừng lại ở đâu…
