1. 어떤 기준으로 적절한 데이터 전처리 방법을 결정하나요? 공통

    이번 차시는 표준점수(z점수)로 변환하는 것만 소개되었지만, 사실 데이터 전처리 종류는 매우 다양하다.

    값을 단순히 맞춰주는 것 뿐만 아니라, 아래와 같은 데이터 전처리 작업이 존재한다.

    즉, 데이터 전처리를 하는 어떠한 기준이 있다기보다 주어진 데이터를 확인하고, 그 데이터에 이상값이 존재한다고 할 때, 그 이상값을 처리하기 위한 위와 같은 방법을 선택해서 사용해야 하는 것이다.

    데이터 전처리란? - 데이터 전처리 정의, 작업 단계, 순서

    2.빅데이터 탐색 - 데이터 전처리(1)

  2. k-최근접 이웃 알고리즘에서 n_neighbors 값 설정 기준과 변화는 어떻게 이루어지나요? 채연

n-neighborhood 값, 즉 k최근접 이웃 알고리즘에서의 k값은 분류를 결정하기 위해 검사할 가까운 데이터의 수이다. 이 값에 따라 과적합이나 과소적합으로 이어질 수 있으므로 적절한 값을 선택하는 것이 중요하다. k값이 작을수록, 높은 분산을 갖지만 낮은 bias를 가진다. 반대로 k값이 클수록, bias가 높고 분산은 낮아진다. 이상치나 노이즈가 많은 데이터는 k값이 클수록 더 잘 수행될 가능성이 높다.

최적의 K값을 결정하는 방법은 어렵기에, 가장 간단한 해결책은 K값을 보통 3에서 10사이에서 무작위로 선택하고, 다른 값들도 시도해보며 정확도가 가장 높은 값을 선택하는 것이다. 그러나 데이터 세트의 데이터 수가 많은 경우 등 더 복잡한 경우에는 최적의 K값을 총 샘플 수의 제곱근으로 계산하는 경우가 많다. 또는, 교차검증방법을 사용하여 K값을 결정할 수 있다.

  1. k-최근접 이웃 알고리즘이 다양한 데이터셋에서 어떤 성능을 보여주나요? 원진

    1. 높은 성능을 보이는 데이터셋: 수치 기반 데이터를 분류하는데 높은 성능을 보이며, 학습 데이터의 수가 충분히 많은 경우, 학습 데이터가 노이즈를 가지는 경우에도 robust한 성능을 보인다. 또한 비모수 방식의 알고리즘이므로 데이터의 분포가 특정 분포를 따르지 않는 데이터셋인 경우 모수적 방식의 여타 알고리즘에 비해 높은 성능을 보일 수 있다.
    2. 낮은 성능을 보이는 데이터셋: 새로운 샘플을 분류하기 위해 메모리에 저장해둔 기존 데이터와 일일이 대조하는 '메모리 기반 학습방법'이므로 원리 상 하드웨어 의존(특히 메모리 의존)이 높은 방식이다. 따라서 고차원의 데이터(다양한 feature들을 갖는 데이터)를 학습 및 분류하는 문제에서는 성능이 낮을 수 있다. 또한 고차원 문제의 경우 '차원의 저주' 문제가 발생해 동일 부류의 데이터 밀도가 희박해져 성능이 떨어질 수 있다.(k-NN 알고리즘으로 해결해야 하는 문제가 고차원인 경우, 차원 축소를 진행해볼 수 있다.) && 전처리를 통해 스케일 되지 않은 feature들로 구성된 데이터셋인 경우에도 낮은 성능을 보일 수 있고, 수치 기반 데이터가 아닌 명목 기반 데이터(i.e. 남성&여성)인 경우 수치로의 변환 과정이 있어야 동작할 수 있다.
  2. 비선형 데이터셋에서 k-최근접 이웃 알고리즘이 어떻게 동작하나요? 주상

K-NN 알고리즘: 말 그대로 한 데이터 성분과 거리가 가장 짧은 구성요소끼리 모아서 분류하여 분석하는 모델

=> 따라서 K 값이 어떤 지에 따라서 가까운 K개의 데이터를 분석하는 과정이다. 그러므로 선형적 데이터와 비선형적 데이터와 상관없이 말 그대로 거리가 가장 가까운 데이터들을 매개로 분류하는 과정이므로, 선형적 데이터와 비선형적 데이터와 상관없이 거리분류하는 과정이다.

데이터들의 결정 경계를 정의하기 위해서, 이 결정경계의 feature들의 선형결합이어야 한다는 가정을 필요로 하지 않는다. 따라서 선형적 비선형적 데이터인지 구분을 할 필요가 없다. 레이블이 있는 상태에서 분류를 하기 때문에, 지도학습모델이다.

kNN model (k-Nearest neighbor model)

  1. 훈련 세트와 테스트 세트 분할 비율 결정 기준은 어떻게 되나요? 상원

    기본적으로 훈련 데이터를 나눌 때는 테스트 세트보다 훈련 데이터가 더 많아야 한다. 보통은 훈련 데이터와 테스트 세트를 8:2로 나누지만, 만약 훈련 데이터의 샘플 수가 지나치게 클 경우에는 테스트 세트 비율을 줄여도 상관없다. 예를 들어, 훈련 데이터가 천만 개라고 가정할 때, 그중 1%만 추출해도 100,000개로, 모델을 테스트하기에 충분하다. 다만, 훈련 데이터의 비율이 너무 클 경우, over-fitting이 발생할 수 있기 때문에 비율을 신중하게 결정해야 한다.

  2. 적절한 데이터 분리와 셔플 방법은 어떻게 되나요? 민재

    책 상에 언급 → p.93 stratify 매개변수에 타깃 데이터를 전달하면 클래스 비율에 맞게 데이터를 나눕니다.

    여기서 말하는 클래스 비율이란?

    분류 결과로 나눠지는 타깃값의 비율 (예를 들어, 이 문제에서 말하는 도미와 빙어의 비율이 되겠다.)

    random.shuffle을 사용하는 방법 or train_test_split의 stratify 매개변수를 이용할 수 있음.

    단, random.shuffle을 이용할 경우에는 훈련 세트와 평가 세트의 인덱스 간 관계를 유지하는 것이 중요하다.