[인공지능 기초 / ML] 0. 머신러닝이란
1. 머신러닝이란
- 명시적인 프로그래밍 없이 컴퓨터가 학습하는 능력을 갖추게 하는 연구 분야다. - 아서 새뮤얼
1-1. 왜 머신러닝을 사용하는가
- 메일의 제목을 보고 스팸 필터를 만든다고 가정하였을 때
- 전통적인 프로그래밍 기법을 사용
→ 작성해야하는 규칙이 점점 길과 복잡해져 비효율적으로 동작하고, 유지보수하기 힘들어진다. - 머신러닝 기법을 사용
→ 스팸 메일에서 자주 나타나는 패턴을 감지하여 어떤 단어와 구절이 스팸 메일을 판단하는 데 좋은 기준인지 자동으로 학습
< ! > 머신러닝 기술을 적용하여 대용량의 데이터를 분석하여 패턴을 발견하는 것을 데이터 마이닝(data mining)이라 한다.
1-2. 머신러닝 시스템의 종류
[ 머신러닝 시스템의 종류 ]
1-2.1. 지도학습과 비지도 학습
(1) 지도 학습 (Supervised Learning)
- 학습하고자 하는 알고리즘에 주입하는 훈련 데이터에 레이블 (label)이라는 원하는 답을 포함한다.
- 분류 (classification)와 회귀 (regression)가 전형적인 지도학습이다.
< ! > 머신러닝에서 속성 (attribute)은 데이터 타입을 의미한다.
< ! > 머신러닝에서 특성 (feature)는 일반적으로 속성과 값이 합쳐진 것을 의미한다.
- 분류 (Classification)
→ 주어진 데이터를 클래스 별로 구별해가는 과정 - 회귀 (Regression)
→ 특성을 사용하여 타깃 (Target) 수치를 예측하는 과정 - 일부 회귀 알고리즘은 분류에 사용할 수 있고, 반대로 일부 분류 알고리즘을 회귀에 사용할 수 있다.
- k-최근접 이웃 (k-Nearest Neighbors | kNN)
- 선형 회귀 (linear regression)
- 로지스틱 회귀 (logistic regression)
- 서포트 벡터 머신 (Support Vector Machine | SVM)
- 결정 트리 (Decision tree)
- 랜덤 포레스트 (random forest)
- 신경망 (Neural Network | NN)
- (1)-1. 지도학습 알고리즘 예시
(2) 비지도 학습 (Unsupervised Learning)
- 지도 학습과 달리 훈련 데이터에 레이블이 없이 학습해야 함.
(2)-1. 비지도학습 알고리즘 예시
1) 군집 (clustering)
1)-1. k-평균 (k-means)
1)-2. DBSCAN
1)-3. 계층 군집 분석(Hierarchical Cluseter Analysis | HCA)
1)-4. 이상치 탐지(outlier detection)와 특이치 탐지(novelty detection)
1)-5. 원-클래스 SVM (one-class SVM)
1)-6. 아이솔레이션 포레스트 (isolation forest)
2) 시각화 (visualization)와 차원 축소 (dimensionality reduction)
2)-1. 주성분 분석 (Principal Component Analysis | PCA)
2)-2. 커널 PCA (kernel PCA)
2)-3. 지역적 선형 임베딩 (Locally Linear Embedding)
2)-4. t-SNE (t-distributed Stochastic Neighbor Embedding)
3) 연관 규칙 학습 (association rule learning)
3)-1. 어프라이어리 (Apriori)
3)-2. 이클렛 (Eclat)
- 군집 (Clustering)
→ 대상을 군집 (Clustering)이라 불리는 상대적으로 동질적인 집단으로 분류하는 기법
→ 계층 군집 (Hierarchical Clustering)알고리즘을 사용하면 각 그룹을 더 작은 그룹으로 세분화 할 수 있다.
[ K-means 군집화 알고리즘 예시]
- 시각화 (Visualization)
→ 레이블이 없는 대규모의 고차원 데이터를 넣으면 도식화가 가능한 2D나 3D 표현을 만들어줌.
→ 알고리즘은 가능한 한 구조를 그대로 유지하려 하므로 데이터가 어떻게 조작되어 있는지 이해할 수 있다.
→ 비슷한 작업으로는 많은 정보를 잃지 않으며 데이터를 간소화하는 차원 축소가 있다.
< ! > 차원축소 기법 중 하나는 상관관계가 있는 여러 특성을 하나로 합치는 것이 있는데, 이를 특성 추출 (Feature Extraction)이라 한다.
< ! >지도 학습 같은 머신러닝 알고리즘에 데이터를 주입하기 전에 차원 축소 알고리즘을 사용하여 데이터의
차원을 줄이는 것이 유용할 때가 많다.
→ 실행 속도가 빨라지고, 디스크와 메모리를 차지아는 공간도 줄고 성능이 향상될 수도 있다.
[ MNIST 데이터 셋을 이용한 t-SNE 예제 ]
- 이상치 탐지(Outlier Detection | Anomaly Detection)
→ 훈련하는 동안 대부분 정상 샘플을 만나 이상치를 인식하도록 훈련됨.
→ 새로운 샘플을 보고 정상 데이터인지 이상치인지 판단함.
→ 비슷한 작업으로 특이치 탐지가 있다.
→ 특이치 탐지는 훈련 세트에 있는 모든 샘플과 달라 보이는 새로운 샘플을 탐지하는 것이 목적이다.
[이상치탐지 예시]
- 연관 규칙 학습 (Association rule learning)
→ 대량의 데이터에서 특성 간 관계를 찾는 작업
(3) 준지도 학습 (Semi-supervised Learning)
- 데이터에 레이블을 달기에 많은 시간과 비용이 소모되어 일반적으로 레이블이 없는 샘플이 많고 레이블된
샘플이 적다. - 준지도 학습에서는 일부만 레이블이 있는 데이터를 학습시키는데 사용된다.
- 대부분의 준지도 학습 알고리즘은 지도 학습과 비지도 학습의 조합으로 이루어져 있다.
- 준지도 학습의 일종인 심층 신뢰 신경망 (Deep Belief Network | DBN)은 여러 겺으로 쌓은
제한된 볼츠만 머신(Restricted Boltzmann Machine)이라 불리는 비지도 학습에 기초한다.
(4) 강화 학습 (Reinforcement Learning)
[ 강화학습 동작의 쉬운 예 ]
- 알고리즘이 학습 하는 시스템을 에이전트 (Agent)라 부른다.
- 환경 (Environment)을 관찰하여 행동 (Action)을 실행하고 그 결과로 보상 (Reward) 혹은 벌점 (Panalty)를 받는다.
- 시간이 지나면서 가장 큰 보상을 얻기 위해 정책 (Policy)라 부르는 최상의 전략을 스스로 학습
1-3. 배치 학습과 온라인 학습
1-3.1. 배치 학습 (Batch Learning)
→ 가용한 데이터를 모두 사용해 훈련시켜야 한다.
→ 일반적으로 이 방식은 시간과 자원을 많이 소모하여 보통 오프라인에서 수행된다.
1-3.2. 온라인 학습 (Online Learning)
→ 데이터를 순차적으로 한 개씩 또는 미니 배치(mini batch)라 부르는 작은 묶음 단위로 주입하여 시스템을 훈련시킴.
→ 매 학습 단계가 빠르고 비용이 적게 들어 시스템은 데이터가 도착하는 대로 즉시 학습할 수 있다.
→ 컴퓨터 한 대의 메모리에 들어갈 수 없는 아주 큰 데이터셋을 학습하는 시스템에도 온라인 학습 알고리즘을 사용할 수 있다. (외부 메모리 학습)
< ! > 외부 메모리 학습은 보통 오프라인으로 실행되어 온라인 학습보다는 점진적 학습 (incremental learning)이라 한다.
→ 변화하는 데이터에 얼마나 빠르게 적응하는지를 나타내는 파라미터를 학습률 (learning rate)라고 한다.
(1) 학습률을 높게하면 시스템이 데이터에 빠르게 적응하지만 예전 데이터를 금방 잊는다.
(2) 학습률이 낮으면 더 느리게 학습되지만, 새로운 데이터에 있는 잡음이나 대표성 없는 데이터 포인트에 덜 민감해진다.
1-4. 사례 기반 학습과 모델 기반 학습
→ 주어진 훈련 데이터로 학습하고 훈련 데이터에서 본 적 없는 새로운 데이터에서 좋은 예측을 만들어야(일반화 / generalize)한다.
→ 일반화를 위한 두 가지 접근법은 사례 기반 학습과 모델 기반 학습이 있다.
1-4.1. 사례기반 학습(instance-based learning)
- 시스템이 훈련 샘픙을 기억함으로써 학습 시킴.
- 유사도 특정을 사용하여 새로운 데이터와 학습한 샘플을 비교하는 식으로 일반화 함.
1-4.2. 모델기반 학습(model-based learning)
- 샘플들의 모델을 만들어 예측(prediction)에 사용하는 것
1-5. 머신러닝 주요 도전과제
- 머신러닝 알고리즘 학습에 문제가 될만한 요소로는 나쁜 데이터와 나쁜 알고리즘이 있다.
1-5.1. 나쁜 데이터
(1) 충분하지 않은 양의 훈련 데이터
- 대부분의 머신러닝 알고리즘이 잘 작동하려면 데이터가 많아야 한다.
(2) 대표성 없는 훈련 데이터
- 일반화하려는 사례들을 대표하는 훈련 세트를 사용하는 것이 매우 중요하지만, 어려운 경우가 많다.
- 샘플이 작으면 샘플링 잡음 (Sampling noise)이 생기고,
샘플이 매우 큰 경우엔 표본 추출방법이 잘못되면 대표성을 띠지 못하는 샘플링 편향 (Sampling bias)이 발생한다.
(3) 낮은 품질의 데이터
- 훈련 데이터가 에러, 이상치 (Anomaly / Outlier), 잡음으로 가득하다면 데이터에 존재하는 패턴을 찾기 어려워 잘 작동하지 않는다.
- 이런 경우에 훈련 데이터를 정제하는 작업이 필요하다.
- 일부 샘플이 이상치라는게 명확하면 간단히 그것들을 무시하거나 수동으로 잘못된 것을 고치는 것이 좋다.
- 일부 샘플에 결측치가 존재한다면, 결측치 데이터를 무시할지 빠진 값을 채울지 결정해야한다.
(4) 관련없는 특성
- garbage in garbage out이라는 말이 있듯이 훈련 데이터에 관련없는 특성이 적고 관련 있는 특성이 충분해야 학습할 수 있다.
- 머신러닝 프로젝트의 핵심요소는 훈련에 사용할 좋은 특성들을 찾는 것이다.
- 이 과정을 특성 공학 (feature engineering)이라 하며 다음과 같은 작업을 한다.
- 특성 선택 (feature selection) | 가지고 있는 특성 중 훈련에 가장 유용한 특성을 선택한다.
- 특성 추출 (feature extraction) | 특성을 결합하여 더 유용한 특성을 만든다.
- 새로운 데이터를 수집해 새 특성을 만든다.
1-5.2. 나쁜 알고리즘
(1) 훈련 데이터 과대적합
- 모델이 훈련 데이터 셋에 정확도가 높게 나오지만, 시험 / 검증 데이터 셋에 대해서는 정확도가 낮게 나오는 현상을 과대적합 (Overfitting)이라 한다.
- 훈련 데이터에 있는 잡읍의 양에 비해 모델이 너무 복잡할 때 일어나며 해결 방법은 다음과 같다.
- 파라미터 수가 적은 모델을 선택하거나, 훈련 데이터에 있는 특성 수를 줄이거나, 모델에 제약을 가해 단순화 시킨다.
- 훈련 데이터의 잡음을 줄인다. (오류 데이터 수정과 이상치 제거)
- 훈련 데이터를 더 모은다.
- 과대적합의 위험을 감소시키기 위해 모델에 제약을 가하는 것을 규제 (Regularization)라고 한다.
- 학습하는 동안 적용할 규제의 양은 하이퍼파라미터 (Hyperparameter)가 결정한다.
! 하이퍼 파라미터는 모델이 아니라 학습 알고리즘의 파라미터로, 훈련전에 미리 지정되고,
훈련하는 동안에 상수로 남아있다.
[ 오버피팅의 쉬운 예 ]
(2) 훈련 데이터 과소적합
- 과대적합의 반대 개념으로, 모델이 너무 단순해 데이터의 내재된 구조를 학습하지 못하는 것을 과소적합 (underfitting)이라고 한다.
- 현실은 모델보다 더 복잡하므로 훈련 샘플에서도 부정확한 예측을 만드며 해결 방법은 다음과 같다.
- 모델 파라미터가 더 많은 모델을 선택한다.
- 학습 알고리즘에 더 좋은 특성을 제공한다.
- 모델의 제약을 줄인다.
[ 언더피팅의 쉬운 예 ]
1-6. 테스트와 검증
- 모델이 새로운 샘플에 얼마나 잘 일반화 되는지 알아보는 방법은 새로운 데이터를 모델에 적용해 보는 것이다.
- 데이터 셋을 훈련용과 시험용으로 나누어 테스트한다.
- 새로운 샘플에 대한 오류 비율을 일반화 오차(generalization error / 외부 샘플 오차 out of sample error)라고 하며,
시험용 데이터 셋으로 모델을 평가하여 오차에 대한 추정값 (estimation)을 얻는다.
[ 데이터 셋 분할 ]
99. 자료 출처
99-1. 도서
- 한빛 미디어 | 오를레앙 제롱 저, 박해선 역 - 핸즈온 머신러닝
99-2.논문, 학술지
99-3. 웹사이트
- char :: 머신러닝 - 군집 | [블로그 링크]
- MathWorks - 강화학습이란? | [블로그 링크]
- jhlee.log - [머신러닝] K-평균 (K-Means) 알고리즘 | [블로그 링크]
- JINSOL KIM - t-SNE 개념과 사용법 | [블로그 링크]
- 텐서 플로우 블로그 - 1.3 머신러닝 시스템의 종류 | [블로그 링크]
- Ai타임스 - "알파고도 칠전팔기?"[특별기획 AI 2030] ③강화학습 | [기사 링크]
- 한땀한땀 딥러닝 컴퓨터 비전 백과사전 - Under/Over-fitting 해결방법 | [블로그 링크]
- Pinterest | [블로그 링크]
- INSIDER - 26 of the funniest answers children have written on homework assignments | [기사 링크]
- 쵸코쿠키의 연습장 - 머신러닝:데이터 분할:방법,방식,절차 | [블로그 링크]
99-4. 데이터셋 출처
전체코드
내용 추가 이력
부탁 말씀
개인적으로 공부하는 과정에서 오류가 있을 수 있으니, 오류가 있는 부분은 댓글로 정정 부탁드립니다.