[PyCon KR 2018] 땀내를 줄이는 Data와 Feature 다루기Joeun Park
서울 코엑스에서 진행된 파이콘 한국 2018에서 8월 19일에 발표한 내용입니다.
데이터 전처리와 Feature Engineering에 대해 다룹니다.
[파이콘 한국 2018 프로그램 | 땀내를 줄이는 Data와 Feature 다루기](https://www.pycon.kr/2018/program/47)
이 발표내용은 8월 17일 금요일에 진행되었던 다음 2개의 튜토리얼을 바탕으로 작성되었습니다.
* [공공데이터로 파이썬 데이터 분석 입문하기(3시간) — 파이콘 한국 2018](https://www.pycon.kr/2018/program/tutorial/6)
* [청와대 국민청원 데이터로 파이썬 자연어처리 입문하기(3시간) — 파이콘 한국 2018](https://www.pycon.kr/2018/program/tutorial/7)
Our GOAL
해외에는 이런 데이터 경쟁 플랫폼이 있습니다. 한국에는 없죠. 국내 공공기관 또는 개별 기업들이 스팟성으로 불투명한 대회를 벗어나 지속적으로 대회를 운영하는 플랫폼이 있으면 좋겠다고 생각했습니다. 우리는 지금 Fintech 기업들과 함께 금융 데이터와 상금을 제공하며, 데이터 과학자 와 데이터 엔지니어링을 포함하는 데이터 대회를 운영합니다.
There are these data competition platforms overseas, but in Korea, Domestic public organizations or individual companies are out of the opaque temporary contest I wanted to have a platform that consistently runs the competition. We now provide financial data and cash prizes with Fintech companies, we run the Data Competition included in Data Engineer and Data Scientists.
[PyCon KR 2018] 땀내를 줄이는 Data와 Feature 다루기Joeun Park
서울 코엑스에서 진행된 파이콘 한국 2018에서 8월 19일에 발표한 내용입니다.
데이터 전처리와 Feature Engineering에 대해 다룹니다.
[파이콘 한국 2018 프로그램 | 땀내를 줄이는 Data와 Feature 다루기](https://www.pycon.kr/2018/program/47)
이 발표내용은 8월 17일 금요일에 진행되었던 다음 2개의 튜토리얼을 바탕으로 작성되었습니다.
* [공공데이터로 파이썬 데이터 분석 입문하기(3시간) — 파이콘 한국 2018](https://www.pycon.kr/2018/program/tutorial/6)
* [청와대 국민청원 데이터로 파이썬 자연어처리 입문하기(3시간) — 파이콘 한국 2018](https://www.pycon.kr/2018/program/tutorial/7)
Our GOAL
해외에는 이런 데이터 경쟁 플랫폼이 있습니다. 한국에는 없죠. 국내 공공기관 또는 개별 기업들이 스팟성으로 불투명한 대회를 벗어나 지속적으로 대회를 운영하는 플랫폼이 있으면 좋겠다고 생각했습니다. 우리는 지금 Fintech 기업들과 함께 금융 데이터와 상금을 제공하며, 데이터 과학자 와 데이터 엔지니어링을 포함하는 데이터 대회를 운영합니다.
There are these data competition platforms overseas, but in Korea, Domestic public organizations or individual companies are out of the opaque temporary contest I wanted to have a platform that consistently runs the competition. We now provide financial data and cash prizes with Fintech companies, we run the Data Competition included in Data Engineer and Data Scientists.
3. 데이터 전처리
• 특정 타겟 값이 0인 데이터가 훈련 데이터에서 발견되었지만 여기서 떠오르는 좋은 생각은 없었습니다. 그래서 별도 작업은 하
지 않았습니다.
• dst 데이터에서 비어있는 값은 제공되는 일반적인 보간 함수를 이용해 채워 주었습니다. 그 뒤 다시 ‘ffill’, ‘bfill’ 방식으로 빈 값
들을 다시 채워 주었습니다.
• dst 데이터 값의 범위가 rho에 따라 달라지는 모습이 보여 이를 보정해 주었습니다. 다른 참가자의 경우 log 변환 후 rho 값으로
나누는 코드가 여럿 보이는데 저의 경우 이러한 방법을 알지 못하였고, 단순하게 임의의 10의 승수를 곱해주는 방식으로 처리
하였습니다. (데이터의 크기가 충분히 컸다면 rho 별로 데이터를 구분한 뒤 작업을 진행했을 것 입니다.)
• 결과적으로 dst 관련 데이터를 조정해주는 것 외에 특별한 작업을 하지 않았습니다.
4. 탐색적 데이터 분석
• 각 예측 항목에서 25%이하, 75% 이상에 속하는 데이터를 그려보고 차이점을 눈으로 확인하는 행위를 여러 번 해보았습니다.
• src 항목의 경우 일정 부분 패턴이 발견되었기에 이를 살려보고자 하였는데 결과적으로 잘 되지 않았습니다.
• dst 항목의 경우 13번째에서 17번째 항목, 30번째에서 34번째 항목에서 위로 치솟는 형태의 그래프가 여럿 목격되었습니다. 이
부분에 대한 코드가 포함되어 있습니다.
• dst 데이터를 화면에 그려보면 결국엔 그래프의 모양이 중요하다는 것이 드러납니다. src의 모양이나 dst의 모양을 패턴화(뾰족
솟는 구간을 세어보는 등의 작업.) 시켜보려 하다가 잘 되지 않았고, 인접한 두 변수 간의 변화에 대한 피쳐를 여러 가지 방법으
로 추가해보기로 결정하였습니다. (또는 같은 파장의 src와 dst 간 비교)
6. 모델 구축
• lightgbm을 사용해 모델을 만들었습니다. 부스팅 타입은 gbdt를 사용했고, 나머지 설정 값은 인터넷 자료를 참고해 임의로 지
정해 주었습니다. 폴드 횟수는 10으로 하였습니다.
• 학습 파라미터 튜닝에 대해 최적 값과 피쳐 목록을 찾아주는 자동화 방법이 있다는 것을 들어보긴 했지만 사용하진 않았습니다.
• 내부적으로 테스트 해보았을 때 hhb의 예측 값이 있으면 hbo2를 예측하는데 많은 도움이 됩니다. 따라서 hhb를 우선 예측한
뒤 이를 어림 값으로 전환해(예측의 오차를 감안한 어림 값 변환) hbo2를 예측하는 피쳐로 활용하는 방안을 적용해보았는데 아
쉽게도 LB에서 개선 효과는 거둘 수 없었고, 최종 모델에 반영하지 못하였습니다.
• 코드를 보면 아시겠지만 모델 구축과 관련한 특이점은 없습니다.
7. 검증
• 내부적으로 계산한 값과 리더 보드에서 계산된 값 간 차이가 적었기 때문에 과-학습에 대한 부담은 적은 편이었습니다.
• 중간 단계 이후론 내부적으로 계산된 값과 예측된 값에 대한 25%, 50%, 75% 값, 그리고 표준 편차 정도를 훈련 데이터 셋과 비
교하는 단순 검증 작업만 진행하였습니다. (각 타겟의 describe() 비교)
<train vs test>
8. 결과 및 결언
• 도메인에 대한 충분한 검토가 되어있지 않은 상태에서 접근한 것이 개인적으로 아쉽고, 타겟 값 간 상관 관계를 잘 풀어내지 못
한 부분도 아쉬운 부분이었습니다.
• 논리적으로 빈약한 모델임을 잘 알고 있기 때문에 특별히 드릴 말씀은 없고, 운이 좋았다고 생각하고 있습니다.