일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- DFS
- 코딩 테스트
- 구글 킥스타트
- 파이썬
- 코딩테스트
- 리눅스
- 백준
- google coding competition
- 프로그래머스
- 킥스타트
- 브루트포스
- 코딩
- CSS
- linux
- OS
- 알고리즘
- 프로그래밍
- BFS
- PYTHON
- 딥러닝
- 동적프로그래밍
- 동적 프로그래밍
- AI
- 그래프
- nlp
- 순열
- 운영체제
- kick start
- 네트워크
- dp
- Today
- Total
오뚝이개발자
[핸즈온ML] CH1. 한눈에 보는 머신러닝 본문
본 글은 밑바닥부터 시작하는 딥러닝 포스팅에 이어 핸즈온 머신러닝 2판(오렐리앙 제롱 지음) 책을 공부한 것을 요약한 것으로 밑바닥 딥러닝 책에 나오지 않는 개념들 위주로 정리한다. 나오지 않는 개념이나 기본적인 개념들을 밑바닥부터 시작하는 딥러닝에 포스팅하였으니 먼저 보고 오기를 추천한다.
머신러닝 시스템의 종류
-
사람의 감독 하에 훈련하는 것인지 아닌지(지도, 비지도, 준지도, 강화 학습)
-
실시간으로 점진적인 학습을 하는지 아닌지(온라인, 배치 학습)
-
어떻게 일반화 되는가 : 단순히 알고있는 데이터 포인트와 새 데이터 포인트를 비교하는 것인지 아니면 과학자들이 하는 것처럼 훈련 데이터셋에서 패턴을 발견하여 예측 모델을 만드는지(사례기반, 모델기반 학습)
지도학습(supervised learning)
- 훈련 데이터에 레이블(label)이라는 원하는 답이 포함되는 것.
- 분류(classfication)가 전형적인 지도학습
- 회귀(regression)도 지도학습의 한 종류 : 특성(feature)을 사용해 target 수치를 예측하는 것
- 지도학습 알고리즘 예시
-
k-최근접 이웃(k-nearest neighbors)
-
선형회귀(linear regression)
-
로지스틱 회귀(logistic regression)
-
서포트 벡터 머신(SVM)
-
결정트리(decision tree)와 랜덤 포레스트(random forest)
-
신경망(neural networks)
비지도학습(unsupervised learning)
- 훈련 데이터에 레이블(label)이 없는 것
- 비지도학습 알고리즘 예시
-
군집(clustering)
-
k-평균(k-means)
-
DBSCAN
-
계층 군집 분석(HCA; Hierarchical Cluster Analysis)
-
이상치 탐지(outlier detection)와 특이치 탐지(novelty detection)
-
원-클래스(one-class SVM)
-
아이솔레이션 포레스트(isolation forest)
-
-
시각화(visualization)와 차원축소(dimensionality reduction)
-
주성분 분석(PCA; Principal Component Analysis)
-
커널(kernel) PCA
-
지역적 선형 임베딩(LLE; Locally-Linear Embedding)
-
t-SNE(t-distributed Stochastic Neighbor Embedding)
-
-
연관규칙학습(association rule learning)
-
어프라이어리(Apriori)
-
이클렛(Eclat)
-
- 군집 예시
- 블로그 방문자 중 비슷한 방문자들을 그룹으로 묶기 위해 적용. 하지만 방문자가 어떤 그룹에 속하는지 알려주는 데이터 포인트 無. 알고리즘 스스로 방문자 사이의 연결고리 찾음. 계층군집 알고리즘을 사용하면 각 그룹을 더 세분화할 수 있다.
- 시각화 예시
- 레이블이 없는 대규모의 고차원 데이터를 넣으면 도식화가 가능한 2D나 3D의 표현을 만들어줌. 데이터가 어떻게 조직되어 있는지 이해할 수 있고 예상 못한 패턴을 발견할 수도 있다.
- 차원축소 예시
- 상관관계가 있는 여러 특성을 하나로 합쳐 정보를 잃지 않으면서 데이터를 간소화. 예컨대, 차의 주행거리는 연식과 강하게 연관되어 있으므로 차원축소 알고리즘으로 두 특성을 차의 마모 정도를 나타내는 하나의 특성으로 합침. 이를 특성 추출(feature extraction)이라 함.=>차원축소 알고리즘으로 훈련 데이터의 차원을 줄이면 실행 속도가 빨라지고 디스크와 메모리를 차지하는 공간도 줄어 유용하다.
- Anomaly detection 예시
- 이상치 탐지(outlier detection): 등장할 가능성이 거의 없는, 데이터에 오염이 발생했을 가능성이 있는 sample 탐지
- 특이치 탐지(novelty detection): 지금까지 등장하지 않았지만 충분히 등장할 수 있는 sample 탐지.(이상치 탐지와 다르게 데이터가 오염되지 않은 상황을 가정한 연구에 이용)
- 예컨대, 강아지를 normal class로 정의했을 때, 보유 중인 데이터셋에 없는 새로운 강아지가 등장하면 이를 Novel sample 또는 Unseen sample이라 하고 이를 찾는 것이 novelty detection이다. 반면, 강아지가 아닌 호랑이, 말 등 전혀 상관없는 데이터가 등장하면 이를 Outlier sample 또는 Abnormal sample이라 하고 이를 찾는 것이 outlier detection이다.
- 연관규칙학습(association rule learning)의 예시
- 대량의 테이터에서 특성 간의 관계를 찾는 것.
- 예컨대, 슈퍼마켓의 판매 기록에 연관 규칙을 적용하면 바비큐 소스와 감자를 구매한 사람이 스테이크도 구매하는 경향이 있다는 것을 찾을 수 있다.
준지도학습(semisupervised learning)
- 데이터의 일부만 레이블이 있는 경우, 지도학습+비지도학습(일반적으로 데이터에 레이블을 다는 것은 시간과 비용이 많이 든다.)
- 구글 포토 호스팅 서비스가 좋은 예시다. 이 서비스에 가족사진을 모둥 올리면 사람 A는 사진 1, 5, 11에 있고, 사람 B는 사진 2, 5, 7에 있다고 자동으로 인식한다.(비지도 학습) 이제 사람마다 레이블을 하나만 추가하면 사진에 있는 모든 사람의 이름을 알 수 있다.
강화학습(reinforcement learning)
- 학습하는 시스템을 에이전트라 부름
- 환경(environment)을 관찰해 행동(action)을 하고 그 결과로 보상(reward) 혹은 벌점(penalty)를 받음
- 시간이 지나면서 가장 큰 보상을 얻기 위해 정책(policy)이라 부르는 최상의 전략 스스로 학습
- 예시로는 구글 딥마인드의 알파고(AlphaGo)가 있다.
배치학습
- 시스템이 점진적으로 학습할 수 없어 가용한 데이터를 모두 사용해 훈련시켜야 하는 학습
- 시간과 자원 소모가 크다.
- 시스템을 훈련시키고 제품에 적용하면 더 이상의 학습 없이 실행됨. 즉, 학습한 것을 단지 적용만 한다. 이를 오프라인 학습이라 함.
온라인학습
- 데이터를 순차적으로 한 개씩 또는 미니배치 단위로 주입해 훈련
- 매 학습 단계가 빠르고 비용이 적게 들어 데이터가 도착하는 대로 즉시 학습 가능
- 연속적으로 데이터를 받고(예를들면 주식가격) 빠른 변화에 스스로 적응해야 하는 시스템에 적합
- 컴퓨팅 자원이 제한된 경우에도 좋다.
사례기반 학습
- 시스템이 훈련 샘플을 기억함으로써 유사도 측정을 통해 새로운 데이터와 학습한 샘플을 비교하는 식으로 일반화
- 스팸 필터가 대표적인 예시다. 스팸 메일과 동일한 메일을 스팸이라고 지정한느 대시 스팸 메일과 매우 유사한 메일을 구분하도록 스팸필터를 만든다. 그러려면 두 메일 사이의 유사도(similarity)를 측정해야 한다.
모델기반 학습
- 샘플들의 모델을 만들어 예측에 사용
- 데이터를 잘 나타내는 모델을 선택해 최적의 모델 파라미터를 찾는다.
머신러닝 프로젝트의 전형적인 과정
-
데이터를 분석
-
모델을 선택
-
훈련 데이터로 모델을 훈련시킴(학습 알고리즘이 비용 함수를 최소화하는 모델 파라미터 find)
-
새로운 데이터에 모델을 적용해 예측
학습이 잘 안되는 원인
-
충분하지 않은 양의 훈련 데이터
-
대표성 없는 훈련 데이터(샘플링 편향)
-
낮은 품질의 데이터(에러, 이상치, 잡음 혹은 결손 등이 있는 데이터) : 훈련 데이터 정제에 시간을 투자해야 한다.
-
관련 없는 특성 : 훈련데이터에 관련없는 특성이 적고, 관련있는 특성이 충분해야 한다.(feature selection : 가지고 있는 특성 중 훈련에 가장 유용한 특성 선택하는 것, feature extraction : 특성을 결합해 더 유용한 특성 만드는 것. 주로 차원축소 알고리즘 이용.)
overffiting 해결법
-
파라미터 수가 적은 모델 선택(고차원 다항 모델보단 선형 모델)
-
훈련 데이터에 있는 특성 수 줄이기
-
모델에 제약(Regularization) 가하여 단순화
-
훈련 데이터 더 많이 모으기
-
훈련 데이터의 잡음(noise) 줄이기(오류 수정이나 이상치 제거 등)
underffting 해결법
-
모델 파라미터가 더 많은 모델 선택
-
학습 알고리즘에 더 좋은 특성 제공(특성 공학)
-
모델의 제약(Regularization) 줄이기(예를들어, 규제 하이퍼파라미터 감소시키기)
'AI > 밑바닥딥러닝1' 카테고리의 다른 글
[핸즈온ML] CH3. 분류 (0) | 2020.07.17 |
---|---|
선형회귀(linear regression), 라쏘(LASSO), 리지(Ridge) (0) | 2020.07.07 |
Bias와 Variance (0) | 2020.07.06 |
L1, L2 regularization (0) | 2020.06.28 |
오버피팅(overfitting) 방지법 정리 (0) | 2020.06.27 |