+) 이상치 제거와 관련해서 멘토님께 어떤 방법을 사용해야하는지에 대해 질문을 드렸는데, 멘토님의 답변을 공유하면 좋을 것 같아서 추가로 작성한다.
데이터가 정규분포를 따른다(하나의 큰 덩이로 구성) → Tukey/Carling 방식 분포가 여러 개의 그룹으로 나눠져 있고,어떤 그룹에도 속하지 않는 이상점을 찾고 싶다→Local Outlier Factor 방식
나뉜 그룹이 각각 정규분포를 따른다면 Group by 연산으로Tukey/Carling 방식을 적용하는 것도 가능합니다. 또한 어떤 피처들을 입력변수로 선택하느냐에 따라적절한 알고리즘이 바뀔수도 있으며, 결론적으로는 왕도 없이 데이터의 분포에 맞는 방식을선택하는 것이 바람직합니다.
Double 변수 6개를 선택했고, 결과 테이블에선 이상치를 제거하도록 설정한 뒤 실행함.
Before dataframe : 열 16 * 행 62,608 After dataframe : 열 16 * 행 57,125
2-5) 명목형 변수 수치화_Label Encoder, One Hot Encoder
선택이 binary한 string 변수를 0,1로 라벨링 _ Label Encoder 사용
결과 값이 두개로 갈리는 string 변수만 선택해서 label encoder를 진행
code_gender_index의 M은 1로, F는 0으로 라벨링 된 것을 확인할 수 있었습니다! 그리고 Select Column에서, 인코딩한 3개의 변수를 제외하고 전체 선택해주었습니다.
각 string 변수들의 값이 넘버링되어 더미변수로 변환되었음을 확인할 수 있다. (여기서, Suffix Type을 'Index'로 설정하면 새로 생기는 더미 변수명은 'NAME_INCOME_TYPE_0', 'NAME_INCOME_TYPE_1' 등으로 설정된다.)
모든 문자열을 숫자로 변경한 뒤 Select Column에서, string 변수를 제외하고 전체 선택함.
3.credit데이터 분석
3-1) Profile Table&전처리
Profile Table로 변수 개수, 결측치 개수 등 Detail 확인
MONTHS_BALANCE에 0이 많다고 경고했지만, 0이 정수가 아닌 구간의 의미를 가지고 있기 때문에 넘긴다.
STATUS는 예측 종속변수가 될 값으로 신용카드를 승인한다 / 승인하지 않는다 두가지로 분리되어야 한다.
profile table과 맨 첫번째 step, 컬럼명 설명에서 보여주고 있는 것처럼 C,0,X,1,2,3,4,5 총 8가지의 범주로 구분되어있기 때문에, 이 값들을 [C,0,X]=0=승인, [1,2,3,4,5]=1=거부 로 변경한다.
3-2) 이진화_Binarization
진행 방향
C와 X를 -2,-1인 string으로 변경 _ Replace String Variable 사용 마지막 열에 STATUS_index 열 추가 _ LabelEncoder 사용
C=-2, X=-1으로 변경 후 [-2,5]의 구간을 [0,7]로 재구성
STATUS_index가 2보다 크면 1, 작으면 0을 출력하도록 설정 _ Binarizer 사용
2를 기준으로 STATUS_index의 값이 더 크면 1(거부), 작으면 0(승인)으로 변경
STATUS와 STATUS_index 열 삭제 + STATUS_BIN의 이름 변경 _ Select Column 사용
남겨둘 열을 선택하고, New Name에 STATUS_BIN의 이름은 STATUS 로 변경
4. application 데이터와 credit데이터 결합
Application, Credit 데이터를 'ID'를 기준으로 결합 _ Join 사용
application과 credit 데이터를 두 데이터셋에 모두 존재하는 'ID'를 기준으로 병합하려고 한다, 따라서, 'Inner Join'을 사용해야 한다.
Join type은 inner join, left key와 right key는 ID로 설정해주고 두 데이터를 병합한다. 두 데이터가 결합되었음을 output 맨 끝 열 확인으로 확인할 수 있다.
5. 데이터 분할
Frequency 확인_ Statistic Summary 사용
데이터를 분할하기에 앞서, 결합한 데이터에 대해 종속변수인 STATUS의 빈도수를 파악한다. 왜냐하면 STATUS의 값인 0과 1의 개수의 비율이 비슷하지 않으면, train, test 데이터 분할과 동시에 over sampling 또는 under sampling을 해야할 수도 있기 때문이다.
STATUS_0:STATUS_1의 비율이 134,530 : 2,444로 상당히 차이가 크다. 두 값의 비율은 98.22 : 1.78로 STATUS의 값이 0에 많이 치우쳐 있고, 이후 sampling이 필요하다는 점도 확인했다.
데이터 분할 _ Split 사용
7:3의 비율로 분리하며, Train은 95,881, Test는 41,093 데이터로 분리되었다.
6.데이터 불균형 처리
방법
특징
Under Sampling
(Cluster Centroids)
라벨 간 불균형이 존재해도, 수가 적은 쪽의 데이터가 학습하는데에 그렇게 부족한 수준이 아닐 때 사용.
기존 데이터 특성을 잘 포함하도록 수행해야함.
대상 라벨을 가진 데이터들로 K-Means 군집 후, 결과 군집의 centroid 데이터들을 sample 데이터로 사용하는 방식
Over Sampling
(SMOTE)
수가 너무 적어서 복원 추출시 중복데이터가 너무 많이 생성되는 경우
대상 데이터들 사이를 연결하는 직선에서 적절히 데이터를 샘플링하는 방식으로, 기존에 없던 데이터가 새로 생성되지만 특성은 일정부분 유지할 수 있게 해줌.