2 . 3 지도 학습 알고리즘 | 텐서 플로우 블로그 ( Tensor ≈ Blog ) 
 2 . 2 일 반화 , 과대 적 합 , 과소 적 합 | 목차 | 2 . 3 . 2 k - 최 근접 이웃 
 이제 가장 인기 인 머신 러닝 알고리즘 들 을 둘러보 면서 데이터 로부터 어떻게 학습 하 고 예측 하 는지 설명 하 겠 습니다 . 또한 이런 모델 들 에서 모델 의 복잡도 가 어떤 역할 을 하 는지 이야기 하 고 각 알고리즘 이 모델 을 어떻게 만드 는지 소개 하 겠 습니다 . 그리고 모델 들 의 장단점 을 평가 하 고 어떤 데이터 가 잘 들어맞 을지 살펴보 겠 습니다 . 가장 중요 한 매개변수 와 옵션 의 의미 도 설명 하 겠 습니다 . 1 분류 와 회귀 모델 을 모두 가지 고 있 는 알고리즘 도 많 은데 , 이런 경우 둘 다 살펴보 겠 습니다 . 
 각 알고리즘 의 자세 한 설명 을 모두 읽 을 필요 는 없 지만 , 모델 을 이해 하 면 여러 머신 러닝 알고리즘 의 작동 방식 을 더 잘 알 수 있 습니다 . 이 장 은 특정 알고리즘 의 작동 방식 이 궁금 할 때 다시 돌아와서 확인 하 는 참고 자료 로 사용 하 면 좋 습니다 . 
 여러 알고리즘 을 설명 하 기 위해 데이터 셋 도 여러 개 사용 하 겠 습니다 . 어떤 데이터 셋 은 작 고 인위 적 으로 만든 것 이 며 , 알고리즘 의 특징 을 부각 하 기 위해 만든 것 도 있 습니다 . 실제 샘플 로 만든 큰 데이터 셋 도 있 습니다 . 
 두 개 의 특성 을 가진 forge 데이터 셋 은 인위 적 으로 만든 이진 분류 데이터 셋 입니다 . 다음 코드 는 이 데이터 셋 의 모든 데이터 포인트 를 산점도 로 그립니다 ( 그림 2 - 2 ) . x 축 은 첫 번 째 특성 이 고 y 축 은 두 번 째 특성 입니다 . 모든 산점도 가 그렇 듯이 점 하나 가 각 데이터 포인트 를 나타냅니다 . 점 의 색 과 모양 은 데이터 포인트 가 속한 클래스 를 나타냅니다 . 
 # 데이터 셋 을 만듭니다 . 
 # 산점도 를 그립니다 . 
 plt . xlabel ( " 첫 번 째 특성 ") 
 plt . ylabel ( " 두 번 째 특성 ") 
 그림 2 - 2 forge 데이터 셋 의 산점 도 
 X . shape 값 에서 알 수 있 듯이 이 데이터 셋 은 데이터 포인트 26 개 와 특성 2 개 를 가집니다 . 
 회귀 알고리즘 설명 에 는 인위 적 으로 만든 wave 데이터 셋 을 사용 하 겠 습니다 . wave 데이터 셋 은 입력 특성 하나 와 모델링 할 타깃 변수 ( 또는 응답 ) 를 가집니다 . [ 그림 2 - 3 ] 은 특성 을 x 축 에 놓 고 회귀 의 타깃 ( 출력 ) 을 y 축 에 놓 았 습니다 . 
 plt . xlabel ( " 특성 ") 
 plt . ylabel ( " 타깃 ") 
 그림 2 - 3 x 축 을 특성 , y 축 을 타깃 으로 한 wave 데이터 셋 의 그래프 
 종이 는 2 차원 이 라 둘 이 넘 는 특성 은 표현 하 기 어려우 니 손쉽 게 시각 화 하 기 위해서 간단 한 저 차원 데이터 셋 을 사용 하 겠 습니다 . 특성 이 적 은 데이터 셋 ( 저 차원 데이터 셋 ) 에서 얻 은 직관 이 특성 이 많 은 데이터 셋 ( 고차원 데이터 셋 ) 에서 그대로 유지 되 지 않 을 수 있 습니다 . 하지만 이런 사실 을 유념 해둔다면 알고리즘 을 배울 때 저 차원 데이터 셋 을 사용 하 는 것 이 매우 좋 습니다 . 
 인위 적 인 소규모 데이터 셋 외 에 scikit - learn 에 들 어 있 는 실제 데이터 셋 도 두 개 를 사용 하 겠 습니다 . 하나 는 유방암 종양 의 임상 데이터 를 기록 해 놓 은 위스콘신 유방암 Wisconsin Breast Cancer 데이터 셋 입니다 ( 줄여서 cancer 라고 하 겠 습니다 ) . 각 종양 은 양성 benign ( 해 롭 지 않 은 종양 ) 과 악 성 malignant ( 암 종양 ) 으로 레이블 되 어 있 고 , 조직 데이터 를 기반 으로 종양 이 악성 인지 를 예측 할 수 있 도록 학습 하 는 것 이 과제 입니다 . 
 이 데이터 는 scikit - learn 에 있 는 load _ breast _ cancer 함수 를 사용 하 여 불러올 수 있 습니다 . 
 노트 _ scikit - learn 에 포함 된 데이터 셋 은 실제 데이터 와 데이터 셋 관련 정보 를 담 고 있 는 Bunch 객체 에 저장 되 어 있 습니다 . Bunch 객체 는 파이썬 딕셔너리 dictionary 와 비슷 하 지만 점 표기법 을 사용 할 수 있 습니다 ( 즉 bunch [ ‘ key ’] 대신 bunch . key 를 사용 할 수 있 습니다 ) . 
 이 데이터 셋 은 569 개 의 데이터 포인트 를 가지 고 있 고 특성 은 30 개 입니다 . 
 유방암 데이터 의 형태 : ( 569 , 30 ) 
 569 개 데이터 포인트 중 212 개 는 악성 이 고 357 개 는 양성 입니다 . 
 클 래스 별 샘플 개수 : 
 feature _ names 속성 을 확인 하 면 각 특성 의 의미 를 알 수 있 습니다 . 
 특성 이름 : 
 데이터 에 관한 더 자세 한 정보 는 cancer . DESCR 에서 확인 할 수 있 습니다 . 
 또 회귀 분석 용 실제 데이터 셋 으로 는 보스턴 주택 가격 Boston Housing 데이터 셋 을 사용 하 겠 습니다 . 이 데이터 셋 으로 할 작업 은 범죄 율 , 찰 스강 인접도 , 고속도 로 접근성 등 의 정보 를 이용 해 1970 년 대 보스턴 주변 의 주택 평균 가격 을 예측 하 는 것 입니다 . 이 데이터 셋 에 는 데이터 포인트 506 개 와 특성 13 개 가 있 습니다 . 
 데이터 의 형태 : ( 506 , 13 ) 
 이 데이터 셋 에서 도 boston 객체 의 DESCR 속성 에서 더 자세 한 정보 를 확인 할 수 있 습니다 . 이 데이터 셋 에서 는 13 개 의 입력 특성 뿐 아니 라 특성 끼리 곱하 여 ( 또는 상호 작용 이 라 부름 ) 의도 적 으로 확장 하 겠 습니다 . 다시 말 하 면 범죄 율 과 고속도 로 접근성 의 개별 특성 은 물론 , 범죄 율 과 고속도 로 접근성 의 곱 도 특성 으로 생각 한다는 뜻 입니다 . 이 처럼 특성 을 유도 해 내 는 것 을 특성 공학 feature engineering 이 라고 하 며 4 장 에서 자세 하 게 다루 도록 하 겠 습니다 . 유도 된 데이터 셋 은 load _ extended _ boston 함수 를 사용 하 여 불러들일 수 있 습니다 . 
 13 개 의 원래 특성 에 13 개 에서 2 개 씩 ( 중복 을 포함 해 ) 짝지 은 91 개 의 특성 을 더 해 총 104 개 가 됩니다 . 2 
 여러 머신 러닝 알고리즘 의 특성 들 을 보여 주 고 설명 하 기 위해 이런 데이터 셋 들 을 사용 할 것 입니다 . 그럼 먼저 앞 장 에서 본 k - 최 근접 이웃 ( k - NN ) 알고리즘 을 다시 살펴보 겠 습니다 . 
 이 책 에서 모든 매개변수 와 옵션 을 설명 하 지 는 않 습니다 . 더 상세 한 내용 은 scikit - learn 문서 ( http : / / scikit - learn . org / stable / documentation ) 를 참고 하 세요 . 
 옮긴 이 _ 중복 을 고려 하 지 않 은 이항 계수 의 공식 은 입니다 . 따라서 이 됩니다 . load _ extend _ boston 함수 는 scikit - learn 의 PolynomialFeatures 함수 를 사용 하 여 중복 을 포함 한 조합 을 만듭니다 . 중복 을 포함 한 조합 의 수 를 구하 는 공식 은 이 므로 이 됩니다 . 
 “ 2 . 3 지도 학습 알고리즘 ” 에 대한 2 개 의 생각 
 현 비밀 2020 - 06 - 24 ( 10 : 21 am ) 
 감사 합니다 . 매번 잘 보 고 있 습니다 . 한 줄기 빛 이 예요 
 박해선 글 의 글쓴이 2020 - 06 - 24 ( 10 : 37 am ) 
 도움 이 되 신다니 기쁩니다 . 🙂