본문 바로가기
데이터 분석/일반

데이터분석 팁 정리

by 장찐 2022. 2. 28.

 

📚 데이터 분석  Tip 

 

• 데이터 사이언스를 공부하면 할수록 분석가의 노하우도 상당히 중요하다는 것을 느끼고 있다. 적절한 노하우가 있다면 분석의 효과와 효율을 높일 수 있기 때문에 그동안 스스로 수업, 프로젝트, 공모전, 세미나 등을 통해서 얻은 노하우와, 교수님, 현직자, 전문가 분들께 얻은 지식 정리하고자 한다. 

 


 이상치 처리 기준 

• 이상치 처리 과정에서 Q3 + 1.5*IQR 기준이 빈번하게 사용된다. 근데 이 기준도 절대적인 것이 아니기 때문에 유연하게 사용해야 한다. 아래 출처에서 왜 1.5를 기준으로 쓰는지에 대한 설명 제공 

https://towardsdatascience.com/why-1-5-in-iqr-method-of-outlier-detection-5d07fdc82097

 

• Z-score 기준으로 할 때에도, 2.54 이상이니까 무조건 이상치로 분류하면 안 됨.  표준화 한다고 가우시안 분포가 되는 것이 아니기 때문이다. 

 

• 추가로 해볼 수 있는 이상치 분류 기법 : Isolation Forest / OneLCassSVM

 

• 언제나 중요한 것은 도메인!! 도메인에 따라서 이상치의 기준이 다르다. 일부 도메인에서는 오히려 이상치가 더 중요할 수도 있다. (모바일 게임 등)

 


 

 파생변수 생성

• 모델 구축 과정에서 유의한 파생변수를 만드는 것은 굉장히 중요하다. 그런데 여러 프로젝트나 공모전에서 예측/분류 모델을 만들다 보면 나름의 분석 결과와 도메인 지식으로 도출한 인사이트를 기반으로 파생변수를 만들었는데, 모델 성능에 도움이 되지 않는 경우가 있어서 난감했던 적이 많았다. 이런 경우에는 어떻게 하지? 

 

→ 파생변수 생성 과정에서 내가 생각한 근거가 잘못됐을 가능성이 있다. 항상 내 머리를 의심하자. 

→ 모델 성능이 당장 좋지 않더라도 해당 파생 변수를 포함시키는게 좋을 수도 있다. 추후 데이터나 모델 구조가 바뀌었을 때, 그 변수가 유용하게 사용될 수 있기 때문이다. 

 

• 그럴듯한 가설과 근거를 기반으로 회귀분석을 했을 때, 예상과 다른 결과가 나온다면 오히려 흥미로운 분석이 가능한 기회일 수도 있다. 

ex) 잠재 그룹을 찾는 추가 분석을 실시할 수 있음. 예를 들어,  LDA로 잠재 그룹을 나누고 Latent class regression을 실시해보면, 집단별로 다른 유의미한 결과를 찾을 수도 있다. 

 

 


 

 분석 결과 도출 

• 데이터 분석 실무에서 데이터를 통해서 결과를 도출하더라도, 다음과 같이 한계를 가지는 경우가 많다. 

 

  1) 이미 현업에서 알고있던 내용의 확인 수준의 내용

  2) 결과는 유의미하나 비용이 많이 증가해서 실행이 어려운 경우

  3) 결과는 유의미한데, 비즈니스로 연결이 힘든 경우 

  4) 결과가 유의미한데, 다른 부서의 담당자들이 이를 이해하지 못하는 경우 

 

→ 분석을 할 때는 언제나 분석의 목적과 분석의 의의를 생각해야 한다. 특히 경영학과 전공인 나에게는 더 중요한 부분

 

• 좋은 데이터 분석 결과는, 결과를 보고 대상자들 입장에서 취해야 하는 action이 보이는 것이다. 단순히 "결과가 이러이러하게 나타났다" 로 마무리되는 분석은 좋은 분석이라고 할 수 없다. 

 


 

 분류 모델에서 클래스 불균형 

• 클래스 불균형은 과적합을 유발하는 주 원인 중 하나이다. 이를 해결하기 위해서 시도해 볼 수 있는 방법 : 


  1) 다운샘플링
  2) Cost sensitive Learning
  3) Weighted BCE 등의 목적함수 변형 
  -SMOTE, ADASYN 같은 오버샘플링 기법은 유클리드 거리 기반이어서, 고차원 데이터의 경우 결정 경계를 망칠 수도

 


 

 통계검정의 필요성

• 통계 검정을 하기 전에, 그 검정이 맥락 상 필요한 지 확인해야 한다. 

• 실무에서 '빅'데이터를 다룰 때, n의 수가 충분히 많으면(십만~천만) 시각화로도 전달하고자 하는 내용이 충분히 전달될 때가 많다. 이러 경우는 p 값을 계산 하더라도 대부분 0.01보다 낮게 나타나기 때문에 통계 검증의 의미가 없을 수도 있다. 

 


 

 로그변환 

• 일반적으로 모델 만들 때, 데이터 불균형이 심하면 아래 방식으로 로그 변환을 사용할 수 있음 

 log1p->학습->학습된 결과값을 expm1()-> expm1()한값과 실제 label과 비교

 

• 예측력을 높이기 위한 목적으로 skewed 데이터 분포를 정규 분포로 바꾸는 것. 

 하지만 반드시 로그 변환으로 만든 정규분포 데이터가 모델의 성능을 높여주는 것은 아니다.

 

• 로그 변환 후 성과평가를 할 때는 오차가 relational error 임을 고려해야함

 → RMSE, MAE는 '전체 오차의 평균'이라는 의미. but 로그변환되면 MAE,RMSE 값이 지수로 올라감 

 → 즉, 변환전에 MAE 2과, 변환 후의 MAE 2은 다르다. 변환 후는 10의 2승이 증가한 것 실제 값은 1000이 넘어감 

 


 

모델 성능이 너무 좋으면?

• 모델의 성과가 너무 높은 경우 (AUC =1, 정확도 90% 등등) 

→ data leakage 의심해 봐야함. 즉, 사용한 predictor에 종속변수의 정보가 포함되어 있지 않은지 반드시 체크해야 함. 

 


Train/Test 데이터의 사용 

 일반적으로 Test데이터는 모델 구축 과정에서 절대 건드리지 않는다. 모델을 만들 때  test set 데이터는 실제로는 존재하지 않는 데이터로 간주해야 한다. 

 하지만 실무에서 모델의 최종 배포 전 단계까지 평가가 끝난 경우에는, test set까지 포함시켜서 다시 학습하고 배포하기도 한다. 모델 학습하는 과정에서도 validation 까지 train에 포함시키는 경우도 있다. 

 

 


 

✅ 분석 로드맵 

우리는 어디로 가고 있는가-김승욱(contact@Rloha.io)

'데이터 분석 > 일반' 카테고리의 다른 글

트위터 API v2 Academic Reserach 신청하기  (0) 2022.07.23
연구방법론 기본 개념  (0) 2022.06.30
EndNote 20 사용 팁  (0) 2022.02.10
[2022. 01. 25] 데이터리안 웨비나  (0) 2022.01.25
.ipynb to .py 변환 방법  (0) 2022.01.12

댓글