티스토리 뷰
지도학습 알고리즘
지도학습 관련 알고리즘들로는
분류 규칙 학습자 (Classification Rule Learners)
선형 회귀 (Linear Regression)
회귀 트리 (Regression Trees)
모델 트리 (Model Trees)
신경망 (Neural Networks)
서포트 벡터 머신 (Support Vector Machines)
등 ......
이 있다고 말씀 드렸었습니다. 그 중 오늘은 가장 고전적이며 직관적인 최근접 이웃법 (Nearest Neighbor) 에 대해 알아보겠습니다.
최근접 이웃법 (Nearest Neighbor) - 이론
최근접 이웃법은 한마디로 유유상종 이라고 할 수 있습니다. 새로운 데이터를 입력 받았을 때 가장 가까이 있는 것이 무엇이냐를 중심으로 새로운 데이터의 종류를 정해주는 알고리즘 입니다. 그림으로 살펴보겠습니다.
저 물음표에는 세모와 동그라미 중에 어떤게 들어갈까요?
최근접 이웃 알고리즘은 "?" 의 주변에 있는 것이 세모이기 때문에 세모라고 판단하는 알고리즘 입니다. 매우 간단하고 직관적인 알고리즘 입니다.
하지만 단순히 가장 가까이에 있는 것과 같게 선택하는 것이 옳은 분류가 될까요? 다음 경우를 살펴보겠습니다.
'?' 에서 가장 가까운 것은 파란 동그라미 입니다. 하지만 조금만 더 넓혀서 본다면 뭔가 부적절하다는 것이 느껴집니다.
이렇기 때문에 단순히 주변에 무엇이 가장 가까이 있는가를 보는 것이 아니라 주변에 있는 몇개의 것들을 같이 봐서 가장 많은 것을 골라내는 방식을 사용하게 됩니다. 이 방식을 KNN 이라고 부릅니다. KNN 에서 K 는 주변의 개수를 의미합니다.
K 가 1일때는 '?' 를 파란 동그라미라고 판단하겠지만 K 를 4로 변경한다면 빨간 세모라고 판단할 것입니다.
하지만 문제가 하나 있습니다. 과연 K 는 몇이어야 좋은 것일까. 최선의 k값을 선택하는 것은 데이터마다 다르게 접근해야합니다. 일반적으로 k 값이 커질수록 분류에서 이상치의 영향이 줄어들지만 분류자체를 못하게 되는 상황이 발생합니다. 일반적으로는 총데이터의 제곱근값을 사용하고 있으며 최적의 k 값을 찾기 위한 연구는 아직도 진행중입니다.
지도학습 알고리즘 - 예제1 - 토마토 분류
아래의 사진은 음식을 당도와 아삭함으로 구분한 예제 입니다.
토마토는 6,4 의 데이터를 가지고 있습니다. 과일, 단백질, 채소 중에 어떤 부분에 분류될까요?
다음 테이블은 토마토의 예측 결과표 입니다. k 의 값의 변화에 따라 예측이 달라지는 것을 알 수 있습니다.
사실 토마토는 채소인데 당도와 아삭함으로 구별해보았을 때는 과일이나 단백질로 주로 나오는 걸 알 수 있습니다. 보통 사람들이 처음에 토마토가 채소라는 것을 알고 놀라는 것을 보면 적절하게 분류했다고 할 수도 있을까요?
지도학습 알고리즘 - 예제2 - 암진단
- 두번째 예제는 암진단 데이터 입니다. 데이터는 이곳 에서 받으시거나 확인하실 수 있습니다. 이 데이터는 32개의 컬럼을 가지고 있습니다. 그중 첫번째는 ID 이기 때문에 제외하고 두번째는 종속변수인 것을 고려하면 30개의 독립변수가 있는 것입니다. 첫번째 예제처럼 독립변수가 2개 정도라면 사람이 손으로도 구할 수 있으며 그래프를 그렸을 경우에는 더욱 직관적으로 이해할 수 있습니다. 하지만 이와 같이 컬럼이 30개가 된다면 머리로 계산해내는 것은 쉽지 않습니다.
- 총 569 개의 세포 정보가 입력 되어 있는데, 이 한정된 자료로 효과적인 모델을 만들어야 합니다. 추가 자료가 있다면 569개의 정보를 모두 모델 생성과정에 사용할 수 있겠지만 자료가 없다면 이 자료를 TRAIN 데이터와 TEST 데이터로 나누어 사용해야 보다 일반적인 모델을 만들 수 있습니다. 다시 말하지만 우리의 목적은 "레이블이 없는 데이터를 예측하는 것" 입니다.
- 1번부터 469번까지를 TRAIN 데이터로, 나머지 데이터를 TEST 데이터로 구성 한 뒤 KNN 알고리즘을 이용해서 분석해보았습니다.
- R 을 통해 분석한 결과 Cross Table 입니다. 세로는 실제 Test 데이터의 레이블, 가로는 예상 레이블 입니다.
- 좌상단의 61 이라는 숫자는 실제로 악성인데 예상도 악성인 것
- 우상단의 0 은 실제로 악성인데 음성이라고 예상한 것
- 좌하단의 4 는 실제로 음성인데 악성이라고 예상한 것
- 우하단의 35 는 실제로 음성이고 예상도 음성인 것을 말합니다.
- 따라서 96개는 제대로 분류 했고 4개는 잘못 분류 했기 때문에 정확도 96%의 모델이라고 말할 수 있습니다.
- 이번 예제의 경우에는 정확도가 높게 나왔지만 낮게 나왔을 경우 높이는 여러 방법들이 있습니다. Z - 점수 표준화 방법, 데이터 셔플 등 여러 기술을 통해 정확도를 높이는 방법들이 있습니다.
'머신러닝' 카테고리의 다른 글
[머신러닝] 의사결정트리 (Decision Trees) (6) | 2017.12.04 |
---|---|
[머신러닝] 나이브 베이즈 (Naive Bayes) (14) | 2017.11.29 |
1 - 3. 머신러닝의 알고리즘 타입 - 강화학습 (0) | 2017.11.26 |
1 - 2. 머신러닝의 알고리즘 타입 - 비지도학습 (0) | 2017.11.25 |
1 - 1. 머신러닝의 알고리즘 타입 - 지도학습 (0) | 2017.11.24 |
- Total
- Today
- Yesterday
- 반려견캠핑
- 가평여행
- 가족여행
- 파이썬
- Koreancuisine
- 여름캠핑
- bukhansannationalpark
- 카카오
- 영월캠핑
- 백준
- 가족캠핑
- 캠핑장추천
- 가평캠핑
- 커플여행
- 여름휴가추천
- 영월여행
- sql
- 머신러닝
- 서울근교캠핑
- 알고리즘
- SeoulTravel
- python
- 글램핑
- Oracle
- 강원도캠핑
- 자연힐링
- 강원도여행
- 계곡캠핑
- 여름휴가
- 캠핑초보
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |