Menu
CoddyTech

Mẫu lớn hơn, ít nhiễu hơn

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

Mẫu càng lớn thì ước tính càng chính xác, nhưng chính xác hơn bao nhiêu? Đây là 1000 giá trị trung bình của 25 giỏ hàng và 1000 giá trị trung bình của 100 giỏ hàng:

Hai đường cong hình chuông biểu diễn giá trị trung bình mẫu về số mặt hàng trong mỗi giỏ, cả hai đều tập trung quanh mức 30. Giá trị trung bình của 25 giỏ hàng màu xám trải từ khoảng 20 đến 40; giá trị trung bình của 100 giỏ hàng màu xanh tạo thành đường cong hình chuông có độ rộng chỉ bằng một nửa

sample_means đo độ phân tán của từng mẫu. Sai số chuẩn, std / np.sqrt(n), dự đoán độ phân tán này mà không cần mô phỏng:

for n in [25, 100]:
    spread = sample_means(baskets, n, 1000).std()
    print(n, np.round(spread, 2), np.round(baskets.std() / np.sqrt(n), 2))

Kết quả in ra:

25 3.43 3.45
100 1.72 1.72

Dữ liệu gấp bốn lần, nhiễu giảm một nửa: đó là tác dụng của căn bậc hai. Điểm số của mô hình được kiểm thử trên 400 ví dụ chính xác gấp đôi so với khi kiểm thử trên 100 ví dụ.

challenge icon

Thử thách

Trung bình

bags chứa khối lượng tính bằng gam của 5000 bao bột mì tại một nhà máy xay. Bộ phận kiểm soát chất lượng cân một mẫu mỗi giờ; chương trình đọc sai số chuẩn (standard error) mà họ chấp nhận.

  1. Tìm n nhỏ nhất sao cho sai số chuẩn, bags.std() / np.sqrt(n), không vượt quá mức đó: bắt đầu từ 1, tăng thêm 1 khi giá trị còn quá lớn.
  2. Kiểm tra: tính std của 300 giá trị trung bình mẫu từ sample_means.
  3. In ra như bên dưới, với 2 chữ số thập phân.

Với một nhà máy xay khác và 2.5:

Bags to weigh: 24
Standard error: 2.46 g
Simulated spread: 2.37 g

Tự làm thử

import numpy as np

target = float(input())

# Đừng thay đổi các dòng bên dưới: khối lượng tính bằng gam của từng túi bột mì
rng = np.random.default_rng(22)
bags = np.round(rng.normal(500, 8, size=5000), 1)


# Hàm (function) của bạn từ Sample Means Vary: giá trị trung bình của count mẫu
def sample_means(data, size, count):
    means = []
    for i in range(count):
        sample = rng.choice(data, size=size, replace=False)
        means.append(sample.mean())
    return np.array(means)


# 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