작성
·
211
0
안녕하세요. 좋은 강의 제공에 대해 감사드립니다.
iris classification에 대해 데이터 크기에 대한 질문이 있어서 글을 작성합니다.
앞서 KNN 알고리즘 설명 중 Data의 크기가 크면 slow하다는 단점이 있다고 하셨는데, test set과 pred set을 비교할 때는 data의 크기가 너무 작아서 파라미터만 건들여도 결과에 큰 변화가 있다고 말씀해주셨습니다.
그렇다면, KNN을 사용할 때는 어차피 데이터의 크기가 작은 dataset만 사용할테니, 이 경우는 파라미터 조정을 통해서 예측의 정확도를 높여야 한다는 뜻인가요? (test_size의 조정, random_state의 조정, 가중치 제공 방식 변화 등)
그런데 이런 방식으로 정확도를 높이는 것 자체가 너무 결과에 끼워맞추기 위한 데이터 해석이라고 생각합니다. 이런 경우에는 파라미터를 조정하여 정확도를 높이는 것이 좋은 방식인지, 새로운 모델을 찾아보는 것이 좋은 방식인지 궁금합니다.
또한, 알고리즘 설명에서 K값을 저희가 설정해야 한다고 하셨는데, 최적의 K값을 설정하는 방법에 대해 잘 이해가 안되서 질문 남깁니다.
재미있고 유익한 강의 항상 감사드립니다!
답변 1
0
안녕하세요. 질문하신 내용에 대한 답변입니다.
Dataset의 크기가 작은 경우 파라미터를 조정하여 정확도를 높이는 것이 좋은 방식인지, 새로운 모델을 찾아보는 것이 좋은 방식인지.
답변) test_size의 조정, random_state의 조정, 가중치 제공 방식 변화 등의 파라미터 조정은 optimal한 K 값을 찾고 나서의 미세 조정입니다. 최적의 K 값을 구하는 것이 우선 입니다. 또한 어떠한 데이터에 어떤 모델이 가장 잘 맞는지 정리된 규칙도 없으므로 가능한 여러가지 모델을 다 적용해 보고 제일 잘 맞는 모델을 찾아야 합니다. (이 것을 No Free Lunch Theorem 이라고 합니다.) 여러가지 모델을 쉽게 적용해 보고 비교할 수 있는 것이 scikit-learn 을 사용하는 이유이기도 합니다. 물론 데이터 건수가 많을 경우 (최소 몇 만건 이상) 딥러닝 모델이 전통적 머신러닝 모델 보다 정확합니다.
최적의 K값을 설정하는 방법
답변) K의 가장 유리한 값을 찾기 위해 미리 정의된 통계적 방법은 없습니다.
임의의 K 값을 초기화하고 계산을 시작합니다.
K 값을 작게 선택하면 결정 경계가 불안정해집니다. 따라서 작은 K에서 시작하여 여러가지 K 값을 시도하고 K 사이의 정확도를 시각화 합니다. 그런 다음 최소 오류율을 갖는 K 값을 선택합니다.
더 자세한 내용은 https://towardsdatascience.com/how-to-find-the-optimal-value-of-k-in-knn-35d936e554eb 참조하세요.
좋은 질문 감사드리고 앞으로도 많은 질문 바랍니다.