이번 시간은 시각화 단계롤 넘어가기 전에,
전처리 단계 중 <결측치 처리> 단계를 집중적으로 다루는
특 !! 별 !! 판 !!
"결측치 처리의 모든 것"
시간을 준비해보았습니다.
저같은 경우에 파이썬이나 R과 같은 다른 툴로 분석을 처음 접할 때
데이터 전처리 단계에서 가장 처음으로 봉착한 난관이 결측치 처리였거든요 ㅠㅠ
지워야하는지 ,, 대체한다면 어떤 값으로 대체해야하는지 ,,
저와 같은 어려움을 겪고 계실 분들을 위해
제가 정리한 자료들로 같이 설명해드릴게요.
해당 설명은 데이터캠프 (https://www.datacamp.com/courses/dealing-with-missing-data-in-python)
강의 내용을 참고하였습니다 :)
STEP 1. 결측값 확인하기
먼저, 결측값이 있는지 확인하는 단계에요.
브라이틱스에선 [string summary] / [statistic summary] / [profile table]
등으로 확인 가능하답니다 .
STEP 2. 결측치 유형 알기
다음으론 결측치의 유형을 확인해줍니다.
결측치가 random하게 missing 되었는지 아닌지의 여부에 따라서 결측치를 처리하는 방법이 달라질 수 있고,
random하지 않고 어떤 특정 패턴을 보인다면, 그 패턴에 맞게 결측치를 대체할 수도 있겠죠
1. MACR : 결측치 간에 아무런 관계가 존재하지 않을 경우
2. MAR : missing 발생 확률이 관측값에만 의존하고, missing이 발생하지 않는 변수에는 의존하지 않는다는 가정
3. MNAR : missing value가 다른 변수와 관계가 있는 경우 를 말합니다.
/*결측치 처리 가이드라인*/
출처 : https://towardsdatascience.com/how-to-handle-missing-data-8646b18db0d4
위와 같은 형태로 결측치 처리를 한다고 흔히 알려져있습니다.
하지만 다른 사람들의 코드나 kaggle 코스를 보면 결측치제거는 원본 훼손의 위험이 있기 때문에
최대한 제거하지 않는게 좋으며, 10%를 넘어간다고 하더라도 삭제하는 경우도 흔히 있습니다.
특히 필요없는 칼럼의 경우 아예 삭제해버리는 경우도 있고,
인사이트에 기반해 결측치를 바꾸는 경우도 많아요.
따라서 "결측치 처리에는 명확한 공식은 없다. " 라고 말하고 싶어요.
갖고 있는 데이터에 맞게끔 신중히 선택하는게 중요하겠죠 ?
STEP 3. 결측치 처리 방법
1. 삭제
- 특정 구간을 삭제
- 결측값을 가진 행을 삭제
이는 missing value가 다른 데이터에 영향이 가지 않을만큼 적을 때,
혹은 필요하지 않은 칼럼일 때 삭제해줍니다.
브라이틱스에선 [Delete Missing Data] 함수를 활용할 수 있어요.
위와 같이 ROW / COLUMN 을 선택해줄 수 있답니다.
2. 단순 대체
1) 대체
- 특정 값으로 대체
- 평균 / 중앙값 / 최빈값으로 대체
- 대체하기 위한 인사이트가 필요함
브라이틱스에선 [Replace Missing Number] 함수를 활용할 수 있어요.
fill value 중 원하는 값을 선택하면 된답니다.
2) HOT - deck
- sorting 후 missing cell 전의 값으로 대체
: ffill 방법과 유사
- ffill / bfill
- interpolate
3) 회귀 대체
- 그 외 변수들을 대상으로 회귀 추정을 통한 대체
- 과대 평가 위험
4) 확률적 회귀 대체
- residual 값을 포함하여 회귀 추정 진행
3. 다중 대체 - mice
- 누락된 자료에 단순 대체 방법을 이용해 채워넣은 후,
여러개의 데이터 셋을 생성하여 다중 회귀 방법으로 결과를 내어 pool 값 도출
- 다중 회귀의 종류는 오른쪽 슬라이드의 regressor 중 선택
4. 알고리즘 사용
- knn 알고리즘
- mice 알고리즘
-xgboost, lightgbm, catboost 알고리즘
참고로 , 알고리즘을 이용해서 예측해줄 수 도 있습니다 ^.^
이렇게 수치형 변수에 대한 결측치 제거 방법에 대해
탈 탈 탈
털어 정리해보았습니다 !!
*해당 게시글은 Brightics 서포터즈 활동의 일환으로 작성된 포스팅 입니다.
게시글 관련 문의 및 소통을 원하신다면 아래 댓글로 남겨주세요
브라이틱스 사용 중 문의사항은
brightics@samsung.com으로 연락주세요 :)
'대외활동 > Brightics 서포터즈' 카테고리의 다른 글
[Brightics | 프로젝트] 서울시 건강 고위험 지역 군집화 (1) 나만의 위험군 지표 선정하기 (0) | 2021.09.21 |
---|---|
[Brightics | 프로젝트] 코로나19 이후 건강실태 변화 확인하기 :: 시계열 자료 시각화 (0) | 2021.09.14 |
[Brightics | 프로젝트] 코로나19 이후 건강실태 변화 확인하기 :: 데이터 수집 + 로드 error 처리 (0) | 2021.09.07 |
[Brightics | 실습] 개인 데이터 분석 프로젝트 :: 주제 선정 w/ 지역건강조사 (0) | 2021.08.31 |
[Brightics | 실습] 브라이틱스 kaggle(캐글) 팀 프로젝트 총 정리 (0) | 2021.08.24 |