본 작성글은 필자가 머신러닝 기초를 학습하기 위해 핸즈온 머신러닝(2판) 도서를 보고 정리하는 것입니다.
상업적 목적이 일절 없는 포스팅이며 학습 내용에 따라 필요에 의해 코멘트도 추가할 수 있습니다.
공학적인 정의로는
-어떤 작업 T에 대한 컴퓨터 프로그램의 성능을 P로 측정했을 때 경험 E로 인해 성능이 향상됐다면, 이 컴퓨터 프로그램은 작업T와 성능 측정 P에 대해 경험 E로 학습한 것이다. _톰 미첼, 1997
스팸메일 필터의 예에서,
시스템이 학습하는 데 사용하는 샘플을 훈련세트(training set), 각 훈련 데이터를 훈련 사례(training instance) 혹은 샘플이라고 함.
본 사례의 경우 작업 T는 새로운 메일이 샘플인지 구별하는 것이며, 경험 E는 훈련 데이터(training data), 성능 측정 P는 직접 정의해야 함(예: 정확히 분류된 메일의 비율을 P로 사용하고 이것을 정확도라고 부르며 분류 작업에 자주 사용됨).
(1) 머신러닝을 기반으로 한 스팸 필터의 경우, 스팸 메일에 자주 나타나는 패턴을 감지, 어떤 단어/구절이 스팸 판단에 좋은가 자동으로 학습함.
또한, 사용자가 스팸으로 지정한 메일에 자주 나탄나는 것을 자동으로 인식하여 별도 작업 없이 그 단어를 스팸으로 분류 가능함.
(2) 머신러닝은 전통적인 방식으로는 너무 복잡하거나 알려진 알고리즘이 없는 문제의 분야에 유용함.
음성 인식을 예로, 각 단어를 녹음한 샘플 사용을 통해 스스로 학습하는 알고리즘을 작성하는 것이 좋은 솔루션이 됨.
(3) 머신러닝을 통해 배울 수 있음 = 머신러닝이 학습한 것을 조사할 수도 있다.(예외 있음)
머신러닝 기술을 적용해 대용량의 데이터를 분석하면 겉으로 보이지 않던 패턴 발견이 가능 = 데이터 마이닝
이미지 분류 작업. 합성곱 신경망(convolutional neural network - CNN) 사용
CNN을 이용한 이미지 픽셀 분류(종양의 정확한 위치,모양 결정)
자연어처리(natural language processing - NLP)
구체적으로는 텍스트 분류, 순환 신경망(recurrent neural network - RNN), CNN, 트랜스포머(transformer) 적용
텍스트 분류 작업. NLP 도구 사용.
텍스트 요약이라는 NLP의 한 분야. NLP 도구 사용.
자연어 이해(natural language understanding - NLU)와 질문-대답(question-answering) 모듈을 포함한 여러 NLP Component 필요.
회귀(regression) 작업(숫자로 값 예측).
선형 회귀(linear regression), 다항 회귀(polynomial regression), 회귀SVM,회귀 랜덤 포레스트(random forest), 인공 신경망(artificial neural network)과 같은 회귀 모델 사용으로 해결. 지난 성능 지표의 시퀀스를 고려한다면 RNN, CNN 또는 트랜스포머 사용.
음성 인식 작업.
오디오 샘플 처리 필요. 길고 복잡한 시퀀스이므로 RNN, CNN, or 트랜스포머 사용.
이상치 탐지 작업
군집(clustering) 작업
데이터 시각화 작업.
차원 축소(dimensionality reduction) 기법 많이 사용함.
추천 시스템
과거 구매 이력을 인공 신경망에 주입하여 다음 구매 가능성이 가장 높은 상품을 출력하는 것이 한 가지 방법임. 일반적으로 모든 고객의 구매 이력을 기반으로 훈련함.
강화 학습(reinforcement learning)으로 해결.
시간이 지나면 주어진 환경에서 보상이 최대가 되는 행동을 선택하는 에이전트를 훈련하는 머신러닝의 한 분야. 알파고가 강화 학습을 통해 구축됨.
머신러닝 시스템을 '학습하는 동안의 감독 형태나 정보량'으로 분류 가능.
지도, 비지도, 준지도, 강화 학습 등의 네 가지 주요 범주 있음.
알고리즘에 주입하는 훈련 데이터에 레이블(label)이라는 원하는 답이 포함됨.(X와 Y를 함께 주입)
분류가 전형적인 지도학습임. 샘플 필터가 좋은 예.
샘플 필터는 많은 메일 샘플과 소속 정보로 훈련하여 어떻게 새 메일을 분류할지 학습.
예측 변수라 부르는 특성(주행거리,연식,브랜드 등)을 사용해 중고차 가격 같은 타겟 수치를 예측하는 것도 예. 이러한 종류의 작업을 회귀라고 함. 이 훈련을 위해서는 예측 변수와 레이블(중고차 가격)이 포함된 중고차 가격이 다수 필요함.
일부 회귀 알고리즘 -> 분류에 사용 가능.
일부 분류 알고리즘 -> 회귀에 사용 가능.
분류에 널리 쓰이는 로지스틱 회귀는 클래스에 속할 확률 출력함.(예: 스팸일 가능성 20%)
훈련 데이터에 레이블이 없으며 시스템이 아무런 도움 없이 학습해야 함.
- k-평균(k-means)
- DBSCAN
- 계층 군집 분석(hierarchical cluster analysis - HCA)
- 이상치 탐지(outlier detection)와 특이치 탐지(novelty detection)
- 원-클래스(one-class SVM)
- 아이솔레이션 포레스트(isolation forest)
- 주성분 분석(principal component analysis(PCA)
- 커널(kernel) PCA
- 지역적 선형 임베딩(locally-linear embedding - LLE)
- t-SNE(t-distributed stochastic neighbor embedding)
- 어프라이어리(Apriori)
- 이클렛(Eclat)
일부만 레이블이 있는 데이터를 다루는 알고리즘.
대부분의 준지도 학습 알고리즘은 지도 학습과 비지도 학습의 조합.
심층 신뢰 신경망(Deep belief network - DBN)은 여러 겹으로 쌓은 제한된 볼츠만 머신이라 불리는 비지도 학습에 기초함.
학습하는 시스템을 에이전트라고 부름. 환경을 관찰해서 행동을 실행하고 그 결과로 보상을 받음.
시간이 지나면서 가장 큰 보상을 얻기 위해 정책(policy)라는 최상의 전략을 스스로 학습함. 정책은 주어진 상황에서 에이전트가 어떤 행동을 선택해야 할지 정의함.
시스템이 점진적으로 학습할 수 없음. 가용한 데이터를 모두 이용해 훈련해야 함.
시간과 자원을 많이 소모하기 때문에 보통 오프라인에서 학습하므로 오프라인 학습이라고도 함.
새로운 데이터에 대해 학습하려면 처음부터 다시 훈련 필요. 그 후 이전 시스템 중지, 새 시스템 가동함.
데이터를 순차적으로 한 개씩 또는 미니 배치(mini-batch)라 부르는 작은 묶음 단위로 주입해 훈련함. 매 학습 단계가 빠르고 비용이 적게 들어 시스템은 데이터 도착 즉시 학습 가능.
어떻게 일반화 되는가에 따라 머신러닝 시스템 분류 가능.
사례를 기반으로 유사도를 측정하여 학습함.
샘플들의 모델을 만들어 예측(prediction)에 사용하는 것.
모델이 최상의 성능을 내도록 하는 값을 예측하려면 측정 지표를 정해야 함.
모델이 얼마나 좋은지 측정하는 효용 함수(또는 적합도 함수)를 정의하거나, 얼마나 나쁜지 측정하는 비용 함수를 정의할 수 있음.
아주 간단한 문제 조차 수천 개의 데이터가 필요함.
일반화가 잘 되게 하기 위해서는 일반화 하려는 사례들을 대표하는 훈련 세트를 사용하는 것이 매우 중요하나, 실제로는 어려울 때가 많음. 샘플이 작으면 샘플링 잡음(sampling noise)이 생기고, 매우 큰 샘플도 표본 추출 방법이 잘못되면 대표성을 띄지 못하는 샘플링 편향(sampling bias)이 일어날 수 있다.
훈련 데이터가 에러, 이상치(outlier), 잡음으로 가득하면 내재된 패턴을 찾기 어려워 짐으로 인해 잘 작동하지 않을 수 있음. 그러므로 훈련 데이터 정제에 시간을 투자하는 것은 가치있고 중요한 일이다.
성공적인 머신러닝을 위해서는 훈련에 사용할 좋은 특성을 찾는 것임
한 택시 운전사가 내 물건을 훔쳤다고 해서 모든 택시 운전사를 도둑이라고 생각하는 것을 과대적합(overfitting)이라고 함.
과대적합은 훈련 데이터에 있는 잡음의 양에 비해 모델이 너무 복잡할 때 일어남.
해결 방법
- 파라미터 수가 적은 모델(고차원 다항 모델<선형 모델) 선택, 훈련 데이터에 있는 특성 수 줄이기, 모델에 제약을 가해 단순화.
- 훈련 데이터를 더 많이 모으기
- 훈련 데이터의 잡음 줄이기(오류 데이터 수정과 이상치 제거)
모델을 단순하게 하고 과대적합의 위험을 감소시키기 위해 모델에 제약을 가하는 것을 규제(Regularization)이라고 함.
학습하는 동안 적용할 규제의 양은 하이퍼 파라미터(hyper parameter)가 결정함.
하이퍼 파라미터는 학습 알고리즘의 파라미터임.훈련 전에 미리 지정되며, 훈련 동안에는 상수로 남음.이것의 튜닝은 매우 중요함.
과대적합의 반대임. 모델이 너무 단순해서 데이터의 내재된 구조를 학습하지 못할 때 일어남.
ex)삶의 만족도에 대한 선형 모델은 과소적합 되기 쉬움.
해결 방법
- 모델 파라미터가 더 많은 강력한 모델 선택
- 학습 알고리즘에서 더 좋은 특성 제공(특성 공학)
- 모델의 제약 줄이기
데이터를 훈련 세트와 테스트 세트로 나누는 것이 좋음. 보통 8:2의 비율.
새로운 샘플에 대한 오류 비율을 일반화 오차 또는 외부 샘플 오차라고 하며 테스트 세트에서 모델을 평가함으로써 이 오차에 대한 추정값을 얻을 수 있음.
훈련과 테스트의 데이터 비율은 보통 8:2로 하지만 데이터셋 크기에 따라 달리해야 함.
홀드아웃 검증
간단하게 훈련 세트의 일부를 떼어내어 여러 후보 모델을 평가하고 가장 좋은 하나를 선택함. 이 새로운 홀드아웃 세트를 검증 세트라고 함.(개발 세트 혹은 데브 세트라고도 함)