11-1. 머신 러닝 이해하기
머신 러닝(Machine Learning)
주어진 데이터를 분석하여 규칙성, 패턴 등을 찾고, 이를 이용하여 의미 있는 정보를 추출하는 과정
특정한 규칙이나 지침 대신 패턴이나 추론에 의지하여 특정한 일을 수행하는데 있어 컴퓨터 시스템이 사용할 수치적 모델이나 알고리즘에 대한 과학적 학문(출처: wiki page 영문 설명)
기존 프로그래밍은 데이터와 프로그램(지침)으로 답을 추출해 냈다면, 머신 러닝은 데이터와 답을 가지고 프로그램을 추출한다.

머신 러닝 종류
딥 러닝은 강화 학습 쪽에 들어간다.
이 강의에서 주로 다루는 분야는 (비)지도 학습 분야이다.

머신 러닝 단계
1. 학습(Train): 학습 데이터를 이용하여 모델을 학습하는 과정 (많은 데이터를 처리해야하므로 시간이 좀 걸린다)
2. 예측(Predict): 학습된 모델을 이용하여 새로운 데이터로부터 적절한 값을 예측하는 과정 (=추론, Inference)

머신 러닝 학습
미래의 새로운 데이터를 가지고 더 정확한 예측을 목적으로 모델의 일반화(generalization) 성능을 향상시키는 방향 추구
아래 그림처럼 적합한 모델의 일반화가 필요하다 (사진 출처 링크)

과적합(Overfitting)은 학습 데이터셋을 지나치게 정확하게 구분하도록 학습하게 되어 오히려 노이즈에 대한 일반화 성능이 떨어지게 된다.
학습 데이터 셋이 너무 적거나, 전체 데이터 셋의 특성/분포를 반영하지 않아서 일어날 수도 있고, 모델 자체가 복잡하여 발생할 수도 있다.
학습 데이터에 의한 과적합의 경우, 데이터 분할하는 방식을 현명히 선택해야 한다.
1. 기존 데이터를 학습(Train)-검증(Validation)-검사(Test) 세트로 나누기
검증 세트를 추가함으로써 머신 러닝에 사용되는 파라미터들이 local maxima에 빠져 과적합되는 것을 방지

2. K-폴드 교차 검증(k-fold cross-validation): 학습-검증 데이터를 k개로 분할하여 여러 번 검증

11-2. OpenCV 머신 러닝 클래스
OpenCV 머신 러닝
머신 러닝용 클래스와 그에 대한 설명은 아래 그림에서 잘 보여준다.
통계적 모델(StatModel)을 상속받게 된다. EM은 Expectation Maximization, SVM은 Support Vector Machine의 줄임말이다.


머신 러닝 알고리즘 객체 생성: cv2.ml.XXX_create() -> <XXX algorithm Object>
XXX는 생성할 머신 러닝 알고리즘 객체 이름
*train과 predict 함수는 cv2.ml_StatModel 클래스 함수이지만 머신 러닝 알고리즘 객체들은 상속받았기 때문에 사용 가능하다.
머신 러닝 알고리즘 학습: <XXX algorithm Object>.train(samples, layout, responses) -> retval
samples는 (N, d) 크기 및 numpy.float32 데이터 형식을 갖는 np.ndarray 형태의 학습 데이터 행렬
layout는 학습 데이터 배치 방법 (cv2.ROW_SAMPLE는 하나의 데이터가 한 행으로 구성, cv2.COL_SAMPLE는 하나의 데이터가 한 열로 구성)
responses는 (N, 1) 크기 및 정수/실수형 np.ndarray 형태의 각 학습 데이터에 대응되는 응답(레이블) 행렬
retval는 학습이 성공하면 True
머신 러닝 알고리즘 예측: <XXX algorithm Object>.predict(samples, results, flags) -> retval, results
samples는 (N, d) 크기 및 numpy.float32 데이터 형식을 갖는 np.ndarray 형태의 입력 벡터가 행 단위로 저장된 행렬
results는 (N, ) 또는 (N,1) 크기 및 정수/실수형 np.ndarray 형태의 각 입력 샘플에 대한 예측 결과를 저장한 행렬
flags는 추가적인 플래그로 (ex. cv2.ml.STAT_MODEL_RAW_OUTPUT는 클래스 레이블이 아닌 실제 계산 결과값을 출력)
retval 알고리즘 별로 상이
인증 타임
오늘 강의는 알고 있었던 머신 러닝에 대한 기본적인 개념을 복습하고, 몰랐던 OpenCV에서 제공하는 머신 러닝에 클래스들에 대해서 배울 수 있었다. 실질적인 활용 방법은 다음부터 배운다고 하니 어떤 데이터를 학습 시켜 테스트해볼지 기대된다.


#패스트캠퍼스 #패캠챌린지 #직장인인강 #직장인자기계발 #패스트캠퍼스후기 #OpenCV를 활용한 컴퓨터비전과 딥러닝 올인원 패키지 Online
패스트캠퍼스(FastCampus) 강의 둘러보러 가기
↓ ↓ ↓
패스트캠퍼스 [직장인 실무교육]
프로그래밍, 영상편집, UX/UI, 마케팅, 데이터 분석, 엑셀강의, The RED, 국비지원, 기업교육, 서비스 제공.
fastcampus.co.kr
본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성되었습니다.
'남돈내배 > 2022_FastCampus_환급이벤트' 카테고리의 다른 글
| 패스트캠퍼스 챌린지 44일차 - Ch11. 머신 러닝 (0) | 2022.03.08 |
|---|---|
| 패스트캠퍼스 챌린지 43일차 - Ch11. 머신 러닝 (0) | 2022.03.07 |
| 패스트캠퍼스 챌린지 41일차 - Ch10. 객체 추적과 모션 벡터 (0) | 2022.03.05 |
| 패스트캠퍼스 챌린지 40일차 - Ch10. 객체 추적과 모션 벡터 (0) | 2022.03.04 |
| 패스트캠퍼스 챌린지 39일차 - Ch10. 객체 추적과 모션 벡터 (0) | 2022.03.03 |