일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- paper review
- michigan university deep learning for computer vision
- Activation Function
- Python
- 머신러닝
- Deep Learning for Computer Vision
- 비전공자를 위한 데이터 분석
- pymysql
- 브라이틱스 분석
- 데이터 분석
- Brightics AI
- 삼성 SDS 서포터즈
- 파이썬 SQL 연동
- Random Forest
- Brigthics Studio
- 딥러닝
- Brightics EDA
- 브라이틱스 서포터즈
- Brightics 서포터즈
- 분석 툴
- 파이썬 내장 그래프
- 브라이틱스 프로젝트
- Brightics studio
- 데이터 분석 플랫폼
- 범주형 변수 처리
- 삼성 SDS
- 브라이틱스 AI
- 검증 평가 지표
- 서포터즈 촬영
- 브라이틱스 스태킹
- Today
- Total
하마가 분석하마
[개인 분석-4주차] Replace White Space & EDA 본문
안녕하세요.
Brightics 서포터즈 노승찬입니다.
저번 주차에 나이 변수, 고용주 카테고리 변수와 결과변수의 관계를 살펴보았습니다.
이번 주차에는 다른 변수들의 eda를 진행함과 동시에 공백 값 대체에 대해서 생각해보려고 합니다. 현재 데이터에는 많은 white space가 있습니다. 누락된 값인지 입력이 안 된 값인지 알 수 없습니다. 모든 관측치를 지우기에는 데이터 손실이 크기에 각 white space 마다 어떤 식의 접근이 가장 좋을지 생각해보려고 합니다.
Replace White Space & EDA
프로젝트 목표
고객의 기본 세부 정보를 바탕으로 잠재 고객을 타겟팅 할 수 있는 알고리즘을 개발하여 보다 나은 리드 전환을 이끌어 내는 것을 목적으로 합니다.
공백 값의 관계 확인 및 eda
이전 포스팅에서 월급의 이상치 처리 전과 후를 비교해보았습니다. 고용주 코드 (Employer Code)의 공백 값을 제거한 후에 월급의 이상치를 제거했었습니다. 공백 값을 제거하지 않은 상태에서는 어떠한지 또한 현재 데이터에서 공백 값이 존재하는 변수들은 관계가 존재합니다. 이런 상황에서 단순하게 다 제거해도 되는지, 중간에 누락된 건지, 정말 정보를 알 수 없었는지를 추측해보고자 합니다.
1. 이상치 처리 그래프 확인
하나씩 살펴보겠습니다. 먼저 공백을 제거하기 전의 이상치 처리 그래프를 보겠습니다.
고용주 코드 공백값의 존재 유무의 차이를 바탕으로 확실하게 판단할 수 있는 한 가지가 있습니다. 바로 노년층과 잠재고객과의 연관성입니다.
이전 포스팅의 연령대*월급 차이 그래프와 비교해보면 70대 이상의 고객은 잠재고객으로 분류하지 않는다는 점이 동일합니다. 이러한 관점에서 생각해보면, 이미 나이가 드신 분들은 직장을 가지고 있지 않을 수 있고, 연금 혹은 별도의 수입을 가지고 있을 수 있습니다. 다른 연령층과 다르게 생산활동을 하지 않을 확률이 높다는 점과, 은행의 제품 구매 등과 같은 마케팅의 직접적인 대상이 될 가능성이 낮다는 점을 고려하면 은행은 노년층을 잠재고객으로 선정하지 않을 것입니다.
20,30,40대 연령층의 관측치 수도 조금씩 달라졌기에 추가적으로 확인이 필요할 것 같습니다.
2. EMI와 Interest Rate
공백 값이 존재하는 변수들은 {고용주 정보}, {도시 정보}, {은행 정보}, {대출 정보}, {외} 이렇게 이루어집니다. 각 카테고리 내의 변수에서 공백 값들의 개수는 모두 같습니다. '잠재고객'인 관측치 들에서 공백 값은 꽤 많이 들어있습니다.
EMI와 Interest Rate 변수의 공백값이 가장 많고, 그다음 {대출 정보}입니다. 대출 금액의 이자율과 요청된 대출 금액의 EMI가 잠재 고객 판단에 중요한 영향을 미칠 수도 있으나 약 65000개의 관측치 중에서 47000여 개를 모두 NULL 범주로 두거나 평균 혹은 중앙값으로 예측하여 채우는 것은 큰 노이즈가 될 거라 생각합니다. 따라서 두 변수는 제거하고 진행하겠습니다.
2. {고용 정보} : Employer_Category, Employer_Code
고용정보가 존재하지 않는 고객 대부분의 월급이 매우 낮은 것을 알 수 있습니다. 5명의 고객만이 고용정보가 존재하지 않을 때, 잠재고객으로 선정되었습니다. 위 5명의 고객이 소스 유형과 리드 출처가 같다는 것 외, 다른 공통점은 존재하지 않았습니다. 추후 소스 유형 별로 잠재고객 비율을 확인해봐야 할 것 같습니다.
{고용 정보}가 존재하지 않는 고객은 누락되거나 기입을 하지 않은 것이 아닌 다른 이유로 별다른 직장이 존재하지 않아서 기입하지 않은 것이라 판단됩니다. 따라서 {고용 정보} 관련 공백값은 None 범주로 채우겠습니다.
3. {은행 정보} : Customer Existing Primary Bank Code, Primary Bank Type
{은행 정보}에서 공백값은 잠재 고객과 아닌 고객이 거의 비슷한 수로 분포합니다.
Primary_Bank_Type이 공백인 고객들 중에서 20명 만이 '잠재 고객'으로 분류되었습니다.
{은행 정보}와 {고용 정보}가 겹치는 고객이 있는지 확인해 보겠습니다.
은행 정보와 고객 정보가 모두 없는 고객은 3521명이 겹치고 그중에서 4명 만이 '잠재 고객'으로 분류되었습니다. 어떤 고객이 '잠재 고객'일지를 분류하는 게 중요하고 불균형이 심해 Approved가 1인 관측치가 많지 않은 만큼 은행 정보가 존재하지 않는 고객을 지우는 것은 데이터 손실이 크다 생각합니다.
이후에 20명 혹은 4명 (둘 다 겹치는 경우)을 모두 제거하고 디폴트 파라미터로 성능을 봐야 할 것 같습니다.
4. {대출 정보} : Loan_Amount, Loan_Period
{대출 정보}의 경우 두 변수는 공백값이 매우 많습니다. {은행 정보}의 공백 값과 모두 겹치는 것도 아니기에 무작정 0으로 채우는 것도 문제가 있다고 생각합니다. 따라서 모델 내에서 결측 값을 채웠을 때와 아닐 때의 차이를 확인해보고 결정하겠습니다.
다음주에는 지금까지 나온 변수들만을 사용하여 간단하게 모델을 돌려보고자 합니다. eda와 도메인 정보를 통해서 어떠한 변수가 중요하다거나 타겟 변수에 유의미한 영향을 미칠 것 같음을 알 수 있으나, 실질적으로 분류를 하는 것은 알고리즘이기에 지금까지 나온 변수들이 '잠재 고객 분류'에 얼마나 영향을 끼치는지 디폴트 파라미터를 사용하여 성능 및 변수 중요도를 보겠습니다.
또한 그렇게 도출된 변수와 전처리 방법을 토대로 이후 feature engineering 진행 방향을 잡아보도록 하겠습니다.
감사합니다!
"Brightics 서포터즈 활동의 일환으로 작성된 포스팅입니다"
<a href='https://kr.freepik.com/vectors/business'>Business 벡터는 pikisuperstar - kr.freepik.com가 제작함</a>
'Brightics 서포터즈' 카테고리의 다른 글
[개인 분석-6주차] Modeling (0) | 2021.10.05 |
---|---|
[개인 분석-5주차] Loan & Bank Feature (0) | 2021.09.28 |
[개인 분석-3주차] EDA (0) | 2021.09.14 |
[개인 분석-2주차] 도메인 이해 및 데이터 살펴보기 (0) | 2021.09.07 |
[개인 분석-1주차] 분석 주제 선정 (0) | 2021.08.31 |