일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- 데이콘
- dacon
- 더현대서울 맛집
- Git
- PYTHON
- 편스토랑
- AI 경진대회
- gs25
- 우분투
- hackerrank
- ChatGPT
- SW Expert Academy
- 자연어처리
- 캐치카페
- Docker
- 금융문자분석경진대회
- 프로그래머스
- Baekjoon
- 맥북
- programmers
- 백준
- 코로나19
- ubuntu
- github
- Real or Not? NLP with Disaster Tweets
- 파이썬
- 편스토랑 우승상품
- leetcode
- Kaggle
- 프로그래머스 파이썬
- Today
- Total
솜씨좋은장씨
DACON 금융문자분석 공모전 - 도전 2일차 본문
1. 아이디어
형태소 분석기를 Okt에서 Mecab으로 바꾸어 토큰화 한 후 모델을 학습시켜 결과 확인
Mecab을 활용하여 토큰화하니 문자데이터의 최대 길이가 666으로 증가하였습니다.
from keras.layers import Embedding, Dense, LSTM
from keras.models import Sequential
from keras.preprocessing.sequence import pad_sequences
max_len = 666 # 전체 데이터의 길이를 666로 맞춘다
X_train = pad_sequences(X_train, maxlen=max_len)
X_test = pad_sequences(X_test, maxlen=max_len)
모델링
첫번째 시도해본 모델 (Google Colab -TPU)
학습데이터 토큰화 시 형태소 분석기를 Okt에서 mecab으로 pad_sequence의 길이를 666으로 수정하여 만든 모델입니다.
model = Sequential()
model.add(Embedding(max_words, 100))
model.add(LSTM(128))
model.add(Dense(2, activation='sigmoid'))
model.compile(optimizer='adam', loss='binary_crossentropy', metrics=['accuracy'])
history = model.fit(X_train, y_train, epochs=5, batch_size=32, validation_split=0.1)
epoch | 5 | batch_size | 32 |
optimizer | adam | validation_split | 0.1 |
epoch 4이후에 validation loss가 올라가고 validation accuracy가 떨어지는 것을 보니 epoch 4 이후에 오버피팅 되는 것 같았습니다.
첫번째 시도 결과
두번째 시도해본 모델 (Google Colab -TPU)
앞서 epoch가 4에서 오버피팅이 진행되는 것 같아 epoch만 5에서 4로 바꾸어 model을 만들어 보았습니다.
model = Sequential()
model.add(Embedding(max_words, 100))
model.add(LSTM(128))
model.add(Dense(2, activation='sigmoid'))
model.compile(optimizer='adam', loss='binary_crossentropy', metrics=['accuracy'])
history = model.fit(X_train, y_train, epochs=4, batch_size=32, validation_split=0.1)
epoch | 4 | batch_size | 32 |
optimizer | adam | validation_split | 0.1 |
epoch만 4로 바꾸었으니 4번째에서 최적의 결과가 나올거라고 생각했지만 생각과는 조금 다르게 학습이 진행되었습니다.
두번째 시도 결과
세번째 시도해본 모델 (Google Colab -GPU)
마지막은 지금까지의 모델 중에 가장 성능이 좋게 평가된 TPU로 학습시켰던 가장 첫번째 모델을 TPU에서 GPU로 환경만 변화시켜서 학습을 시켜보았습니다.
model = Sequential()
model.add(Embedding(max_words, 100))
model.add(LSTM(128))
model.add(Dense(2, activation='sigmoid'))
model.compile(optimizer='adam', loss='binary_crossentropy', metrics=['accuracy'])
history = model.fit(X_train, y_train, epochs=5, batch_size=32, validation_split=0.1)
epoch | 5 | batch_size | 32 |
optimizer | adam | validation_split | 0.1 |
어떤 이유인지는 모르겠으나 TPU로 학습시켰을때보다 1 epoch당 소요되는 시간이 더 짧게 소요되었습니다.
세번째 시도 결과
도전 2일차 결과
순위 | 점수 | epoch / batch | optimizer | val_split | train_data | 특수문자제거 | colab | 형태소분석기 |
1 | 0.97262973 | 5 / 32 | adam | 0.1 | ||||
2 | ||||||||
3 | 0.96873422 | 5 / 32 | adam | 0.1 | model_kb_dacon01_trainset.csv | X | GPU | Okt |
4 | 0.96549088 | 5 / 32 | rmsprop | X | model_kb_dacon01_trainset.csv | X | TPU | Okt |
5 | 0.9608906 | 5 / 32 | adam | X | model_kb_dacon01_trainset.csv | X | TPU | Okt |
6 | 0.95197054 | 5 / 32 | adam | 0.1 | model_kb_dacon01_trainset.csv | X | TPU | Mecab |
랭킹 등수 갱신은 실패하였습니다.
앞으로의 계획
train_data 속 ( )와 같은 특수문자를 제거하고 학습을 시켜보려 합니다.
train_data의 정상문자의 데이터를 더 추가해서 학습시켜 보려합니다.
학습 시 마다 다르게 학습되는 이유를 파악해보고자 합니다.
'DACON > KB 금융문자 분석 경진대회' 카테고리의 다른 글
DACON 금융문자분석 공모전 - 도전 6일차 (8) | 2019.12.19 |
---|---|
DACON 금융문자분석 공모전 - 도전 5일차 (0) | 2019.12.18 |
DACON 금융문자분석 공모전 - 도전 4일차 (0) | 2019.12.17 |
DACON 금융문자분석 공모전 - 도전 3일차 (0) | 2019.12.16 |
DACON 금융문자분석 공모전 - 도전 1일차 (4) | 2019.12.14 |