[실험] Feature Engineering 여러개 추가가 가능하게 만들기 #36
JAEWOOSUN
started this conversation in
Experiments
Replies: 0 comments
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
-
Feature Engineering 여러개 가능
Description: Features를 추가했을 때 여러개를 사용해도 DataLoader에서 자동으로 바꿔주기
시작일: 2021년 5월 26일
실험자: 재우 선
제안자: 재우 선
진행상황: 진행중
카테고리: Baseline Analysis
문제 정의
해결 아이디어
진행 상황
1. dataloader.py →
__feature_engineering
함수args.USERID_COLUMN
은 user_id를 위한 column (수정 X)args.ANSWER_COLUMN
은 user가 맞춘 column (수정 X)args.USE_COLUMN
은 사용할 column을 정의 → 순서도 그대로 들어가기 때문에 중요args.EXCLUDE_COLUMN
은 column 목록에는 있지만 사용하지 않을 column2. dataloader.py →
load_data_from_file
함수args.n_embedding_layers
에 넣어놓음args.변수명
에 넣어서 저장했지만 list형태로 한번에 관리 (순서 중요)df_apply_function
함수를 호출args.USE_COLUMN
과args.ANSWER_COLUMN
의 value들을 tuple형태로 만들어서group
변수에 넣어줌3. dataloader.py →
DKTDataset
Class →__getitem__
함수4. trainer.py →
process_batch
함수변수
들을 각각 꺼내서 정의해줌변수
대신features
라는 list에서 한번에 값들을 처리correct
,mask
,interatction
,gather_index
는 feature와 상관없이 가지고 가는 값들로features
마지막에 넣어줌5. train.py →
train
함수process_batch
함수 통과 후 input을 받아옴targets
변수는input[-4]
를 가지고 와야함 (correct
번호가 -4번으로 바뀜)6. model.py →
LSTM
class →__init__
함수__init__
함수에 추가comb_proj
을 통과할 때는 총 n+1개 ( feature수 +interaction
)을 통과하므로self.args.n_embedding_layers
+1로 변경self.embedding_features
변수를 일반 List가 아닌nn.ModuleList()
로 주는 것이 중요→ 그래야 pytorch가 module로 인식해서 device에 올림
→ 사용하지 않게되면 embedding을 새로 불러오게되서 성능이 나오지 않음
7. model.py →
LSTM
class →forward
함수embedding
을 실행함이때,
nn.moduleList()
로 선언했던self.embedding_features
를 불러와서 사용concat
을 실행할 떄interaction
과feature들
을 추가해줌8. LSTM-ATTN, BERT
features
를 추가해서 사용결과
feature
들을self.args.USE_COLUMN
에 넣어서 사용dataloader
나model
을 변경하지 않아도 잘 돌아감nn.ModuleList
를 사용했을 때 성능이 잘 나옴평가
feature_engineering
을 더욱 쉽게 추가하고 삭제가 가능함대신
nn.moduleList
나nn.sequential
를 사용하면 모델의 layer들을 자동화시킬 수 있음Beta Was this translation helpful? Give feedback.
All reactions