Mở đầu

Trong Machine Learning và Data Science, ta thường xuyên phải làm việc bằng toán thống kê. Trong đó toán xác xuất là nền tảng cơ bản để hiểu được các khái niệm trong toán thống kê. Bài viết này dành cho tất cả những ai muốn học (hoặc nhớ lại) các khái niệm và công thức trong toán xác xuất

Công thức chung trong xác xuất lý thuyết

Công thức chung tính xác xuất lý thuyết cho sự kiện  A:

Công thức chung tính xác xuất lý thuyế

Một số ví dụ đơn giản:

Ví dụ 1: Ta có một viên xúc xắc. Xác xuất ta xẽ xúc được số 6 là gì?

Các mặt của xúc xắc

Xúc xắc có tất cả 6 mặt. Trong đó chỉ có 1 mặt duy nhất có số 6 như hình trên. Như vậy, xác xuất xúc được số 6 là:

P(xúc số 6) = 1/6

Ký hiệu trên P(xúc số 6) là xác xuất xúc số 6. "P" có nghĩa là viết tắt Probability trong tiếng Anh, xác xuất trong Tiếng việt.

Bây giờ thử công thức trên với vấn đề phức tạp hơn.  

Ví dụ 2: Cô giáo hỏi học sinh là nếu có một sức mạnh siêu nhân bất kì em sẽ chọn sức mạnh gì. Học sinh nam và nữ được chọn 1 trong 3 sức mạnh: "bay", "vô hình", "siêu mạnh". Được tóm tắt ở dưới. Hỏi nếu cô giáo chọn một bạn nữ bất kỳ, xác xuất  bạn đó chọn là "bay" hoặc "siêu mạnh" là bao nhiêu?

Giới tính Bay Siêu Mạnh Vô Hình Tổng
Nam 5 20 5 30
Nữ 5 3 12 20

Dựa vào bảng trên, số tất cả khả năng bạn nữ lựa chọn sức mạnh là: 5 + 3 + 12 = 20. Trong đó số khả năng mà bạn nữ lựa chọn "bay" là: 5 . Số khả năng mà bạn nữ lựa chọn "siêu mạnh" là: 3

Trong số tất cả các khả năng trên, số khả năng mà bạn nữ lựa chọn "bay" hoặc "siêu mạnh" là: 5 + 3 = 8

Cô giáo chọn một bạn nữ bất kỳ, xác xuất  bạn đó chọn là "bay" hoặc "siêu mạnh" là:

Vậy, P(nữ chọn "bay" hoặc "siêu mạnh") = 8 / 20 = 0.4 hoặc 40%.

Thực ra đây bài toán trên, sử dụng xác xuất điều kiện và công thức cộng trong xác xuất(sẽ được đề cập ở dưới). Kể cả nếu không biết 2 khái niệm trên là gì là gì, các bạn thấy là mình có thể suy luận bằng công thức trên để tính được xác xuất. Nếu các bạn muốn nhớ gì từ bài blog này, đó là công thức tính xác xuất lý thuyết ở đầu.

Tip 1: Để suy luận và hiểu các bài toán nhỏ trong toán xác xuất, các bạn có thể vẽ tất cả khả năng xảy ra. Như vậy, kể cả nếu không nhớ công thức, thì bạn có thể lập luận để tính xác xuất.

Xác xuất lý thuyết và xác xuất thí nghiệm

Xác xuất lý thuyết là xác xuất như ở công thức trên, sử dụng những gì ta suy luận từ khả năng. Xác xuất thí nghiệm là xác xuất ta có được từ những kết qủa thí nghiệm, dữ liệu cũ, hoặc lịch sử xảy ra từ trước.

Xác xuất thí nghiệm dựa vào dữ liệu bóng đá

Ví dụ, bạn muốn biết trong trận đấu xác xuất vào gôn trong 5 phút đầu của một trận bóng đá bất kỳ. Để suy luận , xác xuất lý thuyết thì rất khó vì có nhiều yếu tố khác nhau có thể xảy ra (đội nào đấu với nhau, chiến thuật, đội hình cầu thủ...). Nhưng bạn có thể tính được xác xuất thí nghiệm nếu ta đã có dữ liệu cũ.

Dưới đây là bảng thống kê số đá vào gôn và thời gian trận bóng đá diễn ra. Dữ liệu được lấy trong 8 năm. Trụ "x" là thời gian trận bóng đá diễn ra chia 5 phút một. Còn trụ "y" là số lần sút vào trong khoảng thời gian 5 phút đó.

Dựa vào hình trên, gỉả sử ta ước chừng tống số gôn sút vào trong 8 năm là 5560. Số gôn sút trong 5 phút đầu là 250. Nếu vậy, xác xuất thí nghiệm là 250/5560 = 0.044.

 Như vậy, dựa vào dữ liệu từ 8 năm trước, có xác xuất thí nghiệm là một trận bóng đá 4.4% sút vào gôn trong 5 phút đầu. Một điều quan trọng là xác xuất thí nghiệm không chính xác hoàn toàn, và có thể thay đổi dựa vào dữ liệu mới. Ví dụ nếu năm sau, số gôn sút vào trong 5 phút đầu thấp hơn so với các năm trước, thì xác xuất thí nghiệm cũng sẽ thấp hơn.

Xác xuất thí nghiệm dựa vào thí nghiệm tung xu

Với số lần thí nghiệm ít, xác xuất thí nghiệm có thể hoàn toàn khác với xác xuất lý thuyết. Ví dụ 3: Đồng xu có tất cả 2 khả năng: xấp và ngửa. Trong đó khả năng có được mặt ngửa là 1. Xác xuất lý thuyết tung đồng xu được mặt ngửa sẽ là:

P(ngửa) = 1/2

Bây giờ ta thử thí nghiệm tung xu với số lần ít. Đây là một thí nghiệm tôi làm với 20 lần tung xu sử dụng python (những bạn nào không biết về lập trình có thể bỏ qua) :

def simulate_coin_flip(no_flips=1):
    results = []
    int_results = []
    for flip_index in range(0, no_flips):
        random_int = randint(0, 1)
        if random_int == 1:
            results.append("ngửa")
            int_results.append(1)
        else:
            results.append("xấp")
            int_results.append(0)
    return np.asarray(results), np.asarray(int_results)
# 20 lần tung xu
results, int_results = simulate_coin_flip(20)

Kết qủa tung xu 20 lần:

Mặt xu Số lần thí nghiệm
Ngửa 7
Xấp 13
Tổng 20

Xác xuất thí nghiệm tung xu ngửa sau 20 lần: P(ngửa) = 7/20 = 0.35

Các bạn có thể thấy là với 20 lần thử trong thí nghiệm thì xác xuất thí nghiệm thấp hơn xác xuất lý thuyết. Tuy nhiên nếu thí nghiệm càng nhiều lần thì xác xuất thí nghiệm sẽ dần bằng xác xuất lý thuyết.

Hỏi nếu tung xu 100 lần thì có bao nhiêu lần được mặt ngửa? Nếu tung xu 100 lần thì dựa trên xác xuất lý thuyết, thì số lần có xu ngửa sẽ gần bằng 50.

Đây là kết qủa thí nghiệm với 100 lần tung xu (sửa lại code python ở trên):

Mặt xu Số lần thí nghiệm
Ngửa 52
Xấp 48
Tổng 100

Xác xuất thí nghiệm tung xu ngửa sau 100 lần: P(ngửa) = 7/20 = 0.52

So với xác xuất thí nghiệm khi tung xu 20 lần (0.35), xác xuất thí nghiệm khi tung xu 100 lần (0.52) gần với xác xuất lý thuyết hơn (0.5). Nếu như thí nghiêm càng nhiều lần thì xác xuất thí nghiệm sẽ càng gần với xác xuất lý thuyết.

Kể cả nếu tung đồng xu 100 lần thì số lần ngửa sẽ chỉ gần bằng 50. Các kết qủa trong thực tế sẽ không hoàn toàn bằng xác xuất lý thuyết.

Tip 2: Các bạn nên cẩn thận khi dự đoán kết qủa trong thực tế dựa vào xác xuất lý thuyết.

Xác xuất độc lập và xác xuất điều kiện

Trong xác xuất, có một số sự việc mà ảnh hưởng hay không ảnh hưởng đến xác xuất xảy ra của nhau

Xác xuất độc lập

Xác xuất độc lập: Nếu sự việc đầu không ảnh hưởng đến xác xuất của sự việc thứ hai

Ví dụ 3: xác xuất có mặt ngửa trên một đồng xu hai lần. Bạn muốn biết xác xuất được mặt ngửa của lần 1 và lần 2

Xác xuất tung một đồng xu 2 lần

Nếu bạn tung đồng xu một lần thì P(ngửa) = 1/2. Nếu như bạn tung đồng xu lần thứ hai thì vẫn không thay đổi: P(ngửa) = 1/2 .

Xác xuất điều kiện

Xác xuất điều kiện: Nếu sự việc đầu ảnh hưởng đến xác xuất của sự việc thứ hai.

Ví dụ 4:  Trong một bộ bài có 52 quân, 26 là quân đỏ, 26 là quân đen. Bạn muốn rút một quân bài màu đỏ hai lần, nhưng sau khi rút không được phép để lại. Hỏi xác xuất bạn có quân bài màu đỏ lần thứ hai là gì, dựa vào quân bài rút ra lần đầu.

Xác xuất bạn rút được quân đỏ lần thứ 2, viết tắt là P(đỏ lần 2), được tính theo hai trường hợp:

Tất cả các xác xuất rút quân đen và đỏ, tính theo tất cả khả năng trong 2 lần rút/.

1. Nếu quân bài đầu tiên bạn rút là màu đỏ:

Lần 1 bạn rút được 1 quân bài màu đỏ. Nên số quân bài màu đỏ sau khi rút lần 1 sẽ là: 26 -1 = 25. Tổng số quân sau khi rút lần 1 sẽ là 52 -1 = 51. Nên xác xuất bạn rút lá đỏ lần 2  khi bạn rút được lá đỏ lần 1 sẽ là:

P(đỏ lần 2 | đỏ lần 1) = 25/51 ≈ 0.49

2. Nếu quân bài đầu tiên bạn rút là màu đen:

Lần 1 bạn rút được 1 quân bài màu đen. Nên số quân bài màu đỏ sau khi rút lần 1 sẽ vẫn là: 26. Tương tự như trên tổng số quân sau khi rút lần 1 sẽ là 52 -1 = 51. Nên xác xuất bạn rút lá đỏ lần 2  khi bạn rút được lá đen lần 1 sẽ là:

P(đỏ lần 2 | đen lần 1) = 26/51 ≈ 0.51

Bạn có thể thấy là P(đỏ lần 2 | đỏ lần 1) = 0.49 < P(đỏ lần 2 | đen lần 1) = 0.51. Như bạn thấy thì xác xuất rút được quân đỏ lần 2, sẽ phụ thuộc vào việc quân bài bạn rút được đầu tiên là đỏ hay là đen.

Quy tắc nhân xác xuất

Khi bạn có 2 sự kiện A và B, và bạn muốn biết xác xuất được sự kiện A và B  cùng xảy ra, viết là P(A ∩ B) , thì các bạn có thể sử dụng 2 công thức sau, tùy theo vấn đề bạn có là xác xuất độc lập hay là điều kiện.

Công thức nhân xác xuất độc lập

Công thức nhân xác xuất độc lập được viết ở dưới đây:

Ví dụ 5: Quay trở lại bài toán tung một đồng xu 2 lần (Ví dụ 3). Hỏi xác xuất lần 1 và lần 2 đều tung được mặt ngửa là gì.

Bạn có thể liệt kê các khả năng tung xu 2 lần, và sử dụng công thức chung tính xác xuất lý thuyết như thấy ban đầu. Tổng cộng các khả năng tung xu hai lần có thể xảy ra là:

Tung xu lần 1 Tung xu lần 2
Xấp Xấp
Ngửa Xấp
Xấp Ngửa
Ngửa Ngửa

Có tổng cộng 4 khả năng xảy ra nếu bạn tung xu hai lần. Trong tất cả các khả năng, chỉ có 1 khả năng thỏa mãn điều kiện là có hai mặt ngưả. Như vậy thì xác xuất bạn tung xu hai lần và cả hai lần đều là mặt ngửa sẽ là: 1/4 = 0.25

Bây giờ bạn hiểu được theo trực giác kết qủa đúng của bài toán này, ta sẽ giải quyết bài toán theo công thức trên. Như bạn biết xác xuất tung đồng xu lần 1 và lần 2 không phụ thuộc lẫn nhau. Đơn giản xác xuất tung mặt ngửa cho mỗi lần 1 và 2 là:

P(ngửa lần 1) = 1/2

P(ngửa lần 2) = 1/2

Nếu thế thì xác xuất tung mặt ngửa lần 1 và lần 2 sẽ là:

P(ngửa lần 1 ngửa lần 2) = P(ngửa lần 1) x P(ngửa lần 2) = (1/2) x (1/2) = (1/4) = 0.25

Kết qủa sử dụng công thức này, giống như kết qủa ta có được nếu lập luận bằng khả năng như ở trên: 0.25.

Công thức nhân xác xuất điều kiện

Công thức nhân xác xuất điều kiện được viết ở dưới đây:

Ví dụ 6: Quay lại bài toán trên về rút quân bài 2 lần  mà không cho lại quân bài vừa rút vào bộ bài (Ví dụ 4). Hỏi xác xuất lấy bài đỏ cả hai lần, là bao nhiêu

Nhớ rằng xác xuất lấy được quân đỏ lần 2 dựa vào kết qủa lấy được quân bài lần 1. Ta có

P(đỏ lần 1) = 26/52

P(đỏ lần 2 | đỏ lần 1)  = 25/51

Dựa vào công thức trên:

P(đỏ lần 1đỏ lần 2) =  P(đỏ lần 2 | đỏ lần 1) x P(đỏ lần 1) = (26/52) x (25/51) ≈ 0.245

Công thức cộng xác xuất

Khi bạn có 2 sự kiện A và B, và bạn muốn biết xác xuất được sự kiện A hoặc B  xảy ra, viết là P(A B) . Bạn có thể sử dụng công thức sau cho cả xác xuất độc lập và điều kiện.

Công thức cộng xác xuất cho hai sự việc A và B có thể cùng xảy ra:

Ví dụ 7: Tung một đồng xu 2 lần. Đồng xu có 2 mặt xấp và ngửa. Hỏi xác xuất tung một đồng xu hai lần, trong đó có một lần là ngửa là gì.

Tức là bạn muốn tìm xác xuất có được lần 1 là ngửa hoặc lần 2 là ngửa. Như đã tính ở trên:

P(ngửa lần 1) = 1/2

P(ngửa lần 2) = 1/2

P(ngửa lần 1 ngửa lần 2) =  1/4

Theo công thức trên:

P(ngửa lần 1 ngửa lần 2) = P(ngửa lần 1) + P(ngửa lần 2) - P(ngửa lần 1 ngửa lần 2) = (1/2) + (1/2) - (1/4) = 3/4 = 0.75

Có một cách tính đơn giản là 1 - P(xấp lần 1 xấp lần 2 ). Nhưng tôi muốn sử dụng cách tính trên, để các bạn hiểu được cách sử dụng công thức cho những bài toán phức tạp hơn.

Có một số bài toán mà sự việc A và B không thể nào xảy ra đồng thời. Ví dụ: tung một đồng xu một lần được cả mặt xấp mặt ngửa; trời mưa và không mưa ở cùng một địa điểm.

Nếu hai sự việc A và B chắc chắn là không thể xảy ra cùng một lúc, thì bạn chỉ cần dùng công thức này:

Công thức này gần giống như công thức trên. Như bạn thấy thì bạn chỉ cần cộng xác xuất của sự kiện A với xác xuất của sự kiện B. Vì A và B không thể xảy ra cùng một lúc nên theo logic: P(A B) = 0. Bạn không cần tính P(A B).

Kết luận

Vẫn còn một số chi tiết về toán xác xuất tôi chưa đề cập trong bài viết này. Nhưng hi vọng bài viết này đã giúp các bạn hiểu (hoặc nhớ lại) các kiến thức cơ bản trong toán xác xuất.