표준화의 필요성 : 특정 값을 얻는 것보다 관심있는 값이 평균과의 차이가 얼마나 나는지의 정도를 알기 위해 표준화(혹은 정규화) 작업을 함. 이 과정에서 해당 모델에 영향을 주는 것을 방지. 정규화 작업을 해서 데이터의 분포에 영향을 미치는 것은 아님
표준화(=정규화) | Z 점수 |
모델에 영향을 주는 것을 방지하기 위하여 모든 변수에서 평균을 뺀 다음 표준편차로 나누어 변수를 비슷한 스케일에 놓는것 | 표준화 혹은 정규화 과정을 통해 도출된 값. 평균으로부터 표준편차만큼 얼마나 떨어져있는가를 표현 |
# 대출데이터 예제를 통한 표준화 일부
loan_df <- model.matrix(~ -1+payment_inc_ratio +dti+revol_val + revol_util, data=loan_data)
loan_std <- scale(loan_df) # R의 Scale 함수를 이용한 표준화
newloan_std <- loan_std[1, , drop=FALSE]
loan_std <- loan_std[-1,]
loan_df <-loan_df[-1.]
outcome <- loan_data[-1,1]
knn_pred <- knn(train=loan_std, test=newloan_std, cl=outcome, k=5) # 가장 가까운 상위 5개 행 표시
loan_df[attr(knn_pred, "nn.index"),] # knn 함수를 통한 연산으로얻은 새 데이터들 끼리의 가장 가까운 인덱스를 nn.index에 저장
* 파이썬 사이킷런에서는 kneighbors 메소드 사용
Knn에서의 K 선택 방법 : K 값에 따라 성능이 좌우되며 1이 가장 간단하지만 1보다 클수록 결과가 좋음
K가 너무 작을 경우 | K가 너무 클 경우 |
데이터 속 노이즈까지 관여하게 됨 = 오버피팅(과적합) 문제 발생 |
결정함수 오버스무딩(과평탄화, 일반적으로 값이 커질수록 결정함수의 부드러움이 증대) 문제 발생하여 데이터의 지역 정보를 예측하는 KNN의 기본성능이 저하됨 |
균형있는 K 값을 얻기 위한 방법 : 홀드아웃 데이터와 타당성검사를 위한 별도의 데이터셋을 가지고 정확도 측정. 또는 교차타당성검사 사용
* 교차타당성검사란 홀드아웃 샘플 아이디어를 여러개의 연속된 샘플로 확장한 것.
1/K 데이터를 샘플로 분리 -> 남은 데이터로 모델 훈련 -> 모델을 1/K 홀드아웃에 적용해 점수를 매기고 모델 평가지표 기록 -> 데이터의 첫번째 1/K를 복원하고 다음 1/K을 따로 보관(첫번째 선택한 레코드 제외하고 보관) -> 이 과정의 반복
'통계데이터과학과 및 컴퓨터과학 독서' 카테고리의 다른 글
6-6. 통계적 머신러닝 (0) | 2025.06.16 |
---|---|
6-5. 통계적 머신러닝 (0) | 2025.06.09 |
6-2. 통계적 머신러닝 (0) | 2025.05.19 |
6-1. 통계적 머신러닝 (0) | 2025.05.12 |
5-2. 분류 (0) | 2025.05.05 |