머신러닝
- 데이터에서부터 학습하도록 컴퓨터를 프로그래밍하는 과학
- 어떤 작업 T에 대한 컴퓨터 프로그램의 성능을 P로 측정했을 때 경험 E로 인해 성능이 향상됐다면, 이 컴퓨터 프로그램은 작업 T와 성능 측정 P에 대해 경험 E로 학습한 것
- 학습하는 데 사용하는 샘플: Training Set
- 각 훈련 데이터: Training Instance
- ex) 스팸필터
- T: 새로운 메일이 스팸인지 구분
- E: 훈련 데이터
- P: 정확히 분류된 메일의 비율(정확도)
- 머신러닝은 어렵고 복잡한 문제의 패턴을 감지하여 판단에 좋은 기준을 자동으로 학습
- 머신러닝을 사용하지 않으면 직접 스팸에 자주 나타나는 단어를 분석해 패턴을 발견하고 알고리즘으로 작성하는 과정을 반복해야 함
- 머신러닝을 사용하면 프로그램이 훨씬 짧아지고 유지보수가 쉽고 정확도가 높다.
- 머신러닝 기술을 적용해 대용량 데이터를 분석하면 겉으로는 보이지 않던 패턴 발견: 데이터 마이닝
- 적용 사례
- 생산 라인에서 제품 이미지를 분석해 자동으로 분류(CNN)
- 뇌를 스캔해 종양 진단(CNN)
- 자동으로 뉴스 기사를 분류(NLP)
- 토론 포럼에서 부정적인 코멘트를 자동으로 구분(NLP)
- 다양한 성능 지표를 기반으로 회사의 내년도 수익 예측(회귀)
- 신용카드 부정 거래 감지(이상치 탐지)
- 구매 이력을 기반으로 고객을 나누고 각 집합마다 다른 마케팅 전략 계획(Clustering)
- 과거 구매 이력을 기반으로 고객이 관심을 가질 수 있는 상품 추천(RS)
- 지능형 게임 봇 만들기(RL)
종류
- 사람의 감독 하에 훈련하는 것인지
- 지도 학습
- 훈련 데이터에 label이라는 정답이 포함됨
- 분류와 회귀로 나뉨
- 분류: feature를 사용해 범주형 데이터인 label(class)를 예측하는 문제
- 회귀: 예측 변수(predictor variable)라고 부르는 feature를 사용해 target 수치 예측
- 일부 회귀 알고리즘은 분류에 사용 ex) Logistic Regression
- 유명한 지도 학습 알고리즘
- KNN, 선형 회귀(Linear Regression), 로지스틱 회귀(Logistic Regression), SVM, Decision Tree & Random Forest, 신경망
- 비지도 학습
- 훈련 데이터에 label이 없이 학습하는ㄴ 것
- 유명한 비지도 학습 알고리즘
- Clustering: K-means, DBSCAN, HCA, 이상치 탐지, 특이치 탐지, 원-클래스, 아이솔레이션 포레스트
- 알고리즘 스스로 데이터 사이의 연관성을 찾고 세분화
- 이상치 탐지: 이상한 값 제거 - 훈련하는 동안 정상 샘플을 만나 이를 인식하도록 훈련
- 특이치 탐지: 훈련셋에 있는 모든 샘플과 달라보이는 새로운 샘플 탐지
- 특이치 탐지는 훈련셋에 없는 것을 탐지, 이상치는 드문 것도 탐지
- 시각화/차원축소: PCA, 커널 PCA, 지역적 선형 임베딩(LLE), t-SNE
- 시각화: 고차원 데이터를 가능한 구조를 그대로 유지해 2D, 3D 표현으로 나타냄
- 차원 축소: 너무 많은 정보를 잃지 않으면서 데이터 간소화
- 상관관계가 있는 여러 특성을 하나로 합침 → feature extraction
- 연관 규칙 학습: 어프라이어리(Apriori), 이클렛(Eclat)
- 대량의 데이터에서 특성 간 흥미로운 관계 찾음
- 마트에서 구매자가 함께 구매하는 상품을 찾음
- 준지도 학습
- 데이터에 labeling하는 것은 시간과 비용이 ㅁ낳이 듦
- 일부 데이터만 label이 있는 경우
- 지도 학습과 비지도 학습의 조합으로 이뤄짐
- 강화 학습
- 에이전트(agent): 학습하는 시스템
- 환경(environment)를 관찰해 행동(action)을 실행하고 그 결과로 보상(reward)를 최대화하는 최상의 정책(policy) 학습
- 실시간으로 점진적인 학습을 하는지
- 배치 학습
- 시스템이 점진적으로 학습할 수 없다.
- 가용한 데이터를 모두 사용해 훈련
- 자원과 시간 많이 소요돼 주로 오프라인에서 수행
- 먼저 시스템을 학습시키고 그 다음 제품 시스템에 적용
- 오프라인 학습이라고도 부름
- 새로운 데이터 학습을 위해서는 전체 데이터를 사용해 새로운 버전을 처음부터 다시 훈련
- 온라인 학습
- 데이터를 순차적으로 한 개씩 또는 미니배치 단위로 학습
- 속도가 빠르고 비용이 적게 듦
- 빠른 변화에 스스로 적응해야하는 시스템에 적합
- 컴퓨팅 자원이 제한된 경우에도 좋은 선택
- 중요한 파라미터로 학습률(learning rate) 존재
- 변화하는 데이터에 얼마나 빠르게 적응할 것인지 의미
- 학습률을 높게하면 시스템이 데이터에 빠르게 적응하지만 금방 잊음
- 학습률을 낮게하면 더 느리게 학습하지만 noise에 덜 민감해짐
- 나쁜 데이터가 주입되었을 때 시스템이 운영중이라면 고객에게 들킬 수 있다.
- 단순하게 알고 있는 데이터 포인트와 새 데이터 포인트를 비교하는지, 또는 훈련 데이터셋에서 패턴을 발견해 예측 모델을 만드는지
- 머신러닝 시스템은 어떻게 일반화 되는가에 따라 분류
- 머신 러닝은 학습 데이터에 없는 처음 보는 데이터에서 좋은 예측을 만들어야 함(일반화)
- 사례 기반 학습
- 단순히 모든 데이터를 기억 후 새로운 데이터와 비교
- 모델 기반 학습
- 데이터에 알맞은 모델을 만들어 예측에 사용
- 데이터를 모고 알맞는 모델 선택(model selection)
- 파라미터 조정
- 효용 함수 또는 비용 함수 정의 후 성능 측정
- 효용 함수: 모델이 얼마나 좋은지 측정
- 비용 함수: 모델이 얼마나 나쁜지 측정
- 과정
- 데이터 공부
- 모델 선택
- 학습 데이터 학습(비용 함수를 최소화하는 파라미터 학습)
- 새로운 데이터에 모델을 적용시켜 추론
머신러닝 도전 과제
- 나쁜 데이터
- 학습 데이터 부족
- 머신러닝 모델 학습을 위해서는 많은 데이터를 통해 학습을 진행해야 한다.
- 많은 데이터를 통해 학습할수록 test 성능이 증가
- 대표성 없는 훈련 데이터
- 일반화를 위해 학습 데이터가 새로운 사례를 잘 대표해야 한다.
- 샘플이 작으면 noise가 생기고 크더라도 샘플링 방법이 잘못되면 대표성이 없음
- 낮은 품질의 데이터
- 데이터가 에러, 이상치, 잡음으로 가득하면 모델이 내재된 패턴을 찾기 어려움
- 그렇기 때문에 데이터 정제 해야 함
- 이상치 - 무시, 수정 해야 함
- 결측치 - 제거, 삽입 해야 함
- 관련없는 feature
- Garbage In, Garbage Out
- 훈련에 좋은 feature를 찾아야 함
- 이 과정은 Feature Engineering이라고 함
- Feature Extraction: 특성을 결합해 더욱 유용한 특성 만듦
- Feature Selection: 보유한 feature 중 훈련에 가장 유용한 특성(들) 선택
- 새로운 데이터를 수집해 특성 만들기
- 나쁜 알고리즘
- 과대 적합(Overfitting)
- 훈련 데이터에 너무 잘 맞지만 일반성이 떨어지는 현상
- 잡음이 섞인 패턴을 감지하면 일반화 떨어짐
- 잘못된 feature 사용
- 훈련 데이터에 있는 잡음의 양에 비해 모델이 복잡할 때 발생
- 파라미터 수가 적은 모델 사용
- 모델 변경
- feature 수 감소
- regularization: 파라미터에 규제를 가해 학습 데이터에 잘 학습되지 않도록 함(일반화 성능 증가)
- 훈련 데이터 수집
- 훈련 데이터 잡음 제거
- 과소 적합(underfitting)
- 모델이 너무 단순해서 데이터의 내재된 구조를 학습하지 못하는 것
- 파라미터가 더 많은 모델 사용
- 더욱 좋은 feature 제공
- regularization 감소
테스트와 검증
- 모델 학습 후, 모델이 일반화가 잘 되었는지 검증하며 학습 진행
- hold-out
- 모델 학습 후, 모델이 일반화가 잘 되었는지 검증하며 학습 진행
- 데이터를 training set, test set으로 분할
- training set으로 모델을 학습
- test set으로 모델 평가
- 새로운 샘플에 대한 오류 비율: 일반화 오차
- test set을 통해 일반화 오차의 추정값 얻음
- 훈련 오차가 낮지만 일반화 오차가 높다면 오버 피팅이다.
- 하지만 일반화 오차를 줄이기 위해 test set을 계속하여 모니터링하여 모델링을 진행한다면, 또한 test set에 과적합
- train set으로 학습, validation set으로 모델의 일반화 오차를 확인하여 모델링을 진행한 후, test set으로는 단 한번의 최종 테스트만 시행
- 교차 검증(cross-validation)
- 훈련 데이터에서 검증 셋으로 너무 많은 양의 데이터를 뺏기지 않기 위해 교차 검증 사용
- 훈련 데이터를 여러 subset으로 나누고, 각 모델을 1개를 제외한 subset으로 학습 후, 나머지 subset으로 검증
- 모델과 하이퍼 파라미터가 선택되면 전체 훈련 데이터를 사용해 최종 모델 훈련
No Free Lunch
- 모델은 관측한 것을 간소화한 것
- 간소화: 새로운 샘플에 일반적이지 않을 것 같은 불필요 세부사항 제거
- 어떤 가정도 하지 않으면 모델 간의 비교를 할 근거가 없다.
- 즉, 데이터에 따라 훌륭한 모델이 따로 존재한다.
참고
Hands-on Machine Learning with Scikit-Learn, Keras & Tensorflow 2 - 오렐리앙 제롱