이번주에 3주차 강의 들었다.
내일은 실습 복습하고 과제1,2 하고~
다음주는 좀 널널하니까 4,5주차 강의 들어야겠다.
이번 방학에 다 끝내고 기계학습 수업듣는게 목표...! ٩(๑'o'๑)۶
K-Nearest Neighbors(KNN)의 개념
: 주변 k개의 자료의 클래스 중 가장 많은 클래스로 특정 자료를 분류 //가까이에 가장 많이 있는//
ⓐ KNN 특징
- 매우 간단한 방법이면서 performance는 떨어지지 않아서 많이 사용.
- 데이터 차원이 증가하면 차원의 저주(curse of dimension) 문제 발생 //차원이 증가할수록 성능 저하가 심함//
* 차원의 저주 : 차원이 증가할수록 데이터의 분포 분석에 필요한 샘플 데이터의 개수가 기하급수적으로 증가함
- 관측치의 거리로 Minkowski 거리를 이용
ⓑ Parameter
- 탐색할 이웃 수(k)와 거리 측정 방법 선택 //성능 결정//
▶ k가 너무 작을 경우, 데이터의 지역적 특성을 지나치게 반영하여 과접합(Overfitting) 발생
▶ k가 너무 클 경우, 모델이 과하게 정규화(Underfitting) 발생
--> 실험적 선택 필요, 학습을 통한 데이터 경향성 파악이 중요
ⓒ 분류방식
- 다수결 방식 (Majority voting)
: 이웃 범주 가운데 빈도 기준 제일 많은 범주로 새 데이터의 범주 예측
- 가중 합 방식 (Weighted voting)
: 가까운 이웃의 정보에 좀 더 가중치를 부여
KNN 장단점 요약
▶ 장점 ◀
- 학습데이터 수가 많다면 꽤 효과적인 알고리즘
- 마할라노비스 거리와 같이 데이터의 분산을 고려할 경우 매우 강건한 방법론
*마할라노비스 거리(Mahalanobis distance) : 평균과의 거리가 표준편차의 몇 배인지를 나타내는 값
즉, 얼마나 일어나기 힘든 값인지, 얼마나 이상한 값인지를 수치화
▶ 단점 ◀
- 데이터 각각의 특성에 맞게 k와 Distance metric을 연구자가 임의로 선정해야 한다.
- 계산 시간이 오래 걸림 ( 새로운 데이터와 각각의 학습 데이터 사이의 거리를 전부 측정해야 하므로)
--> KNN의 계산복잡성을 줄이려는 시도들 : Locality Sensitive Hashing, Network based Indexer, Optimized product quantization
실습 순서
1. 데이터 준비
데이터셋 불러오기 -> 데이터셋 카테고리의 실수화 -> 데이터 분할 -> 입력데이터의 표준화
2. 학습
모형 추정 혹은 사례 중심 학습
3. 결과 분석
Confusion matrix로 확인
ⓐ 데이터 분할 --> 학습 결과의 일반화가 가능한지 알아보기 위함
: 학습 데이터(train)과 시험 데이터(test)가 서로 겹치지 않도록 나누는 것
ⓑ 결과 분석 데이터
1. 정확도 (Accuracy)
2. 정밀도 (Precision)
3. 재현율 (recall)
'혤로그 이전의 기록 > 프로젝트 일지' 카테고리의 다른 글
[Python] Flask-MySQL 기반 웹 서버 구축 - ① 환경 설정 (0) | 2021.02.03 |
---|---|
[ Raspberry Pi ] UV4L를 이용한 실시간 스트리밍 테스트 (4) | 2021.01.31 |
[ Machine Learning ] 데이터 전처리 강의 내용 정리 (0) | 2021.01.18 |
[인공지능] 선형회귀 (Linear regression) , 경사하강(Gradient Descent Algorithm) 강의 내용 정리 (0) | 2021.01.11 |
[ StereoPi with PI Camera - VR live Streaming] 2020.11.17 (0) | 2020.11.17 |