Introduction to k-Nearest Neighbors : A 강력한 Machine Learning Algorithm (with implementation in Python & R)

참고 :이 기사는 원래 2014 년 10 월 10 일에 게시되었으며에 업데이트되었습니다. 2018 년 3 월 27 일

개요

  • 가장 인기있는 머신 러닝 알고리즘 중 하나 인 KNN (가장 가까운 이웃) 이해
  • kNN 작동 학습 Python에서
  • 간단한 용어로 올바른 k 값 선택

소개

4 년 후 데이터 과학 경력 중 80 % 이상의 분류 모델과 15-20 %의 회귀 모델을 구축했습니다. 이러한 비율은 산업 전반에 걸쳐 다소 일반화 될 수 있습니다. 분류 모델에 대한 이러한 편견의 원인은 대부분의 분석 문제가 의사 결정과 관련이 있기 때문입니다.

예를 들어, 고객 X를 대상으로하는 경우 고객의 관심을 끌 것인지 고객의 잠재력이 높은지 여부에 관계없이 디지털 캠페인. 이러한 분석은보다 통찰력이 있으며 구현 로드맵과 직접 연결됩니다.

이 기사에서는 널리 사용되는 또 다른 기계 학습 분류 기술인 KNN (K-nearest Neighbors)에 대해 설명합니다. 우리의 초점은 주로 알고리즘 작동 방식과 입력 매개 변수가 출력 / 예측에 미치는 영향에 있습니다.

참고 : 동영상을 통해 배우기를 선호하는 사람들은 무료 과정 인 K-를 통해 동일한 내용을 배울 수 있습니다. Python 및 R의 KNN (Nearest Neighbors) 알고리즘. 데이터 과학 및 머신 러닝의 완전한 초보자 인 경우 인증 된 BlackBelt 프로그램을 확인하세요.

  • 인증 된 AI & ML Blackbelt + 프로그램

목차

  • KNN 알고리즘은 언제 사용하나요?
  • KNN 알고리즘은 작동합니까?
  • 인자 K는 어떻게 선택합니까?
  • 분할 분석 – KNN의 의사 코드
  • 파이썬에서 처음부터 구현
  • 모델을 scikit-learn과 비교

KNN 알고리즘은 언제 사용하나요?

KNN은 두 가지 모두에 사용할 수 있습니다. 분류 및 회귀 예측 문제. 그러나 업계의 분류 문제에서 더 널리 사용됩니다. 기술을 평가하기 위해 일반적으로 3 가지 중요한 측면을 살펴 봅니다.

1. 출력 해석 용이성

2. 계산 시간

3. 예측력

KNN을 척도에 배치하는 몇 가지 예를 들어 보겠습니다.

KNN 알고리즘은 고려 사항의 모든 매개 변수에 대해 공정합니다. 해석이 쉽고 계산 시간이 짧기 때문에 일반적으로 사용됩니다.

KNN 알고리즘은 어떻게 작동합니까?

간단한 사례를 살펴 보겠습니다. 이 알고리즘을 이해하십시오. 다음은 빨간색 원 (RC)과 녹색 사각형 (GS)의 분포입니다.

블루 스타 (BS)의 클래스. BS는 RC 또는 GS 일 수 있으며 다른 것은 없습니다. “K”는 KNN 알고리즘은 우리가 투표를 받고자하는 가장 가까운 이웃입니다. K = 3이라고 가정 해 보겠습니다. 따라서 이제 평면에서 세 개의 데이터 포인트 만 포함 할만큼 큰 중심으로 BS가있는 원을 만듭니다. . 자세한 내용은 다음 다이어그램을 참조하십시오.

BS에 가장 가까운 세 지점은 모두 RC입니다. 따라서 신뢰 수준이 좋으면 BS가 RC 클래스에 속해야한다고 말할 수 있습니다. 여기서 가장 가까운 이웃의 세 표가 모두 RC로 이동했기 때문에 선택이 매우 분명해졌습니다. 매개 변수 K의 선택은이 알고리즘에서 매우 중요합니다. . 다음으로, 최상의 K를 결정하기 위해 고려해야 할 요소가 무엇인지 이해할 것입니다.

인자 K를 어떻게 선택합니까?

먼저 알고리즘에서 K가 정확히 어떤 영향을 미치는지 이해해 보겠습니다. 마지막 예를 보면 6 개의 훈련 관찰이 모두 일정하게 유지되고 주어진 K 값으로 각 클래스의 경계를 만들 수 있습니다. se 경계는 GS에서 RC를 분리합니다. 같은 방식으로 “K”값이 클래스 경계에 미치는 영향을 살펴 보겠습니다. 다음은 K 값이 다른 두 클래스를 구분하는 다른 경계입니다.

주의 깊게 살펴보면 경계는 K 값이 증가함에 따라 더 부드러워집니다. K가 무한대로 증가하면 결국 전체 다수에 따라 모두 파란색 또는 모두 빨간색이됩니다. 훈련 오류율과 검증 오류율은 다른 K- 값에 액세스하는 데 필요한 두 가지 매개 변수입니다. 다음은 K의 다양한 값을 사용한 학습 오류율 곡선입니다.

보시다시피 K = 1에서의 오류율은 훈련 샘플에 대해 항상 0입니다.이는 훈련 데이터 포인트에 가장 가까운 포인트가 그 자체이기 때문에 예측은 항상 K = 1 일 때 정확합니다. 유효성 검사 오류 곡선이 비슷했다면 K를 선택하면 1이됩니다. 다음은 K 값이 다양한 유효성 검사 오류 곡선입니다.

이렇게하면 이야기가 더 명확 해집니다. K = 1에서는 경계를 과적 합했습니다. 따라서 오류율은 처음에 감소하고 최소값에 도달합니다. 최소 포인트 이후에는 K가 증가함에 따라 증가합니다. K의 최적 값을 얻기 위해 초기 데이터 세트에서 훈련 및 검증을 분리 할 수 있습니다. 이제 K의 최적 값을 얻기 위해 검증 오류 곡선을 플로팅합니다.이 K 값은 모든 예측에 사용되어야합니다.

위 내용은 무료 과정 인 K-Nearest Neighbors ()를 사용하여보다 직관적으로 이해할 수 있습니다. KNN) Python 및 R의 알고리즘

분할 분석 – KNN의 의사 코드

아래 단계에 따라 KNN 모델을 구현할 수 있습니다.

  1. 데이터로드
  2. k 값 초기화
  3. 예측 된 클래스를 가져 오려면 1에서 총 학습 데이터 포인트 수까지 반복합니다.
    1. 테스트 간 거리 계산 데이터 및 훈련 데이터의 각 행. 여기서는 가장 많이 사용되는 방법이므로 거리 측정 항목으로 유클리드 거리를 사용합니다. 사용할 수있는 다른 측정 항목은 체비 쇼프, 코사인 등입니다.
    2. 거리 값을 기준으로 계산 된 거리를 오름차순으로 정렬
    3. 정렬 된 배열에서 상위 k 개 행 가져 오기
    4. 이 행에서 가장 빈번한 클래스 가져 오기
    5. 예측 클래스 반환

처음부터 Python으로 구현

KNN 모델을 구축하기 위해 인기있는 Iris 데이터 세트를 사용할 것입니다. 여기에서 다운로드 할 수 있습니다.

모델을 scikit-learn과 비교

두 모델이 동일한 클래스 ( Iris- virginica ) 및 동일한 가장 가까운 이웃 (). 따라서 모델이 예상대로 실행된다는 결론을 내릴 수 있습니다.

R에서 kNN 구현

1 단계 : 데이터 가져 오기

2 단계 : 데이터 확인 및 데이터 요약 계산

출력

3 단계 : 데이터 분할

4 단계 : 계산 유클리드 거리

5 단계 : kNN을 예측하는 함수 작성

6 단계 : K = 1에 대한 레이블 (이름) 계산

출력

For K=1 "Iris-virginica"

같은 방식으로 다른 K 값을 계산할 수 있습니다.

kNN 예측 기능을 “클래스”라이브러리와 비교

출력

For K=1 "Iris-virginica"

둘 다 모델은 동일한 클래스 ( Iris-virginica)를 예측했습니다.

End Notes

KNN 알고리즘은 가장 간단한 분류 알고리즘 중 하나입니다. 이러한 단순함으로 인해 경쟁이 치열한 결과를 얻을 수 있으며 KNN 알고리즘은 회귀 문제에도 사용할 수 있습니다. 논의 된 방법론에서 가장 가까운 이웃의 투표보다는 가장 가까운 이웃의 평균을 사용합니다. KNN은 R에서 한 줄로 코딩 할 수 있습니다. SAS에서 KNN 알고리즘을 어떻게 사용할 수 있는지 아직 살펴 보지 않았습니다.

이 기사가 유용 했습니까? 최근에 다른 기계 학습 도구를 사용한 적이 있습니까? 비즈니스 문제에 KNN을 사용할 계획입니까? 그렇다면 어떻게 계획하고 있는지 알려주세요.

& 방금 읽은 내용이 마음에 들면 분석 학습을 계속하려면 구독을 신청하세요. 이메일, 트위터에서 팔로우하거나 페이스 북 페이지를 좋아하세요.

답글 남기기

이메일 주소를 발행하지 않을 것입니다. 필수 항목은 *(으)로 표시합니다