Sequence 모델링
transcaction data 같은 sequence data를 사용하기 위해서는 feature engineering을 통해 집계해서 non-sequence하게 만들어 사용할 수도 있다.
집계 : Aggregation
다음과 같은 방법으로 feature engineering을 해서 사용할 수 있다.
여러 유저의 신용카드 사용 내역이 있다고 하면 한 유저에 대해서 여러 사용내역이 있게 되고 이것을 한 유저에 대해서 집계할 수 있다.
- categorical 변수같은 경우는 많이 나온 한 카테고리를 선택할 수도 있다.
- null이 아닌 것의 횟수를 센다
- 연속형 변수면 평균을 취한다
하지만 집계하는 과정에서 정보들이 많이 손실된다. 집계하지 않고 transaction을 그대로 sequence datat를 사용하면 sequence modeling 이 필요하다. transaction을 그대로 사용해도 feature engineering을 하면 성능이 더 좋아질 수도 있다. 기록이 하나 마칠 때 마다 예측을 하는 것이 아니라 그 연속된 값들이 끝난 마지막 시점에서 예측을 하게되는 경우가 생길 수 있다.
Tabular Approach
DKT문제를 정형 데이터 형태로 가정하고 모델 적용을 해보자
Feature engineering
- 문제를 푼 시점에서의 사용자의 적중률/갯수
- 사람의 실력, 문제의 난이도를 나타내는 feature
시험지 평균, 태그별 평균
Train/Valid Data Split
행 단위로 개수를 세는 것이 아니라, 사용자별로 묶어서 사용자의 단위로 train data와 valid data로 split해야한다. 즉, 한 사람의 학습기록이 train와 valid에 둘 다 존재해서는 안 된다.
Model Training
하이퍼 파라미터 튜닝을 아예 안 한 상태에서 하면 성능 향상이 있지만, 일정 수준 이상을 바라면 feature engineering을 해야한다.
Feature importance를 보고 feature를 버릴 수도 있다.
Sequential Approach
task의 종류에 따라 입출력의 구조가 달라진다
- one-to-one
ex) 주식의 하루 데이터만 주고 종가 맞추기 - one-to-many
ex) 사진 한 장으로 여러 단어로 이루어진 문장 만들어내기 - many-to-one
ex) sequence가 쭉 들어가고 마지막 sequence에서 일어날 일 맞추기 - many-to-many
ex) 주식의 5일치 데이터를 주고 그 5일치의 종가 맞추기 - sequence-to-sequence
ex) 여러 단어로 이루어진 한 문장을 여러 단어로 이루어진 한 문장으로 번역
Model
- LSTM
+ attention - Transformer
- BERT
기존의 LSTM 레이어를 BERT로 대체
Embedding
범주형 변수는 embedding을 거치게 된다. Lookup Table을 만든다.
- Category(A,B,C)들을 integar(0,1,2..)로 바꾼다
- embedding의 loss가 최소가 되는 lookup table을 학습한다.
- 카테고리별로 embedding을 시킨다.
연속형 변수는 embedding없이 바로 linear layer를 통해 hidden size를 조절만 한다.
Imput Transformation
user 별로 나누게 되면 user별 sequence길이가 다를 것이다. 한 유저에 대해서 학습하게 되면 max_sequence_length라는 하이퍼 파라미터를 통해서 그 길이를 일정하게 맞추어주면서 제한한다. 모자르면 앞에서부터 padding으로 채우고, max_sequence_length보다 길면 가장 최신 sequence를 기준으로 자른다. 가장 오래된 것부터 사용하지 않게 된다. 이론적으로는 앞에서부터 padding으로 채우지만, 뒤에 채워도 성능차이가 크지 않는 경우도 있다.
max_sequence_length는 하이퍼 파라미터이기 때문에 조절할 수 있는데, 당연히 실험적으로 정할 수 있고 max_sequence_length가 데이터의 90%이상을 커버하는 지점을 EDA를 통해 찾아서 설정해도 된다.
Modeling
- feature engineering없이 baseline을 1차적으로 빨리 만들어라
input넣어서 output 나오는 시스템 구축 - Feature Engineering(FE)하면서 데이터 이해하기
- 좋은 Cross validation 전략 찾기
cv성능이 높아지면 리더보드도 높아지고, cv가 내려가면 리더보드도 내려가는 그런 cv전략을 찾아보기 - Feature Selection
하나씩 넣어보고 빼면서 하면 best지만 노력이 필요하기에 파이프라인을 잘 만들어야한다. - 큰 틀에서 Model tuning
- 다른 모델 사용해보기
- bleding, stacking, ensembling
정말 할 거 없으면 seed ensemble - final tuning
'부스트캠프 AI Tech 3기 > 프로젝트 : P-stage' 카테고리의 다른 글
Wandb Sweep 하는 방법 : 하이퍼 파라미터 자동 튜닝 (0) | 2022.04.30 |
---|---|
[Day 68] DKT 4. Sequence Data 문제 정의에 맞는 Transformer Architecture 설계 (0) | 2022.04.27 |
[Day62] DKT 1. DKT 이해 및 DKT Trend 소개 (0) | 2022.04.20 |
[Day41] Movie Rec 4. Collaborative Filtering (2) (0) | 2022.03.22 |
[Day40] Movie Rec 3. Collaborative Filtering (1) (0) | 2022.03.22 |