기계 학습을 위한 KNN 분류기: 알아야 할 모든 것
게시 됨: 2021-09-28인공 지능(AI)이 SF 소설과 영화에 국한된 개념이었던 때를 기억하십니까? 글쎄요, 기술 발전 덕분에 AI는 이제 우리가 매일 같이 살아가는 것입니다. Alexa와 Siri가 우리의 손을 잡고 OTT 플랫폼에 우리가 보고 싶은 영화를 "손으로 고르기"를 요청하는 것부터 AI는 거의 오늘날의 주문이 되었으며 가까운 미래에 대해 말할 것입니다.
이 모든 것은 고급 ML 알고리즘 덕분에 가능합니다. 오늘 우리는 유용한 ML 알고리즘 중 하나인 K-NN 분류기에 대해 이야기할 것입니다.
AI 및 컴퓨터 과학의 한 분야인 머신 러닝은 데이터와 알고리즘을 사용하여 인간의 이해를 모방하는 동시에 알고리즘의 정확도를 점진적으로 개선합니다. 머신 러닝에는 예측 또는 분류를 수행하고 비즈니스 및 애플리케이션 내에서 전략적 의사 결정을 주도하는 핵심 통찰력을 발굴하기 위한 훈련 알고리즘이 포함됩니다.
KNN(k-nearest neighbour) 알고리즘은 회귀 및 분류 문제 설명을 해결하는 데 사용되는 기본 지도 머신 러닝 알고리즘입니다. 그럼 K-NN 분류기에 대해 자세히 알아보도록 하겠습니다.
목차
지도 머신 러닝 대 비지도 머신 러닝
지도 학습과 비지도 학습은 두 가지 기본 데이터 과학 접근 방식이며 KNN의 세부 사항으로 들어가기 전에 차이점을 아는 것이 적절합니다.
지도 학습 은 레이블이 지정된 데이터 세트를 사용하여 결과를 예측하는 데 도움이 되는 기계 학습 접근 방식입니다. 이러한 데이터 세트는 결과를 예측하거나 데이터를 정확하게 분류하도록 알고리즘을 "감독"하거나 훈련하도록 설계되었습니다. 따라서 레이블이 지정된 입력 및 출력을 통해 모델은 정확도를 향상시키면서 시간이 지남에 따라 학습할 수 있습니다.
지도 학습에는 분류 및 회귀라는 두 가지 유형의 문제가 포함됩니다. 분류 문제 에서 알고리즘은 테스트 데이터를 개에서 고양이를 분리하는 것과 같이 개별 범주로 할당합니다.
중요한 실제 예는 스팸 메일을 받은 편지함과 별개의 폴더로 분류하는 것입니다. 반면, 지도 학습의 회귀 방법은 독립 변수와 종속 변수 간의 관계를 이해하도록 알고리즘을 훈련시킵니다. 다른 데이터 포인트를 사용하여 비즈니스의 판매 수익을 예측하는 것과 같은 숫자 값을 예측합니다.
반대로 비지도 학습 은 레이블이 지정되지 않은 데이터 세트의 분석 및 클러스터링을 위해 기계 학습 알고리즘을 사용합니다. 따라서 알고리즘이 데이터의 숨겨진 패턴을 식별하기 위해 사람이 개입할 필요가 없습니다("감독되지 않음").
비지도 학습 모델에는 연관, 클러스터링 및 차원 축소의 세 가지 주요 응용 프로그램이 있습니다. 그러나 우리의 논의 범위를 벗어나므로 세부 사항에 대해서는 다루지 않겠습니다.
K-최근접 이웃(KNN)
K-Nearest Neighbor 또는 KNN 알고리즘은 지도 학습 모델을 기반으로 하는 기계 학습 알고리즘입니다. K-NN 알고리즘은 유사한 것이 서로 가까이 있다고 가정하여 작동합니다. 따라서 K-NN 알고리즘은 새로운 데이터 포인트와 훈련 세트(사용 가능한 경우)의 포인트 간의 기능 유사성을 활용하여 새 데이터 포인트의 값을 예측합니다. 본질적으로 K-NN 알고리즘은 훈련 세트의 포인트와 얼마나 유사한지를 기반으로 최신 데이터 포인트에 값을 할당합니다. K-NN 알고리즘은 분류 및 회귀 문제 모두에 적용되지만 주로 분류 문제에 사용됩니다.
다음은 K-NN 분류기를 이해하는 예입니다.
원천
위 이미지에서 입력값은 고양이와 강아지를 모두 닮은 생물입니다. 그러나 우리는 그것을 고양이 또는 개로 분류하고 싶습니다. 따라서 이 분류에 K-NN 알고리즘을 사용할 수 있습니다. K-NN 모델은 사용 가능한 고양이 및 개 이미지(훈련 데이터 세트)에 대한 새 데이터 세트(입력) 간의 유사성을 찾습니다. 결과적으로 모델은 가장 유사한 기능을 기반으로 고양이 또는 개 범주에 새 데이터 포인트를 배치합니다.
마찬가지로 카테고리 A(녹색 점) 및 카테고리 B(주황색 점)는 위의 그래픽 예를 가지고 있습니다. 또한 카테고리 중 하나에 해당하는 새로운 데이터 포인트(파란색 점)가 있습니다. 우리는 K-NN 알고리즘을 사용하여 이 분류 문제를 풀고 새로운 데이터 포인트 범주를 식별할 수 있습니다.
K-NN 알고리즘의 속성 정의
다음 두 속성은 K-NN 알고리즘을 가장 잘 정의합니다.
- 학습 세트에서 즉시 학습하는 대신 K-NN 알고리즘은 데이터 세트를 저장하고 분류 시점에 데이터 세트에서 학습하기 때문에 지연 학습 알고리즘 입니다.
- K-NN은 또한 비모수적 알고리즘 이므로 기본 데이터에 대해 어떠한 가정도 하지 않습니다.
K-NN 알고리즘의 작동
이제 K-NN 알고리즘이 어떻게 작동하는지 이해하기 위해 다음 단계를 살펴보겠습니다.
1단계: 훈련 및 테스트 데이터를 로드합니다.
2단계: 가장 가까운 데이터 포인트, 즉 K 값을 선택합니다.
3단계: K개의 이웃 거리(훈련 데이터와 테스트 데이터의 각 행 사이의 거리)를 계산합니다. 유클리드 방법은 거리를 계산하는 데 가장 일반적으로 사용됩니다.
4단계: 계산된 유클리드 거리를 기반으로 K개의 최근접이웃을 취합니다.
5단계: 가장 가까운 K개의 이웃 중에서 각 범주의 데이터 요소 수를 계산합니다.
6단계: 이웃 수가 최대인 범주에 새 데이터 포인트를 할당합니다.
7단계: 종료합니다. 이제 모델이 준비되었습니다.
세계 최고의 대학에서 온라인으로 인공 지능 과정 에 참여하십시오 . 석사, 대학원 대학원 프로그램, ML 및 AI 고급 인증 프로그램에 참여하여 경력을 빠르게 추적하십시오.
K 값 선택
K는 K-NN 알고리즘에서 중요한 매개변수입니다. 따라서 K 값을 결정하기 전에 몇 가지 사항을 염두에 두어야 합니다.
오류 곡선 을 사용 하는 것은 K 값을 결정하는 일반적인 방법입니다. 아래 이미지는 테스트 및 교육 데이터에 대한 다양한 K 값에 대한 오류 곡선을 보여줍니다.
원천
위의 그래픽 예에서 훈련 데이터의 K=1에서 기차 오류는 0입니다. 포인트에 가장 가까운 이웃이 해당 포인트 자체이기 때문입니다. 그러나 K 값이 낮아도 검정 오차가 크다. 이를 데이터의 고분산 또는 과적합이라고 한다. 테스트 오류는 K 값이 증가함에 따라 감소하지만 K의 특정 값 이후에는 바이어스 또는 언더피팅이라고 하는 테스트 오류가 다시 증가하는 것을 볼 수 있습니다. 따라서 테스트 데이터 오차는 분산으로 인해 초기에 높다가 점차 낮아져 안정화되며 K 값이 추가로 증가함에 따라 바이어스로 인해 테스트 오차가 다시 급증합니다.
따라서 검정오차가 안정되고 낮은 K값을 K의 최적값으로 한다. 위의 오차곡선을 고려할 때 K=8이 최적값이다.
K-NN 알고리즘의 작동을 이해하는 예
다음과 같이 그려진 데이터 세트를 고려하십시오.
원천
보라색 또는 빨간색 클래스로 분류해야 하는 (60,60)에 새로운 데이터 포인트(검은 점)가 있다고 가정합니다. 우리는 K=3을 사용할 것입니다. 즉, 새 데이터 포인트는 세 개의 가장 가까운 데이터 포인트를 찾습니다. 2개는 빨간색 클래스이고 1개는 보라색 클래스입니다.
원천
가장 가까운 이웃은 두 점 사이의 유클리드 거리를 계산하여 결정됩니다. 다음은 계산이 수행되는 방법을 보여주는 그림입니다.
원천
이제 새 데이터 포인트(검은 점)의 가장 가까운 이웃 중 2개(3개 중)가 빨간색 클래스에 있으므로 새 데이터 포인트도 빨간색 클래스에 할당됩니다.
세계 최고의 대학에서 온라인으로 머신 러닝 과정에 참여하십시오. 석사, 대학원 대학원 과정, ML 및 AI 고급 인증 프로그램을 통해 빠르게 경력을 쌓을 수 있습니다.
분류자로서의 K-NN(Python에서의 구현)
이제 K-NN 알고리즘에 대해 간략하게 설명했으므로 Python에서 K-NN 알고리즘을 구현하는 방법을 살펴보겠습니다. 우리는 K-NN 분류기에만 집중할 것입니다.
1단계: 필요한 Python 패키지를 가져옵니다.
원천
2단계: UCI 기계 학습 저장소에서 홍채 데이터 세트를 다운로드합니다. 웹링크는 "https://archive.ics.uci.edu/ml/machine-learning-databases/iris/iris.data" 입니다.
3단계: 데이터세트에 열 이름을 할당합니다.
원천
4단계: Pandas DataFrame으로 데이터 세트를 읽습니다.
원천
5단계: 데이터 전처리는 다음 스크립트 라인을 사용하여 수행됩니다.
원천
6단계: 데이터 세트를 테스트 및 학습 분할로 나눕니다. 아래 코드는 데이터 세트를 40% 테스트 데이터와 60% 교육 데이터로 분할합니다.
원천
7단계: 데이터 스케일링은 다음과 같이 수행됩니다.
원천
8단계: sklearn의 KNeighborsClassifier 클래스를 사용하여 모델을 훈련합니다.
원천
9단계: 다음 스크립트를 사용하여 예측합니다.
원천
10단계: 결과를 인쇄합니다.
원천
산출:
원천
다음은? IIT Madras 및 upGrad의 기계 학습 고급 인증 프로그램에 등록
숙련된 데이터 과학자 또는 기계 학습 전문가가 되기를 열망한다고 가정해 보겠습니다. 이 경우 IIT Madras 및 upGrad의 기계 학습 및 클라우드 고급 인증 과정 이 바로 여러분을 위한 것입니다!
12개월 온라인 프로그램은 기계 학습, 빅 데이터 처리, 데이터 관리, 데이터 웨어하우징, 클라우드 및 기계 학습 모델 배포의 개념을 마스터하려는 실무 전문가를 위해 특별히 설계되었습니다.
다음은 프로그램이 제공하는 내용에 대한 더 나은 아이디어를 제공하는 몇 가지 코스 하이라이트입니다.
- IIT Madras에서 세계적으로 인정하는 권위 있는 인증
- 500시간 이상의 학습, 20개 이상의 사례 연구 및 프로젝트, 25개 이상의 업계 멘토링 세션, 8개 이상의 코딩 과제
- 7가지 프로그래밍 언어 및 도구에 대한 포괄적인 범위
- 4주간의 산업 캡스톤 프로젝트
- 실용적인 실습 워크샵
- 오프라인 P2P 네트워킹
프로그램에 대해 자세히 알아보려면 지금 등록하세요!
결론
시간이 지남에 따라 빅 데이터는 계속 성장하고 인공 지능은 점점 더 우리 삶과 얽히게 됩니다. 결과적으로 머신 러닝 모델의 힘을 활용하여 데이터 통찰력을 수집하고 중요한 비즈니스 프로세스와 일반적으로 세상을 개선할 수 있는 데이터 과학 전문가에 대한 수요가 급격히 증가하고 있습니다. 의심할 여지 없이 인공 지능 및 기계 학습 분야는 실제로 유망해 보입니다. upGrad 를 사용하면 머신 러닝 및 클라우드 분야에서의 경력이 보람 있는 일임을 확신할 수 있습니다!
K-NN이 좋은 분류기인 이유는 무엇입니까?
다른 기계 학습 알고리즘에 비해 K-NN의 주요 이점은 다중 클래스 분류에 K-NN을 편리하게 사용할 수 있다는 것입니다. 따라서 데이터를 2개 이상의 범주로 분류해야 하거나 데이터가 2개 이상의 레이블로 구성된 경우 K-NN이 최상의 알고리즘입니다. 또한 비선형 데이터에 이상적이며 비교적 높은 정확도를 가지고 있습니다.
K-NN 알고리즘의 한계는 무엇입니까?
K-NN 알고리즘은 데이터 포인트 사이의 거리를 계산하여 작동합니다. 따라서 상대적으로 시간이 많이 소요되는 알고리즘이며 경우에 따라 분류하는 데 더 많은 시간이 소요됩니다. 따라서 다중 클래스 분류를 위해 K-NN을 사용할 때 너무 많은 데이터 포인트를 사용하지 않는 것이 가장 좋습니다. 다른 제한 사항으로는 높은 메모리 저장 공간과 관련 없는 기능에 대한 민감도가 있습니다.
K-NN의 실제 응용 프로그램은 무엇입니까?
K-NN은 필기 감지, 음성 인식, 비디오 인식 및 이미지 인식과 같은 머신 러닝의 몇 가지 실제 사용 사례를 가지고 있습니다. 은행에서 K-NN은 채무 불이행과 유사한 특성을 가지고 있는지 여부를 기반으로 개인이 대출 대상인지 예측하는 데 사용됩니다. 정치에서 K-NN은 잠재적 유권자를 "X 정당에 투표할 것" 또는 "Y 정당에 투표할 것" 등과 같은 다양한 클래스로 분류하는 데 사용할 수 있습니다.