Menu
CoddyTech

Có thể chỉ là ngẫu nhiên không?

Thuộc phần Thống kê cho machine learning trong hành trình Machine Learning của Coddy. Bài học 43 trên 64.

Năm người đọc với phông chữ sans nhanh hơn năm người đọc với phông chữ serif 6.6 giây. Nếu phông chữ không làm thay đổi gì, thì thời gian bất kỳ đều có thể thuộc nhóm nào. Hãy xáo trộn để mô phỏng điều đó:

Mười thời gian đọc được biểu diễn thành các ô, năm ô serif màu xanh dương và năm ô sans màu cam. Mũi tên có nhãn rng.permutation(pooled) dẫn đến cùng mười giá trị theo thứ tự trộn, được chia thành một nhóm serif giả có giá trị trung bình là 48.4 và một nhóm sans giả có giá trị trung bình là 49.8: chênh lệch +1.4 giây do ngẫu nhiên tạo ra

rng.permutation(a) trả về một bản sao đã xáo trộn. Lặp lại 1000 lần và giữ lại mọi chênh lệch giả:

serif = np.array([52, 47, 58, 50, 55])
sans = np.array([45, 49, 41, 50, 44])
pooled = np.concatenate([serif, sans])
rng = np.random.default_rng(4)
diffs = []
for i in range(1000):
    shuffled = rng.permutation(pooled)
    diffs.append(shuffled[5:].mean() - shuffled[:5].mean())

Biểu đồ tần suất của 1000 chênh lệch sau khi xáo trộn, từ -7.8 đến 7.8 giây và tập trung quanh 0, với một đường màu đỏ biểu thị chênh lệch thực tế là -6.6, gần mép bên trái

Các khoảng cách ngẫu nhiên tập trung quanh 0; khoảng cách thực nằm gần rìa. Đây là một phép kiểm định hoán vị.

Trước khi tin rằng mô hình này tốt hơn mô hình kia, hãy kiểm tra xem việc xáo trộn có hiếm khi tạo ra khoảng cách lớn đến vậy hay không.

challenge icon

Thử thách

Trung bình

Chó học cách ngồi theo hai cách: clicker và treats lưu số buổi huấn luyện của từng chú chó. Đoạn code khởi tạo rng và shuffles.

  1. Tính chênh lệch thực tế: trung bình của treats trừ trung bình của clicker.
  2. Gộp clicker rồi đến treats; xáo trộn shuffles lần, chia tại len(clicker), giữ nguyên thứ tự phép trừ cho mỗi chênh lệch giả; không lấy mẫu nào khác.
  3. In chênh lệch thực tế, chênh lệch giả đầu tiên, giá trị nhỏ nhất và lớn nhất, với 2 chữ số thập phân.

Với những chú chó khác:

Real difference: 3.0
First shuffle: -1.0
Smallest shuffled: -3.33
Largest shuffled: 3.67

Tự làm thử

import numpy as np

# Số buổi huấn luyện mỗi chú chó cần để học lệnh "sit"
clicker = np.array([9, 12, 8, 11, 10, 7, 13])
treats = np.array([14, 11, 15, 12, 16, 13])
# Đừng thay đổi các dòng bên dưới
rng = np.random.default_rng(12)
shuffles = 1000

# Viết code của bạn bên dưới
quiz iconTự kiểm tra

Bài học này có một bài trắc nghiệm ngắn. Bắt đầu bài học để trả lời và theo dõi tiến độ.

Tất cả bài học trong Thống kê cho machine learning

Tự luyện tập: Trình biên dịch Python online