Bootstrapping có ý nghĩa gì trong khoa học dữ liệu?

Trong thống kê và học máy, bootstrapping là một kỹ thuật lấy mẫu lại liên quan đến việc lấy mẫu lặp đi lặp lại từ dữ liệu nguồn của chúng tôi bằng cách thay thế, thường để ước tính tham số dân số. Bằng cách thay thế bằng cách thay thế, chúng tôi muốn nói rằng cùng một điểm dữ liệu có thể được đưa vào tập dữ liệu được lấy mẫu lại của chúng tôi nhiều lần

Thuật ngữ này bắt nguồn từ ý tưởng bất khả thi về việc tự nâng mình lên mà không cần sự trợ giúp từ bên ngoài, bằng cách tự vận động. Lưu ý bên lề, nhưng rõ ràng đó cũng là lý do tại sao chúng tôi "khởi động" máy tính (để chạy phần mềm, trước tiên phần mềm phải được chạy, vì vậy chúng tôi khởi động)

Thông thường, dữ liệu nguồn của chúng tôi chỉ là một mẫu nhỏ của sự thật cơ bản. Bootstrapping dựa trên luật số lượng lớn một cách lỏng lẻo, quy luật này nói rằng với đủ dữ liệu, phân phối theo kinh nghiệm sẽ là một xấp xỉ tốt của phân phối thực

Sử dụng bootstrapping, chúng tôi có thể tạo phân phối ước tính, thay vì ước tính điểm đơn lẻ. Phân phối cung cấp cho chúng tôi thông tin về sự chắc chắn hoặc thiếu nó

Trong Hình 2 của bài báo Rajkomar, các tác giả lưu ý rằng “các thanh lỗi biểu thị khoảng tin cậy 95% được khởi động” cho các giá trị AUROC. Hãy sử dụng phương pháp tương tự để tính khoảng tin cậy khi đánh giá độ chính xác của một mô hình trên một tập hợp bài kiểm tra đã tổ chức. bước

  1. Vẽ một mẫu có kích thước N từ tập dữ liệu gốc bằng cách thay thế. Đây là một mẫu bootstrap
  2. Lặp lại bước 1 S lần để chúng ta có S mẫu bootstrap
  3. Ước tính giá trị của chúng tôi trên từng mẫu bootstrap để chúng tôi có S ước tính
  4. Sử dụng phân phối ước tính để suy luận (ví dụ: ước tính khoảng tin cậy)

import matplotlib.pyplot as plt
from sklearn.linear_model import LogisticRegression
from sklearn.model_selection import train_test_split
from sklearn.utils import resample
from sklearn.metrics import accuracy_score

# convert outcome to a categorical type
categories=['ALIVE', 'EXPIRED']
cohort['actualhospitalmortality'] = pd.Categorical(cohort['actualhospitalmortality'], categories=categories)

# add the encoded value to a new column
cohort['actualhospitalmortality_enc'] = cohort['actualhospitalmortality'].cat.codes
cohort[['actualhospitalmortality_enc','actualhospitalmortality']].head()

# define features and outcome
features = ['apachescore']
outcome = ['actualhospitalmortality_enc']

# partition data into training and test sets
X = cohort[features]
y = cohort[outcome]
x_train, x_test, y_train, y_test = train_test_split(X, y, train_size = 0.7, random_state = 42)

# restructure data for input into model
# note: remove the reshape if fitting to >1 input variable
x_train = x_train.values.reshape(-1, 1)
y_train = y_train.values.ravel()
x_test = x_test.values.reshape(-1, 1)
y_test = y_test.values.ravel()

# train model
reg = LogisticRegression(random_state=0)
reg.fit(x_train, y_train)

# bootstrap predictions
accuracy = []
n_iterations = 1000
for i in range(n_iterations):
    X_bs, y_bs = resample(x_train, y_train, replace=True)
    # make predictions
    y_hat = reg.predict(X_bs)
    # evaluate model
    score = accuracy_score(y_bs, y_hat)
    accuracy.append(score)

Hãy vẽ biểu đồ phân phối các giá trị độ chính xác được tính toán trên các mẫu bootstrap

import seaborn as sns
# plot distribution of accuracy
sns.kdeplot(accuracy)
plt.title("Accuracy across 1000 bootstrap samples of the held-out test set")
plt.xlabel("Accuracy")
plt.show()

Bootstrapping có ý nghĩa gì trong khoa học dữ liệu?

Bây giờ chúng ta có thể lấy độ chính xác trung bình trên các mẫu bootstrap và tính khoảng tin cậy. Có một số cách tiếp cận khác nhau để tính toán khoảng tin cậy. Chúng tôi sẽ sử dụng phương pháp phân vị, một cách tiếp cận đơn giản hơn không yêu cầu phân phối lấy mẫu của chúng tôi phải được phân phối bình thường

phương pháp phần trăm

Đối với khoảng tin cậy 95%, chúng tôi có thể tìm thấy số liệu thống kê bootstrap 95% ở giữa. Đây được gọi là phương pháp phần trăm. Đây là phương pháp ưa thích vì nó hoạt động bất kể hình dạng của phân phối lấy mẫu

Bất kể hình dạng của phân phối lấy mẫu bootstrap, chúng ta có thể sử dụng phương pháp phân vị để xây dựng khoảng tin cậy. Sử dụng phương pháp này, khoảng tin cậy 95% là phạm vi các điểm bao phủ 95% phân phối lấy mẫu bootstrap ở giữa

Chúng tôi xác định giá trị trung bình của từng mẫu, gọi nó là X̄ và tạo phân phối lấy mẫu của giá trị trung bình. Sau đó, chúng tôi lấy các phân vị α/2 và 1 - α/2 (e. g. các. 0251000 và. 9751000 = thống kê khởi động thứ 25 và 975), và đây là các giới hạn tin cậy

# get median
median = np.percentile(accuracy, 50)

# get 95% interval
alpha = 100-95
lower_ci = np.percentile(accuracy, alpha/2)
upper_ci = np.percentile(accuracy, 100-alpha/2)

print(f"Model accuracy is reported on the test set. 1000 bootstrapped samples " 
      f"were used to calculate 95% confidence intervals.\n"
      f"Median accuracy is {median:.2f} with a 95% a confidence "
      f"interval of [{lower_ci:.2f},{upper_ci:.2f}].")

Model accuracy is reported on the test set. 1000 bootstrapped samples were used to calculate 95% confidence intervals.
Median accuracy is 0.86 with a 95% a confidence interval of [0.80,0.91].

sns.kdeplot(accuracy)
plt.title("Accuracy across 1000 bootstrap samples of the held-out test set\n"
          "showing median with 95\\% confidence intervals")
plt.xlabel("Accuracy")
plt.axvline(median,0, 14, linestyle="--", color="red")
plt.axvline(lower_ci,0, 14, linestyle="--", color="red")
plt.axvline(upper_ci,0, 14, linestyle="--", color="red")
plt.show()

Bootstrapping có ý nghĩa gì trong khoa học dữ liệu?

Khi một khoảng được tính toán, nó có thể chứa hoặc không chứa giá trị thực của tham số chưa biết. Mức độ tin cậy 95% *không* có nghĩa là có 95% xác suất tham số tổng thể nằm trong khoảng

Khoảng tin cậy cho chúng ta biết về độ tin cậy của quy trình ước lượng. 95% khoảng tin cậy được tính ở mức độ tin cậy 95% chứa giá trị thực của tham số

Những điểm chính

  • Bootstrapping là một kỹ thuật lấy mẫu lại, đôi khi bị nhầm lẫn với xác thực chéo

  • Bootstrapping cho phép chúng tôi tạo phân phối các ước tính, thay vì ước tính một điểm duy nhất

    Bootstrapping là gì và tại sao nó được sử dụng?

    Bootstrapping là quá trình xây dựng doanh nghiệp từ đầu mà không cần thu hút đầu tư hoặc với nguồn vốn bên ngoài tối thiểu . Đó là một cách để tài trợ cho các doanh nghiệp nhỏ bằng cách mua và sử dụng tài nguyên bằng chi phí của chủ sở hữu mà không chia sẻ vốn chủ sở hữu hoặc vay một khoản tiền lớn từ ngân hàng.

    Bootstrapping trong thuật ngữ đơn giản là gì?

    Khởi động là một thuật ngữ được sử dụng trong kinh doanh để chỉ quá trình chỉ sử dụng các nguồn lực hiện có, chẳng hạn như tiền tiết kiệm cá nhân, thiết bị máy tính cá nhân và không gian nhà để xe, để bắt đầu và phát triển một doanh nghiệp. . .

    Bootstrapping được gọi là gì trong học máy?

    Lấy mẫu bootstrap được sử dụng trong thuật toán tập hợp máy học có tên là bootstrap aggregating (còn gọi là đóng gói). Nó giúp tránh trang bị quá mức và cải thiện tính ổn định của các thuật toán học máy.

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

    Tôi thấy bootstrapping rất hữu ích trong hai tình huống chính. khi mẫu khá nhỏ (nhưng không nhỏ) và khi phân phối không sạch (giả sử đó là hỗn hợp của hai phân phối)