Ứng dụng định lý BayesÁp dụng công thức Bayes vào một vấn đề cụ thể trong thực tế[Tá…

Ứng dụng định lý Bayes

Ứng dụng định lý Bayes

Áp dụng công thức Bayes vào một vấn đề cụ thể trong thực tế
[Tác giả: Will Koehrsen
Ngày xuất bản: 15/02/2018
Link: https://towardsdatascience.com/bayes-rule-applied-75965e4482ff
Dịch: Bùi Thanh Lâm]
Ý tưởng của công thức Bayes đó là với nhiều dữ kiện hơn, ta sẽ làm cho một phán đoán nào đó trở nên chính xác hơn. Quy trình rất đơn giản: với một dự đoán ban đầu, gọi là xác suất tiên nghiệm (NV: prior probability), khi ta biết thêm thông tin, ta sẽ cập nhật dự đoán đó, gọi là xác suất hậu nghiệm (NV: posterior probability). Thực tế chúng ta vô tình sử dụng cách này rất nhiều, chẳng qua không biết đó là công thức Bayes mà thôi.
Chẳng hạn, bạn dự đoán khả năng 50% cuối quý bạn sẽ được thăng chức. Nếu bạn nhận được thêm lời khen ngợi từ sếp, thì bạn sẽ cho tỉ lệ đó tăng lên; ngược lại, chẳng hạn bạn làm hỏng máy pha café, tỉ lệ ấy sẽ giảm xuống. Càng có nhiều hơn thông tin thu thập được, ước lượng của chúng ta sẽ càng sát với giá trị “chính xác”.
Dự đoán định tính đó được định lượng hoá bằng công thức nhỏ và có võ như sau:

P(A|B) = P(B|A) * P(A) / P(B)

Ở vế trái, ta có xác suất hậu nghiệm cần phải tính, đó là xác suất có điều kiện của A khi đã biết B. Ở vế phải, P(A) là xác suất tiên nghiệm, P(B|A) cũng là một xác suất điều kiện khác mà chúng ta suy ra từ dữ liệu thu thập được, còn P(B) là một “hệ số chuẩn hoá” để hàm mật độ xác suất có tổng là 1. Công thức tuy ngắn, nhưng là cơ sở cho Bayesian, một phương pháp ước lượng hiệu quả.
Công thức Bayes bên trên với nào là xác suất tiên nghiệm, hậu nghiệm nghe có vẻ không trực quan lắm nhỉ. Ta sẽ đi vào một ví dụ cụ thể trong thực tế nhé!
—-
Gần đây tôi có khám phá về thói quen đi ngủ của bản thân. Tôi quan sát suốt hơn 2 tháng từ dữ liệu thu ở trên đồng hồ thông minh, cho thấy thời gian đi ngủ và thời gian tỉnh dậy. Tôi đã từng tính được hàm mật độ xác suất dựa vào phương pháp Markov Chain Monte Carlo (MCMC) trong bài viết trước. Kết quả như hình vẽ.
Tuy nhiên xác suất tôi đi ngủ ở đây mới chỉ phụ thuộc vào thời gian. Nếu tôi biết thời gian rồi nhưng thêm vào đó các yếu tố khác thì sao? Tôi muốn biết ánh sáng trong phòng ảnh hưởng thế nào đến thói quen đi ngủ của mình?
Đây là lúc chúng ta sẽ sử dụng công thức Bayes để cập nhật ước lượng đó. Xét một thời điểm cụ thể, nếu tôi biết thông tin về ánh sáng trong phòng, tôi có thể dùng hàm mật độ bên trên rồi áp dụng vào công thức Bayes như sau:

P(sleep | light) = P(light | sleep) * P(sleep) / P(light)

Vế trái là xác suất hậu nghiệm cần tìm, khi đã biết xác suất tiên nghiệm P(sleep) như hình. Chẳng hạn, 10 giờ tối, xác suất tôi đi ngủ là 27.34%. Ta cần quan sát thêm để biết được thêm thông tin, theo đó, tôi thấy rằng nếu tôi đã ngủ thì khả năng sáng đèn là 1%. Có nghĩa là:
P(light | sleep) = 0.01
P(-light | sleep) = 0.99
Yếu tố cuối cùng là P(light), tức xác suất tôi để đèn sáng trong thời điểm 10h tối. Khai triển ra ta được:

P(light) = P(light | sleep) * P(sleep) + P(light | -sleep) * P(-sleep)

Tôi cũng quan sát được nếu mình vẫn thức thì 80% khả năng là vẫn sáng đèn, tức P(light | -sleep) = 0.8.
Thay vào công thức, ta tính được xác suất tôi đã đi ngủ nếu biết đèn còn sáng. Ngược lại, nếu biết đèn đã tắt, ta chỉ cần thay hết light bằng -light và ngược lại là xong.
—-
Công thức bằng chữ vậy là đủ rồi, giờ thử thay số vào nhé.
Áp dụng công thức trên cho 10h30 tối, biết rằng đèn sáng.
Khi đó: xác suất tôi ngủ là 73.90%. Đây là một điểm ước lượng xuất phát tốt, tuy nhiên ta cần cải thiện chúng khi biết thêm thông tin “biết rằng đèn sáng”.

P(sleep | light) <10:30PM> = 0.01*0.739 / (0.01*0.739 + 0.8*0.261) = 0.0342

Đó, chỉ cần thêm điều kiện “biết rằng đèn sáng” mà ước lượng của ta ban đầu từ trên 70% giờ xuống còn 3.42%. Đó là sức mạnh của định lý Bayes: giúp ta cập nhật ước lượng ban đầu bằng cách kết hợp với thông tin tìm biết thêm.
Vậy vào lúc 9h45 tối, biết rằng đèn tắt thì sao?
Tôi đã viết một đoạn code Python đơn giản để tính bài toán này. Kết quả như sau:

Time: 09:45:00 PM Light is OFF.

The prior probability of sleep: 12.06%
The updated probability of sleep: 40.44%

Như vậy, nếu em gái mưa của tôi gọi điện cho tôi ở dưới tầng mà cô ấy nhìn thấy đèn phòng tôi tắt, vậy cô ấy có thể áng chừng được bao nhiêu phần trăm tôi sẽ đi cùng với cô ấy nhún nhảy Hồ Tây (giả sử tôi chỉ đi chơi nếu vẫn còn thức). Đấy, lại bảo xác suất thống kê chả áp dụng gì vào thực tế đi?
—-
Con số thì cũng chính xác đấy, nhưng vẽ biểu đồ ra bao giờ cũng trực quan hơn. Hình dưới là biểu đồ xác suất hậu nghiệm. Nếu đèn sáng, đường cong dịch về phía bên phải so với hàm mật độ tiên nghiệm; còn nếu đèn tắt, nó sẽ dịch về trái. Thấy chưa, để hiểu cái công thức toán thì khó, nhưng ví dụ này minh hoạ chính xác cho phương pháp Bayes. Chỉ cần có thêm thông tin, mọi dự đoán của chúng ta sẽ trở nên chính xác hơn, nhờ có công thức Bayes.
Càng nhiều dữ kiện, dự đoán của ta càng chính xác phải không nào?
Nếu tôi biết được xác suất điện thoại tôi cắm sạc biết rằng tôi đã ngủ là 95%, ta có thể kết hợp với mô hình trước đó. Ở đây tôi giả sử sự kiện sạc điện thoại và sự kiện bật đèn là độc lập với nhau (độc lập trong xác suất là một khái niệm phức tạp, nhưng giả định mọi thứ độc lập sẽ giúp đơn giản hoá vấn đề).
Chịu khó code một ít Python và bỏ vào chạy, ta được kết quả như sau:

Time is 11:00:00 PM Light is ON Phone IS NOT charging.

The prior probability of sleep: 95.52%
The updated probability of sleep: 1.74%

Vào 11h đêm, nếu không có thông tin gì, thì mọi người sẽ đoán gần như chắc chắn tôi đi ngủ. Tuy nhiên, thêm hai dữ kiện là “đèn còn sáng” và “điện thoại chưa cắm sạc”, thì gần như chắc chắn là tôi chưa ngủ.
Một tình huống khác:

Time is 10:15:00 PM Light is OFF Phone IS charging.

The prior probability of sleep: 50.79%
The updated probability of sleep: 95.10%

Xác suất hậu nghiệm lớn hơn hay nhỏ hơn tiên nghiệm thì phụ thuộc hoàn toàn vào tình huống. Ta thu được biểu đồ của hàm mật độ đầy đủ như hình vẽ.
Từ biểu đồ ta có thể khai thác được nhiều thông tin, tuy nhiên quan trọng nhất đó là đường cong đã biến đổi tuỳ vào dữ kiện đã biết. Càng thêm thông tin, ta càng xác định được ước lượng đó chi tiết hơn.
—-
Định lý Bayes hay các lý thuyết xác suất khác có thể rất khó hiểu nếu nhìn vào công thức chứa cả đống ký hiệu toán học, hoặc những sự kiện tưởng tượng phi thực tế như tung đồng xu, lấy bóng ra từ hộp…
Nếu bạn gặp khó với một lý thuyết nào đó, hãy kiếm một ví dụ thực tế mà có thể áp dụng, hoặc nhìn vào các thí dụ mà người khác đã làm.
Học từ thực tế như vậy, ta không chỉ hiểu được tốt hơn, mà còn có thể làm được vài dự án hay ho. Bí kíp thành công của khoa học dữ liệu là biết thêm thật nhiều công cụ, và lựa chọn công cụ nào phù hợp nhất để giải bài toán đó.
Trên đây ta đã biết thêm về một phương pháp sử dụng công thức Bayes để cập nhật ước lượng chính xác hơn khi biết thêm những dữ kiện mới. Ta có thể tiếp tục hoàn thiện ước lượng của mình khi mà biết thêm những dữ kiện mới hơn, với công cụ đắc lực là công thức Bayes.
Như thường lệ, tôi khuyến khích thảo luận và những góp ý mang tính xây dựng. Twitter của tôi: @koehrsen_will.

Leave a Reply

Your email address will not be published. Required fields are marked *