전체 글 110

Day12 학습정리

프로젝트 회고 집중력/추이를 반영하기 위해 user별로 이동평균을 새로운 feature로 추가해봤다. 실험 결과 Accuracy는 많이 올랐지만 AUC는 떨어졌다. feature들 간의 correlation을 계산해본 결과 주로 정답률 관련된 변수가 answerCode와 correlation이 높았다. 서일님의 lgbm 코드를 우리 프로젝트에 맞게 리팩토링 할 것이다.

Day11 학습정리

프로젝트 회고 사용자별 정답률과 문제별 정답률을 카테고리화해서 넣어봤는데 validation때는 auc가 높게 나왔지만 제출해봤더니 점수가 많이 떨어졌다. 정답률을 계산할 때 누적합으로 계산해서 행마다 값이 계속 조금씩 바뀌었었는데 오늘 피어세션때 이야기를 나눠보니까 그렇게 하면 난이도의 의미가 사라질 것 같다는 생각이 들었다. 그래서 전체 데이터로 한번에 계산해서 모든 행에 동일한 값을 넣는 방법을 적용해볼것이다. 계속 validation 점수랑 리더보드 점수가 차이가 많이 나는데 Cross Validation을 사용해 데이터 불균형 문제를 해결해야 할 것 같다. 피어세션때 나왔던 방법들로는 train:valid 비율 8:2로 바꾸기, 데이터 전부 train으로 사용하기, Nested CV 등이 있었다..

Day10 학습정리

프로젝트 회고 오늘은 그동안 추출한 feature들에 대해서 OLS, Feature Importance, VIF를 계산해봤다. 자료형이 숫자가 아닌 feature를 넣으면 에러가 나서 어쩔 수 없이 제외했는데 그 feature들은 나중에 추가적으로 실험해봐야겠다. Feature Importance 결과 문제별 평균 정답률이 가장 높았고 그 다음 elapsed time이 두 번째로 높았다. 그런데 마지막 문제에 대해서 elapsed time을 어떻게 적용해야 할지는 더 고민해봐야 할 것 같다.

Day9 학습정리

프로젝트 회고 지금까지 한 실험을 종합해본 결과 AUROC가 가장 높았던 건 category+number+average_user_correct였다. 단일 feature 중 가장 성능이 좋았던 건 average_tag_correct였고 가장 안 좋은 건 hour였다. 여러가지 실험을 해 봤는데 거의 다 점수가 떨어져서 내가 제대로 하고 있는게 맞는지 의문이 든다. 멘토링 오늘 멘토링 시간에는 대회 관련 유용한 정보들을 많이 얻었다. 여러 가지 cross validation 전략 중에서 시계열 데이터에 적합한 Nested cv를 소개해주셨다. 그리고 feature engineering 할 때 팁이 있는지 질문했는데 무작정 실험하지 말고 vif와 같은 방법을 사용해서 feature selection을 하라고 ..

Day8 학습정리

프로젝트 회고 오늘 피어세션에서 문제 번호 자료형이 int일 때보다 string일 때 점수가 더 높게 나왔다는 이야기를 듣고 csv파일에서 문제 번호가 string으로 고정되도록 앞에 알파벳 A를 추가했다. feature의 자료형은 모델 성능이랑 상관이 없을 것 같은데 왜 다르게 나오는지 의아하다. train data랑 test data에 대해 feature engineering을 따로 진행하면 train data 중에서 맞춘 문제 수와 같이 계속 누적되는 정보가 test data에 반영되지 않고 초기화된다. 그래서 train data의 정보가 test data에서 계속 이어지게 하기 위해 train이랑 test 데이터프레임을 합쳐서 한 번에 계산한 후 다시 나누는 방식을 사용해봤다.

Day7 학습정리

프로젝트 회고 hour를 feature로 추가했을 때 오히려 베이스라인보다 점수가 낮았다. hour와 weekday를 같이 넣었을 때에는 hour만 넣었을 때와 거의 차이가 없었다. average_correct, average_tag_correct를 추가해봤는데 둘 다 validation에는 베이스라인보다 점수가 약간 높았지만 리더보드에 제출했을 때에는 베이스라인보다 점수가 낮게 나왔다. elapsed time이 성능에 얼마나 영향을 미치는지 알아보기 위해서 feature importance를 확인해보려고 했는데 알고보니까 트리 기반 모델에서만 사용되는 개념이었다. sequence 데이터에도 적용이 가능한지는 더 알아봐야겠다.

Day6 학습정리

프로젝트 회고 오늘은 추가적인 Feature Engineering을 진행했다. 새로 추가한 feature들은 다음과 같다. 시간, 요일 total_used_time 이전에 푼 문제 수, 맞춘 문제 수, 평균 정답률 사용자별: past_count, past_correct, average_correct 사용자+태그별: past_tag_count, past_tag_correct, average_tag_correct 사용자+문제별: past_content_count, past_content_correct, average_content_correct 피어세션에서 elapsed time에 대한 이야기가 나왔었는데 마지막 문제는 elapsed time을 알 수 없어서 일단 사용할만한 가치가 있을지 판단한 다음에 만약..

Day5 학습정리

프로젝트 회고 오늘은 어제에 이어 RIIID 대회를 더 자세하게 조사했다. 1등 솔루션이랑 3등 솔루션 모두 feature로 current question elapsed time이랑 timestamp difference를 사용했는데 두 개의 차이가 무엇인지 아직 명쾌한 답을 찾지 못했다. 그리고 feature중에 task_container_id가 정확히 무엇을 의미하는지도 완벽히 이해하지 못했다. 이 두 가지에 대해서는 더 조사해봐야겠다.

Day4 학습정리

프로젝트 회고 오늘은 캐글에서 RIIID 대회 1등, 3등 솔루션을 찾아봤다. 1등 솔루션: https://www.kaggle.com/c/riiid-test-answer-prediction/discussion/218318 1등 솔루션의 핵심 내용은 마지막 input만 query로 사용해서 시간복집도를 O(L2)에서 O(L)로 줄인 것이다. 사용한 feature들은 question id, question part, answer correctness, current question elapsed time, timestamp difference로 5가지밖에 안 되었다. 3등 솔루션: https://www.kaggle.com/c/riiid-test-answer-prediction/discussion/209585..

Day3 학습정리

강의 복습 Sequence Data 문제 정의에 맞는 Transformer Architecture 설계 How to embed features for Transformers Using Half-Sequence How to use Transformers for non-sequence Conv1D Architecture 프로젝트 회고 오늘 피어세션에서 어떤 Feature를 추가하는 것이 좋을지 이야기해봤다. 문항별 난이도 이야기도 나왔고 문제가 시험지에서 몇 번째 문항인지도 나왔다. 내 생각에는 timestamp에서 문제 푸는데 걸린 시간도 의미가 있을 것 같다.