Khi nào tôi nên sử dụng bootstrapping?

[Gist embed code (this it for embedding directly into the website if that’s preferred: ]def bootstrapped_conf_interval(data, metric, num_runs=1000, conf=.95):

""" mục đích. Tính khoảng tin cậy cho hiệu suất mô hình (số liệu)

Thông số

—————-

dữ liệu. danh sách các điểm dữ liệu ở định dạng được get_metric chấp nhận

Hệ mét. các tùy chọn bao gồm 'độ chính xác', 'độ chính xác', 'thu hồi' và 'điểm f1'

conf. mức độ chắc chắn mà bạn muốn về phạm vi giá trị có thể có của số liệu đo lường của bạn

num_run. int chỉ định số lượng mẫu dữ liệu được khởi động mà bạn muốn

trả lại

———-

Bộ tin cậy với số float dưới dạng các mục cũ. (. 2,. 3)

“””

kết quả = []

# lấy num _runs các mẫu khởi động của dữ liệu chưa được gắn nhãn và được gắn nhãn

cho tôi trong phạm vi (num_runs)

bootstrapped_data = np. ngẫu nhiên. lựa chọn (dữ liệu, len (dữ liệu))

kết quả. nối thêm (get_metric (bootstrapped_data, số liệu))

kết quả. loại()

bootstrapped_mean = tổng (kết quả) / float (len (kết quả))

x_bar = get_metric(dữ liệu, số liệu)

# bạn muốn cắt bỏ bao nhiêu chỉ số đo được ở một trong hai đầu

left_index = int(num_runs * (1 – conf) / 2)

# sai lệch so với phương tiện bootstrapped

delta_interval = [kết quả[left_index] – bootstrapped_mean,

kết quả[-left_index] – bootstrapped_mean]

# độ lệch so với giá trị trung bình so với mẫu thực tế, không phải mẫu khởi động

khoảng thời gian = [delta_interval[0] + x_bar, delta_interval[1] + x_bar]

khoảng thời gian trở lại

Phương pháp bootstrap là một kỹ thuật lấy mẫu lại được sử dụng để ước tính số liệu thống kê về dân số bằng cách lấy mẫu tập dữ liệu có thay thế

Nó có thể được sử dụng để ước tính số liệu thống kê tóm tắt như giá trị trung bình hoặc độ lệch chuẩn. Nó được sử dụng trong học máy ứng dụng để ước tính kỹ năng của các mô hình học máy khi đưa ra dự đoán về dữ liệu không có trong dữ liệu huấn luyện

Một thuộc tính mong muốn của các kết quả từ việc ước tính kỹ năng mô hình học máy là kỹ năng ước tính có thể được trình bày với khoảng tin cậy, một tính năng không có sẵn với các phương pháp khác như xác thực chéo

Trong hướng dẫn này, bạn sẽ khám phá phương pháp lấy mẫu lại bootstrap để ước tính kỹ năng của các mô hình học máy trên dữ liệu không nhìn thấy được

Sau khi hoàn thành hướng dẫn này, bạn sẽ biết

  • Phương pháp bootstrap liên quan đến việc lặp đi lặp lại việc lấy mẫu lại một tập dữ liệu với sự thay thế
  • Rằng khi sử dụng bootstrap, bạn phải chọn kích thước của mẫu và số lần lặp lại
  • scikit-learning cung cấp một chức năng mà bạn có thể sử dụng để lấy mẫu lại tập dữ liệu cho phương thức bootstrap

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

Khi nào tôi nên sử dụng bootstrapping?

Giới thiệu sơ lược về Phương pháp Bootstrap
Ảnh của john mcsporran, bảo lưu một số quyền.

Hướng dẫn tổng quan

Hướng dẫn này được chia thành 4 phần;

  1. Phương pháp Bootstrap
  2. Cấu hình của Bootstrap
  3. Ví dụ đã làm việc
  4. API khởi động

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

Phương pháp Bootstrap

Phương pháp bootstrap là một kỹ thuật thống kê để ước tính số lượng về dân số bằng cách ước tính trung bình từ nhiều mẫu dữ liệu nhỏ

Điều quan trọng là các mẫu được xây dựng bằng cách vẽ các quan sát từ một mẫu dữ liệu lớn tại một thời điểm và đưa chúng trở lại mẫu dữ liệu sau khi chúng được chọn. Điều này cho phép một quan sát nhất định được đưa vào một mẫu nhỏ nhất định nhiều lần. Phương pháp lấy mẫu này được gọi là lấy mẫu có thay thế

Quá trình xây dựng một mẫu có thể được tóm tắt như sau

  1. Chọn kích thước của mẫu
  2. Trong khi kích thước của mẫu nhỏ hơn kích thước đã chọn
    1. Chọn ngẫu nhiên một quan sát từ tập dữ liệu
    2. Thêm nó vào mẫu

Phương pháp bootstrap có thể được sử dụng để ước tính số lượng dân số. Điều này được thực hiện bằng cách liên tục lấy các mẫu nhỏ, tính toán số liệu thống kê và lấy giá trị trung bình của số liệu thống kê được tính toán. Ta có thể tóm tắt quy trình này như sau

  1. Chọn một số mẫu bootstrap để thực hiện
  2. Chọn cỡ mẫu
  3. Đối với mỗi mẫu bootstrap
    1. Vẽ một mẫu có thay thế với kích thước đã chọn
    2. Tính thống kê trên mẫu
  4. Tính giá trị trung bình của thống kê mẫu được tính toán

Quy trình này cũng có thể được sử dụng để ước tính kỹ năng của một mô hình học máy

Bootstrap là một công cụ thống kê cực kỳ mạnh mẽ và có thể áp dụng rộng rãi, có thể được sử dụng để định lượng độ không đảm bảo liên quan đến một công cụ ước tính hoặc phương pháp học thống kê nhất định

— Trang 187, Giới thiệu về Học tập Thống kê, 2013

Điều này được thực hiện bằng cách đào tạo mô hình trên mẫu và đánh giá kỹ năng của mô hình trên những mẫu không có trong mẫu. Các mẫu này không có trong một mẫu nhất định được gọi là mẫu ngoài túi hoặc viết tắt là OOB

Quy trình sử dụng phương pháp bootstrap này để ước tính kỹ năng của mô hình có thể được tóm tắt như sau

  1. Chọn một số mẫu bootstrap để thực hiện
  2. Chọn cỡ mẫu
  3. Đối với mỗi mẫu bootstrap
    1. Vẽ một mẫu có thay thế với kích thước đã chọn
    2. Khớp một mô hình trên mẫu dữ liệu
    3. Ước tính kỹ năng của người mẫu trên mẫu ngoài túi
  4. Tính giá trị trung bình của mẫu ước tính kỹ năng mô hình

Các mẫu không được chọn thường được gọi là mẫu “out-of-bag”. Đối với một lần lặp lại quy trình lấy mẫu bootstrap nhất định, một mô hình được xây dựng dựa trên các mẫu đã chọn và được sử dụng để dự đoán các mẫu đã xuất xưởng

— Trang 72, Mô hình dự báo ứng dụng, 2013

Điều quan trọng là mọi sự chuẩn bị dữ liệu trước khi lắp mô hình hoặc điều chỉnh siêu tham số của mô hình phải diễn ra trong vòng lặp for trên mẫu dữ liệu. Điều này là để tránh rò rỉ dữ liệu khi kiến ​​thức về tập dữ liệu thử nghiệm được sử dụng để cải thiện mô hình. Đổi lại, điều này có thể dẫn đến một ước tính lạc quan về kỹ năng mô hình

Một tính năng hữu ích của phương pháp bootstrap là mẫu ước tính kết quả thường tạo thành phân phối Gaussian. Ngoài việc tóm tắt phân phối này với xu hướng trung tâm, có thể đưa ra các phép đo phương sai, chẳng hạn như độ lệch chuẩn và lỗi chuẩn. Hơn nữa, một khoảng tin cậy có thể được tính toán và sử dụng để giới hạn ước tính được trình bày. Điều này rất hữu ích khi trình bày kỹ năng ước tính của một mô hình học máy

Cấu hình của Bootstrap

Có hai tham số phải được chọn khi thực hiện bootstrap. kích thước của mẫu và số lần lặp lại của thủ tục để thực hiện

Cỡ mẫu

Trong học máy, người ta thường sử dụng kích thước mẫu giống với tập dữ liệu gốc

Mẫu bootstrap có cùng kích thước với tập dữ liệu gốc. Do đó, một số mẫu sẽ được biểu diễn nhiều lần trong mẫu bootstrap trong khi những mẫu khác hoàn toàn không được chọn

— Trang 72, Mô hình dự báo ứng dụng, 2013

Nếu tập dữ liệu quá lớn và hiệu quả tính toán là một vấn đề, thì có thể sử dụng các mẫu nhỏ hơn, chẳng hạn như 50% hoặc 80% kích thước của tập dữ liệu

lặp đi lặp lại

Số lần lặp lại phải đủ lớn để đảm bảo có thể tính được các số liệu thống kê có ý nghĩa, chẳng hạn như giá trị trung bình, độ lệch chuẩn và sai số chuẩn trên mẫu

Tối thiểu có thể là 20 hoặc 30 lần lặp lại. Các giá trị nhỏ hơn có thể được sử dụng sẽ thêm phương sai vào số liệu thống kê được tính trên mẫu của các giá trị ước tính

Lý tưởng nhất là mẫu ước tính sẽ càng lớn càng tốt với nguồn thời gian, với hàng trăm hoặc hàng nghìn lần lặp lại

Ví dụ đã làm việc

Chúng ta có thể làm cho quy trình bootstrap trở nên cụ thể với một ví dụ nhỏ đã được thực hiện. Chúng tôi sẽ làm việc thông qua một lần lặp lại quy trình

Hãy tưởng tượng chúng ta có một bộ dữ liệu với 6 quan sát

1

[0. 1, 0. 2, 0. 3, 0. 4, 0. 5, 0. 6]

Bước đầu tiên là chọn kích thước của mẫu. Ở đây, chúng ta sẽ sử dụng 4

Tiếp theo, chúng ta phải chọn ngẫu nhiên quan sát đầu tiên từ bộ dữ liệu. Hãy chọn 0. 2

1

mẫu = [0. 2]

Quan sát này được trả về tập dữ liệu và chúng tôi lặp lại bước này 3 lần nữa

1

mẫu = [0. 2, 0. 1, 0. 2, 0. 6]

Bây giờ chúng tôi có mẫu dữ liệu của chúng tôi. Ví dụ này chứng minh một cách có mục đích rằng cùng một giá trị có thể xuất hiện bằng 0, một hoặc nhiều lần trong mẫu. Đây là quan sát 0. 2 xuất hiện hai lần

Một ước tính sau đó có thể được tính toán trên mẫu được rút ra

1

thống kê = tính toán ([0. 2, 0. 1, 0. 2, 0. 6])

Những quan sát không được chọn cho mẫu có thể được sử dụng làm quan sát ngoài mẫu

1

oob = [0. 3, 0. 4, 0. 5]

Trong trường hợp đánh giá một mô hình học máy, mô hình đó phù hợp với mẫu đã vẽ và được đánh giá trên mẫu bên ngoài

1

2

3

4

xe lửa = [0. 2, 0. 1, 0. 2, 0. 6]

kiểm tra = [0. 3, 0. 4, 0. 5]

mô hình = phù hợp (đào tạo)

thống kê = đánh giá (mô hình, thử nghiệm)

Điều đó kết thúc một lần lặp lại thủ tục. Nó có thể được lặp lại 30 lần hoặc nhiều hơn để đưa ra một mẫu thống kê được tính toán

1

thống kê = [. ]

Mẫu thống kê này sau đó có thể được tóm tắt bằng cách tính giá trị trung bình, độ lệch chuẩn hoặc các giá trị tóm tắt khác để đưa ra ước tính có thể sử dụng cuối cùng của thống kê

1

ước tính = trung bình ([. ])

API khởi động

Chúng tôi không phải thực hiện phương thức bootstrap theo cách thủ công. Thư viện scikit-learning cung cấp một triển khai sẽ tạo một mẫu bootstrap duy nhất của tập dữ liệu

Có thể sử dụng hàm resample() scikit-learning. Nó lấy mảng dữ liệu làm đối số, có lấy mẫu thay thế hay không, kích thước của mẫu và hạt giống cho trình tạo số giả ngẫu nhiên được sử dụng trước khi lấy mẫu

Ví dụ: chúng ta có thể tạo một bootstrap để tạo một mẫu thay thế bằng 4 quan sát và sử dụng giá trị 1 cho trình tạo số giả ngẫu nhiên

1

khởi động = lấy mẫu lại(dữ liệu, replace=True, n_samples=4, random_state=1)

Thật không may, API không bao gồm bất kỳ cơ chế nào để dễ dàng thu thập các quan sát bên ngoài có thể được sử dụng làm bộ thử nghiệm để đánh giá một mô hình phù hợp

Ít nhất trong trường hợp đơn biến, chúng ta có thể thu thập các quan sát bên ngoài bằng cách sử dụng cách hiểu danh sách Python đơn giản

1

2

# quan sát ngoài túi

oob = [x cho x in data if x not in boot]

Chúng tôi có thể kết hợp tất cả những điều này với tập dữ liệu nhỏ của chúng tôi được sử dụng trong ví dụ hoạt động của phần trước

1

2

3

4

5

6

7

8

9

10

# scikit-learning bootstrap

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

# mẫu dữ liệu

dữ liệu = [0. 1, 0. 2, 0. 3, 0. 4, 0. 5, 0. 6]

# chuẩn bị mẫu bootstrap

khởi động = lấy mẫu lại(dữ liệu, replace=True, n_samples=4, random_state=1)

in('Bootstrap Mẫu. %s' % khởi động)

# quan sát ngoài túi

oob = [x cho x in data if x not in boot]

in('OOB mẫu. %s' % oob)

Chạy ví dụ in các quan sát trong mẫu bootstrap và những quan sát đó trong mẫu xuất xưởng

1

2

Bootstrap mẫu. [0. 6, 0. 4, 0. 5, 0. 1]

Mẫu OOB. [0. 2, 0. 3]

Tiện ích mở rộng

Phần này liệt kê một số ý tưởng để mở rộng hướng dẫn mà bạn có thể muốn khám phá

  • Liệt kê 3 số liệu thống kê tóm tắt mà bạn có thể ước tính bằng phương pháp bootstrap
  • Tìm 3 bài nghiên cứu sử dụng phương pháp bootstrap để đánh giá hiệu năng của các mô hình machine learning
  • Thực hiện chức năng của riêng bạn để tạo mẫu và mẫu xuất xưởng bằng phương pháp bootstrap

Nếu bạn khám phá bất kỳ tiện ích mở rộng nào trong số này, tôi rất muốn biết

Đọc thêm

Phần này cung cấp nhiều tài nguyên hơn về chủ đề này nếu bạn muốn tìm hiểu sâu hơn

bài viết

  • Cách tính khoảng tin cậy Bootstrap cho kết quả học máy bằng Python

Sách

  • Mô hình dự báo ứng dụng, 2013
  • Giới thiệu về học tập thống kê, 2013
  • Giới thiệu về Bootstrap, 1994

API

  • sklearning. đồ dùng. resample() API
  • sklearning. model_selection. API lựa chọn mô hình

Bài viết

  • Lấy mẫu lại (thống kê) trên Wikipedia
  • Bootstrapping (thống kê) trên Wikipedia
  • Quy tắc ngón tay cái cho số lượng mẫu bootstrap, CrossValiated

Tóm lược

Trong hướng dẫn này, bạn đã khám phá ra phương pháp lấy mẫu lại bootstrap để ước tính kỹ năng của các mô hình máy học trên dữ liệu không nhìn thấy được

Tại sao bạn sẽ sử dụng bootstrapping?

“Ưu điểm của bootstrapping là đó là một cách đơn giản để lấy các ước tính về sai số chuẩn và khoảng tin cậy , đồng thời thuận tiện . ”

Lợi thế của số liệu thống kê bootstrapping là gì?

Một lợi thế chính là bootstrapping không cần bạn đưa ra bất kỳ giả định nào về dữ liệu (chẳng hạn như tính quy tắc), bất kể .

Một hạn chế chính của bootstrap là gì?

Nó không thực hiện hiệu chỉnh sai lệch , v.v. Không có cách chữa trị cho cỡ mẫu nhỏ. Bootstrap rất mạnh, nhưng nó không phải là ma thuật — nó chỉ có thể hoạt động với thông tin có sẵn trong mẫu ban đầu. Nếu các mẫu không đại diện cho toàn bộ dân số, thì bootstrap sẽ không chính xác lắm.