기차 테스트 및 교차 검증 세트를 통합하는 불균형 데이터 세트를 올바르게 분할하는 방법

Aug 16 2020

위의 그림은 제가 복제하려는 것입니다. 나는 내가 그것에 대해 올바른 방법으로 가고 있는지 모르겠습니다. 저는 FakeNewsChallenge 데이터 세트와 극도로 불균형 한 데이터로 작업하고 있으며, 논문에 사용 된 방법을 복제하고 개선하려고합니다.


동의 함-7.36 %

동의하지 않음-1.68 %

토론-17.82 %

무관-73.13 %

이 방법으로 데이터를 분할합니다.

(데이터 세트를 67/33 분할로 분할)

  • 훈련 67 %, 테스트 33 %

(검증을 위해 80/20 추가 교육 분할)

  • 훈련 80 %, 검증 20 %

(그런 다음 3 겹 교차 검증 세트를 사용하여 훈련 및 검증을 분할합니다)

제쳐두고, 1.68 %의 동의하지 않고 동의하는 것은 매우 어려웠습니다.


이것은 나에게 완전히 이해가되지 않는 문제가있는 곳입니다. 80/20 분할에서 생성 된 유효성 검사 세트도 5 겹으로 계층화됩니까?

현재 내가있는 곳은 다음과 같습니다.


67 % 훈련 세트와 33 % 테스트 세트로 데이터 분할

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]

유효성 검사 세트에 대해서도 skf를 다시 실행합니까? 순차 모델에서 사용되는 skf의 테스트 테스트 세트는 어디에 있습니까?


내가 사용하는 방법에 대한 인용 :

Thota, Aswini; Tilak, Priyanka; Ahluwalia, Simrat; 및 Lohia, Nibrat (2018) "Fake News Detection : A Deep Learning Approach", SMU Data Science Review : Vol. 1 : No. 3, Article 10. 이용 가능 :https://scholar.smu.edu/datasciencereview/vol1/iss3/10

답변

2 SuryaLohia. Aug 16 2020 at 06:14

'train_test_split ()'함수에 매개 변수를 하나 더 추가해야합니다.

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

이렇게하면 모든 대상 범주를 균등하게 분배 할 수 있습니다.