관리 메뉴

솜씨좋은장씨

DACON 금융문자분석 공모전 - 도전 4일차 본문

DACON/KB 금융문자 분석 경진대회

DACON 금융문자분석 공모전 - 도전 4일차

솜씨좋은장씨 2019. 12. 17. 12:50
728x90
반응형

오늘은 가장 좋았던 모델에서 하이퍼 파라미터를 바꾸어 시도해보았습니다.

 

1. Embedding 레이어에서 output_dim 만 100 -> 128로 변경 (Google Colab -TPU)

model3 = Sequential()
model3.add(Embedding(max_words, 128))
model3.add(LSTM(128))
model3.add(Dense(2, activation='sigmoid'))

model3.compile(optimizer='adam', loss='binary_crossentropy', metrics=['accuracy'])
history3 = model3.fit(X_train, y_train, epochs=2, batch_size=32, validation_split=0.1)
epoch2batch_size32
optimizeradamvalidation_split0.1

 

 

 

2. Embedding 레이어에서 output_dim 100 -> 128 / LSTM 128 -> 256 (Google Colab -TPU)

model4 = Sequential()
model4.add(Embedding(max_words, 128))
model4.add(LSTM(256))
model4.add(Dense(2, activation='sigmoid'))

model4.compile(optimizer='adam', loss='binary_crossentropy', metrics=['accuracy'])
history4 = model4.fit(X_train, y_train, epochs=2, batch_size=32, validation_split=0.1)
epoch2batch_size32
optimizeradamvalidation_split0.1

 

 

 

3. LSTM 128 -> 256 (Google Colab -TPU)

model5 = Sequential()
model5.add(Embedding(max_words, 100))
model5.add(LSTM(256))
model5.add(Dense(2, activation='sigmoid'))
 
model5.compile(optimizer='adam', loss='binary_crossentropy', metrics=['accuracy'])
history5 = model5.fit(X_train, y_train, epochs=2, batch_size=32, validation_split=0.1)
epoch2batch_size32
optimizeradamvalidation_split0.1

 

 

첫번째 제출

둘중에 validation accuracy가 더 좋은 첫번째 모델을 제출해보았습니다.

 

첫번째 제출 결과

 

 

 

 

두번째 제출

세번째 모델을 제출해보았습니다. 

첫번째 제출 결과

 

 

이번에는 데이터셋 선별을 다시해서 학습을 시켜보기로 했습니다.

 

기존에는 정상 문자와 스미싱 문자의 비율을 1 대 1 로 맞췄다면

 

이번에는 정상문자와 스미싱 문자의 비율을 1.5 대 1 로 맞추어 보았습니다.

 

그 데이터를 가지고 가장 점수가 좋았던 모델을 학습시켜 보았습니다.

 

세번째 제출 (Google Colab -TPU)

model3 = Sequential()
model3.add(Embedding(max_words, 100))
model3.add(LSTM(128))
model3.add(Dense(2, activation='sigmoid'))
 
model3.compile(optimizer='adam', loss='binary_crossentropy', metrics=['accuracy'])
history3 = model3.fit(X_train, y_train, epochs=2, batch_size=32, validation_split=0.1)
epoch2batch_size32
optimizeradamvalidation_split0.1

 

 

 

세번째 제출 결과

 

 

순위점수epoch / batchoptimizerval_splittrain_data특수문자제거colab
1
20.9729803652 / 32adam0.1model_kb_dacon02_trainset.csvOTPUMecab9
30.972629735 / 32adam0.1
4
50.9720301542 / 32adam0.1model_kb_dacon02_trainset.csvOTPUOkt10
60.968734225 / 32adam0.1model_kb_dacon01_trainset.csvXGPUOkt6
70.965490885 / 32rmspropXmodel_kb_dacon01_trainset.csvXTPUOkt2
80.96089065 / 32adamXmodel_kb_dacon01_trainset.csvXTPUOkt3
9
100.951970545 / 32adam0.1model_kb_dacon01_trainset.csvXTPUMecab 5
11
120.7013884993 / 32adamXmodel_kb_dacon01_trainset.csXGPUELMo7

 

정상문자의 데이터 셋을 더 늘려서 학습하면 더 좋을 줄 알았는데 아니었습니다.

 

계속 여러 파라미터를 바꿔보기도하고 다른 모델을 사용해보려고 합니다.

Comments