어떤 기준으로 적절한 데이터 전처리 방법을 결정하나요? 공통
이번 차시는 표준점수(z점수)로 변환하는 것만 소개되었지만, 사실 데이터 전처리 종류는 매우 다양하다.
값을 단순히 맞춰주는 것 뿐만 아니라, 아래와 같은 데이터 전처리 작업이 존재한다.
데이터 정리: 누락된 값을 채우거나 노이즈가 많은 데이터와 이상값을 검색하고 제거합니다.
→ 누락된 값이 있을 경우에 데이터 정리를 해야함.
데이터 변환: 데이터를 정규화하여 차원 및 노이즈를 줄입니다.
데이터 감소: 데이터를 쉽게 처리할 수 있도록 데이터 레코드 또는 특성을 샘플링합니다.
데이터 분할: 특정 기계 학습 방법에 쉽게 사용할 수 있도록 연속 특성을 범주 특성으로 변환합니다.
텍스트 정리: 탭으로 구분된 데이터 파일에 포함된 탭, 레코드 줄 바꿈 문제를 일으킬 수 있는 포함된 새 줄 등 데이터 정렬 문제를 일으킬 수 있는 포함된 문자를 제거합니다.
즉, 데이터 전처리를 하는 어떠한 기준이 있다기보다 주어진 데이터를 확인하고, 그 데이터에 이상값이 존재한다고 할 때, 그 이상값을 처리하기 위한 위와 같은 방법을 선택해서 사용해야 하는 것이다.
데이터 전처리란? - 데이터 전처리 정의, 작업 단계, 순서
k-최근접 이웃 알고리즘에서 n_neighbors 값 설정 기준과 변화는 어떻게 이루어지나요? 채연
n-neighborhood 값, 즉 k최근접 이웃 알고리즘에서의 k값은 분류를 결정하기 위해 검사할 가까운 데이터의 수이다. 이 값에 따라 과적합이나 과소적합으로 이어질 수 있으므로 적절한 값을 선택하는 것이 중요하다. k값이 작을수록, 높은 분산을 갖지만 낮은 bias를 가진다. 반대로 k값이 클수록, bias가 높고 분산은 낮아진다. 이상치나 노이즈가 많은 데이터는 k값이 클수록 더 잘 수행될 가능성이 높다.
최적의 K값을 결정하는 방법은 어렵기에, 가장 간단한 해결책은 K값을 보통 3에서 10사이에서 무작위로 선택하고, 다른 값들도 시도해보며 정확도가 가장 높은 값을 선택하는 것이다. 그러나 데이터 세트의 데이터 수가 많은 경우 등 더 복잡한 경우에는 최적의 K값을 총 샘플 수의 제곱근으로 계산하는 경우가 많다. 또는, 교차검증방법을 사용하여 K값을 결정할 수 있다.
k-최근접 이웃 알고리즘이 다양한 데이터셋에서 어떤 성능을 보여주나요? 원진
비선형 데이터셋에서 k-최근접 이웃 알고리즘이 어떻게 동작하나요? 주상
K-NN 알고리즘: 말 그대로 한 데이터 성분과 거리가 가장 짧은 구성요소끼리 모아서 분류하여 분석하는 모델
=> 따라서 K 값이 어떤 지에 따라서 가까운 K개의 데이터를 분석하는 과정이다. 그러므로 선형적 데이터와 비선형적 데이터와 상관없이 말 그대로 거리가 가장 가까운 데이터들을 매개로 분류하는 과정이므로, 선형적 데이터와 비선형적 데이터와 상관없이 거리분류하는 과정이다.
데이터들의 결정 경계를 정의하기 위해서, 이 결정경계의 feature들의 선형결합이어야 한다는 가정을 필요로 하지 않는다. 따라서 선형적 비선형적 데이터인지 구분을 할 필요가 없다. 레이블이 있는 상태에서 분류를 하기 때문에, 지도학습모델이다.
kNN model (k-Nearest neighbor model)
훈련 세트와 테스트 세트 분할 비율 결정 기준은 어떻게 되나요? 상원
기본적으로 훈련 데이터를 나눌 때는 테스트 세트보다 훈련 데이터가 더 많아야 한다. 보통은 훈련 데이터와 테스트 세트를 8:2로 나누지만, 만약 훈련 데이터의 샘플 수가 지나치게 클 경우에는 테스트 세트 비율을 줄여도 상관없다. 예를 들어, 훈련 데이터가 천만 개라고 가정할 때, 그중 1%만 추출해도 100,000개로, 모델을 테스트하기에 충분하다. 다만, 훈련 데이터의 비율이 너무 클 경우, over-fitting이 발생할 수 있기 때문에 비율을 신중하게 결정해야 한다.
적절한 데이터 분리와 셔플 방법은 어떻게 되나요? 민재
책 상에 언급 → p.93 stratify 매개변수에 타깃 데이터를 전달하면 클래스 비율에 맞게 데이터를 나눕니다.
여기서 말하는 클래스 비율이란?
분류 결과로 나눠지는 타깃값의 비율 (예를 들어, 이 문제에서 말하는 도미와 빙어의 비율이 되겠다.)
random.shuffle을 사용하는 방법 or train_test_split의 stratify 매개변수를 이용할 수 있음.
단, random.shuffle을 이용할 경우에는 훈련 세트와 평가 세트의 인덱스 간 관계를 유지하는 것이 중요하다.