Cách phân chia chính xác tập dữ liệu không cân bằng kết hợp kiểm tra tàu và tập xác nhận chéo

Aug 16 2020

Hình ảnh trên là những gì tôi đang cố gắng tái tạo. Tôi chỉ không biết liệu mình có đang đi đúng hướng hay không. Tôi đang làm việc với tập dữ liệu FakeNewsChallenge và tập dữ liệu của nó cực kỳ mất cân bằng, và tôi đang cố gắng sao chép và cải thiện một phương pháp được sử dụng trong một bài báo.


Đồng ý - 7,36%

Không đồng ý - 1,68%

Thảo luận - 17,82%

Không liên quan - 73,13%

Tôi đang tách dữ liệu theo cách này:

(tách tập dữ liệu thành phân tách 67/33)

  • đào tạo 67%, kiểm tra 33%

(chia nhỏ đào tạo thêm 80/20 để xác nhận)

  • đào tạo 80%, xác nhận 20%

(Sau đó chia nhỏ đào tạo và xác nhận bằng cách sử dụng bộ xác nhận chéo 3 lần)

Ngoài ra, việc đạt được 1,68% không đồng ý và đồng ý là một việc cực kỳ khó khăn.


Đây là nơi tôi đang gặp vấn đề vì nó không có ý nghĩa gì đối với tôi. Bộ xác thực được tạo trong phần tách 80/20 có được phân tầng cũng như trong phần 5 không?

Đây là nơi tôi đang ở hiện tại:


Chia dữ liệu thành 67% Tập huấn luyện và 33% Tập kiểm tra

x_train1, x_test, y_train1, y_test = train_test_split(x, y, test_size=0.33)

x_train2, x_val, y_train2, y_val = train_test_split(x_train1, y_train1, test_size=0.20)

skf = StratifiedKFold(n_splits=3, shuffle = True)
skf.getn_splits(x_train2, y_train2)

for train_index, test_index in skf.split(x_train2, y_train2):
  x_train_cros, x_test_cros = x_train2[train_index], x_train2[test_index]
  y_train_cros, y_test_cros = y_train2[train_index], y_train[test_index]

Tôi cũng sẽ chạy lại skf cho bộ xác thực chứ? Các bộ kiểm tra thử nghiệm từ skf được tạo đang được sử dụng trong mô hình tuần tự ở đâu?


Trích dẫn cho phương pháp tôi đang sử dụng:

Thota, Aswini; Tilak, Priyanka; Ahluwalia, Simrat; và Lohia, Nibrat (2018) "Phát hiện tin tức giả: Phương pháp tiếp cận học tập sâu", Tạp chí Khoa học Dữ liệu của SMU: Vol. 1: Số 3, Điều 10. Có tại:https://scholar.smu.edu/datasciencereview/vol1/iss3/10

Trả lời

2 SuryaLohia. Aug 16 2020 at 06:14

Bạn cần thêm một tham số nữa trong hàm 'train_test_split ()':

x_train1, x_test, y_train1, y_test = train_test_split(x, y, test_size=0.33, stratify = y)

Điều này sẽ giúp bạn phân bổ đồng đều tất cả các danh mục mục tiêu.