Chức năng nào được sử dụng để có được khoảng tin cậy trong bootstrapping?

Điều quan trọng là phải trình bày cả kỹ năng dự kiến ​​của một mô hình học máy cũng như khoảng tin cậy cho kỹ năng của mô hình đó

Khoảng tin cậy cung cấp một loạt các kỹ năng mô hình và khả năng kỹ năng mô hình sẽ rơi vào giữa các phạm vi khi đưa ra dự đoán về dữ liệu mới. Ví dụ: khả năng phân loại chính xác là 95% trong khoảng từ 70% đến 75%

Một cách hiệu quả để tính khoảng tin cậy cho các thuật toán học máy là sử dụng bootstrap. Đây là một kỹ thuật chung để ước tính số liệu thống kê có thể được sử dụng để tính khoảng tin cậy theo kinh nghiệm, bất kể sự phân bố của điểm số kỹ năng (e. g. phi Gaussian)

Trong bài đăng này, bạn sẽ khám phá cách sử dụng bootstrap để tính khoảng tin cậy cho hiệu suất của các thuật toán học máy của bạn

Sau khi đọc bài viết này, bạn sẽ biết

  • Cách ước tính khoảng tin cậy của thống kê bằng cách sử dụng bootstrap
  • Cách áp dụng phương pháp này để đánh giá các thuật toán học máy
  • Cách triển khai phương thức bootstrap để ước tính khoảng tin cậy trong Python

Bắt đầu dự án của bạn với cuốn sách mới của tôi Statistics for Machine Learning, bao gồm các hướng dẫn từng bước và các tệp mã nguồn Python cho tất cả các ví dụ

Bắt đầu nào

  • Cập nhật tháng 6/2017. Đã sửa lỗi trong đó các giá trị sai được cung cấp cho numpy. phần trăm (). Cảm ơn Elie Kawerk
  • Cập nhật tháng 3/2018. Đã cập nhật liên kết đến tệp dữ liệu

Chức năng nào được sử dụng để có được khoảng tin cậy trong bootstrapping?

Cách tính khoảng tin cậy Bootstrap cho kết quả học máy bằng Python
Ảnh của Hendrik Wieduwilt, bảo lưu một số quyền.

Khoảng tin cậy Bootstrap

Tính toán khoảng tin cậy với bootstrap bao gồm hai bước

  1. Tính toán dân số thống kê
  2. Tính khoảng tin cậy

Cần trợ giúp về Thống kê cho Machine Learning?

Tham gia khóa học xử lý sự cố email miễn phí trong 7 ngày của tôi ngay bây giờ (có mã mẫu)

Nhấp để đăng ký và cũng nhận được phiên bản PDF Ebook miễn phí của khóa học

Tải xuống khóa học nhỏ MIỄN PHÍ của bạn

1. Tính toán dân số thống kê

Bước đầu tiên là sử dụng thủ tục bootstrap để lấy mẫu lại dữ liệu gốc một số lần và tính toán thống kê quan tâm

Tập dữ liệu được lấy mẫu với sự thay thế. Điều này có nghĩa là mỗi khi một mục được chọn từ tập dữ liệu gốc, mục đó sẽ không bị xóa, cho phép mục đó có thể được chọn lại cho mẫu

Thống kê được tính toán trên mẫu và được lưu trữ để chúng tôi xây dựng một quần thể thống kê quan tâm

Số lần lặp lại bootstrap xác định phương sai của ước tính và càng nhiều càng tốt, thường là hàng trăm hoặc hàng nghìn

Chúng ta có thể chứng minh bước này bằng mã giả sau

1

2

3

4

5

thống kê = []

cho tôi trong bootstraps

mẫu = select_sample_with_replacement(dữ liệu)

thống kê = tính toán_statistic (mẫu)

số liệu thống kê. nối thêm (thống kê)

2. Tính khoảng tin cậy

Bây giờ chúng ta có một quần thể thống kê quan tâm, chúng ta có thể tính khoảng tin cậy

Điều này được thực hiện bằng cách sắp xếp thứ tự thống kê trước tiên, sau đó chọn các giá trị ở phần trăm đã chọn cho khoảng tin cậy. Phần trăm được chọn trong trường hợp này được gọi là alpha

Ví dụ: nếu chúng tôi quan tâm đến khoảng tin cậy là 95%, thì alpha sẽ là 0. 95 và chúng tôi sẽ chọn giá trị tại 2. 5% phần trăm là giới hạn dưới và 97. Phần trăm 5% là giới hạn trên của thống kê quan tâm

Ví dụ: nếu chúng tôi tính toán 1.000 thống kê từ 1.000 mẫu bootstrap, thì giới hạn dưới sẽ là giá trị thứ 25 và giới hạn trên sẽ là giá trị thứ 975, giả sử danh sách thống kê được sắp xếp theo thứ tự

Trong trường hợp này, chúng tôi đang tính toán khoảng tin cậy không tham số không đưa ra bất kỳ giả định nào về dạng hàm của phân phối thống kê. Khoảng tin cậy này thường được gọi là khoảng tin cậy thực nghiệm

Chúng tôi có thể chứng minh điều này bằng mã giả bên dưới

1

2

3

sắp xếp = sắp xếp (thống kê)

thấp hơn = phần trăm (được sắp xếp, (1-alpha)/2)

trên = phần trăm (được sắp xếp, alpha+((1-alpha)/2))

Hiệu suất mô hình Bootstrap

Bootstrap có thể được sử dụng để đánh giá hiệu suất của các thuật toán học máy

Kích thước của mẫu được lấy mỗi lần lặp có thể được giới hạn ở 60% hoặc 80% dữ liệu có sẵn. Điều này có nghĩa là sẽ có một số mẫu không được đưa vào mẫu. Chúng được gọi là các mẫu đã hết túi (OOB)

Sau đó, một mô hình có thể được đào tạo trên mẫu dữ liệu trong mỗi lần lặp lại bootstrap và được đánh giá trên các mẫu bên ngoài túi để đưa ra thống kê hiệu suất, có thể được thu thập và từ đó có thể tính toán khoảng tin cậy

Chúng ta có thể chứng minh quá trình này bằng mã giả sau

1

2

3

4

5

6

thống kê = []

cho tôi trong bootstraps

huấn luyện, kiểm tra = select_sample_with_replacement(dữ liệu, kích thước)

mô hình = train_model(xe lửa)

thống kê = đánh giá_model(thử nghiệm)

số liệu thống kê. nối thêm (thống kê)

Tính toán Phân loại Độ chính xác Khoảng tin cậy

Phần này trình bày cách sử dụng bootstrap để tính toán khoảng tin cậy theo kinh nghiệm cho thuật toán máy học trên tập dữ liệu trong thế giới thực bằng cách sử dụng thư viện máy học Python scikit-learning

Phần này giả định rằng bạn đã cài đặt Pandas, NumPy và Matplotlib. Nếu bạn cần trợ giúp thiết lập môi trường của mình, hãy xem hướng dẫn

  • Cách thiết lập môi trường Python cho Machine Learning và Deep Learning với Anaconda

Trước tiên, hãy tải xuống bộ dữ liệu Pima Indians và đặt nó vào thư mục làm việc hiện tại của bạn với tên tệp là “pima–indians-diabetes. dữ liệu. csv” (cập nhật. tải xuống ở đây)

Chúng tôi sẽ tải tập dữ liệu bằng Pandas

1

2

3

# tải tập dữ liệu

data = read_csv('pima-indians- . dữ liệu. csv', tiêu đề=Không có)

giá trị = dữ liệu. giá trị

Tiếp theo, chúng ta sẽ cấu hình bootstrap. Chúng tôi sẽ sử dụng 1.000 lần lặp bootstrap và chọn một mẫu có kích thước bằng 50% của tập dữ liệu

1

2

3

# cấu hình bootstrap

n_iterations = 1000

n_size = int(len(data) * 0.50)

Tiếp theo, chúng tôi sẽ lặp lại bootstrap

Mẫu sẽ được chọn thay thế bằng hàm resample() từ sklearn. Bất kỳ hàng nào không có trong mẫu đều được truy xuất và sử dụng làm tập dữ liệu thử nghiệm. Tiếp theo, một bộ phân loại cây quyết định phù hợp với mẫu và được đánh giá trên tập kiểm tra, tính điểm phân loại và thêm vào danh sách các điểm được thu thập trên tất cả các bootstraps

1

2

3

4

5

6

7

8

9

10

11

12

# chạy bootstrap

số liệu thống kê = danh sách()

cho i trong phạm vi(n_iterations):

# chuẩn bị tập huấn luyện và kiểm tra

đào tạo = lấy mẫu lại(giá trị, n_samples=n_size)

kiểm tra = numpy. mảng([x cho . x in values if x.tolist() not in . train.tolist()])

# người mẫu phù hợp

model = DecisionTreeClassifier()

mô hình. phù hợp(huấn luyện[. ,. -1], đào tạo . [:,-1])

# đánh giá mô hình

dự đoán = mô hình. dự đoán(thử nghiệm[. ,. -1])

điểm = accuracy_score(kiểm tra[:,-1], predictions)

Sau khi điểm số được thu thập, biểu đồ được tạo để đưa ra ý tưởng về phân phối điểm số. Nhìn chung, chúng tôi mong đợi phân phối này là Gaussian, có lẽ với độ lệch với phương sai đối xứng xung quanh giá trị trung bình

Cuối cùng, chúng ta có thể tính khoảng tin cậy theo kinh nghiệm bằng cách sử dụng hàm centile() NumPy. Khoảng tin cậy 95% được sử dụng, vì vậy các giá trị tại 2. 5 và 97. 5 phần trăm được chọn

Đặt tất cả những thứ này lại với nhau, ví dụ hoàn chỉnh được liệt kê bên dưới

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

nhập numpy

từ gấu trúc nhập read_csv

từ sklearn. các tiện ích nhập lấy mẫu lại

từ sklearn. cây nhập DecisionTreeClassifier

từ sklearn. chỉ số nhập accuracy_score

từ matplotlib nhập pyplot

# tải tập dữ liệu

data = read_csv('pima-indians- . dữ liệu. csv', tiêu đề=Không có)

giá trị = dữ liệu. giá trị

# cấu hình bootstrap

n_iterations = 1000

n_size = int(len(data) * 0.50)

# chạy bootstrap

số liệu thống kê = danh sách()

cho i trong phạm vi(n_iterations):

# chuẩn bị tập huấn luyện và kiểm tra

đào tạo = lấy mẫu lại(giá trị, n_samples=n_size)

kiểm tra = numpy. mảng([x cho . x in values if x.tolist() not in . train.tolist()])

# người mẫu phù hợp

model = DecisionTreeClassifier()

mô hình. phù hợp(huấn luyện[. ,. -1], đào tạo . [:,-1])

# đánh giá mô hình

dự đoán = mô hình. dự đoán(thử nghiệm[. ,. -1])

điểm = accuracy_score(kiểm tra[:,-1], predictions)

in(điểm)

số liệu thống kê. nối(điểm)

# điểm cốt truyện

pyplot. lịch sử(số liệu thống kê)

pyplot. hiển thị()

# khoảng tin cậy

alpha = 0. 95

p = ((1. 0-alpha)/ . 0) * 100

thấp hơn = tối đa(0. 0, nuột nà. phân vị(số liệu thống kê, p))

p = (alpha+((1.0-alpha)/ . 0)) * 100

trên = phút(1. 0, nuột nà. phân vị(số liệu thống kê, p))

in('%. khoảng tin cậy 1f%. 1f%% và %. 1f%%' % (alpha*100, lower*100, upper*100))

Chạy ví dụ in độ chính xác phân loại mỗi lần lặp bootstrap

Biểu đồ của 1.000 điểm chính xác được tạo hiển thị phân phối giống như Gaussian

Chức năng nào được sử dụng để có được khoảng tin cậy trong bootstrapping?

Phân phối độ chính xác của phân loại bằng Bootstrap

Cuối cùng, khoảng tin cậy được báo cáo, cho thấy rằng có 95% khả năng là khoảng tin cậy 64. 4% và 73. 0% bao gồm các kỹ năng thực sự của mô hình

1

2

3

4

5

6

7

...

0. 646288209607

0. 682203389831

0. 668085106383

0. 673728813559

0. 686021505376

95. 0 khoảng tin cậy 64. 4% và 73. 0%

Phương pháp tương tự này có thể được sử dụng để tính khoảng tin cậy của bất kỳ điểm lỗi nào khác, chẳng hạn như lỗi bình phương trung bình gốc cho các thuật toán hồi quy

Đọc thêm

Phần này cung cấp các tài nguyên bổ sung về khoảng tin cậy bootstrap và bootstrap

  • Giới thiệu về Bootstrap, 1996
  • Khoảng tin cậy Bootstrap, Khoa học thống kê, 1996
  • Phần 5. 2. 3, Khoảng tin cậy Bootstrap, Phương pháp thực nghiệm cho trí tuệ nhân tạo
  • Bootstrapping trên Wikipedia
  • phần 4. 4 Kỹ thuật lấy mẫu lại, Mô hình dự đoán ứng dụng

Tóm lược

Trong bài đăng này, bạn đã khám phá cách sử dụng bootstrap để tính khoảng tin cậy cho các thuật toán học máy

Phân phối bootstrap được sử dụng như thế nào để tìm khoảng tin cậy?

tạo nhiều mẫu lại (có thay thế) từ một tập hợp các quan sát và tính toán mức độ ảnh hưởng quan tâm trên mỗi mẫu lại này . Sau đó, các mẫu khởi động lại của kích thước hiệu ứng có thể được sử dụng để xác định 95% CI. Với máy tính, chúng ta có thể thực hiện 5000 mẫu lại rất dễ dàng.

Chức năng nào được sử dụng để có được khoảng tin cậy?

Hàm T dùng để tính khoảng tin cậy có ý nghĩa bằng 0. 05 (tôi. e. , độ tin cậy 95%).