머신 러닝(Machine Learning)?

2021. 5. 29. 10:15딥러닝 & 머신러닝

https://blog.lgcns.com/2212

머신러닝은 기존 데이터를 이용해 아직 일어나지 않은 미지의 일을 예측하기 위해 만들어진 기법이다.

https://wikidocs.net/21679

머신러닝은 주어진 데이터로부터 결과를 찾는 것에 초점을 맞추는 것이 아니라, 주어진 데이터로부터 규칙성을 찾는 것에 초점이 맞추어져 있다. 이런 과정을 학습(training)이라고 한다. 

머신러닝 기술을 적용해서 대용량의 데이터를 분석하면 겉으로는 보이지 않던 패턴을 발견할 수 있다. 이를 데이터 마이닝(data mining)이라고 한다. 


머신러닝 시스템의 종류

학습하는 동안의 감독 형태나 정보량에 따라 지도 학습, 비지도 학습, 준지도 학습, 강화 학습 등 네 가지 주요 범주가 있다.

 

지도학습

 

알고리즘에 주입하는 훈련 데이터에 label(레이블)이라는 원하는 답이 포함된다.

classification(분류)가 전형적인 지도 학습 작업이다. 

regression(회귀)은 predictor variable(예측 변수)이라 부르는 feature(특성)을 사용해 target을 예측하는 것이다.

일부 회귀 알고리즘은 분류에 사용할 수 있으며, 일부 분류 알고리즘도 회귀에 사용할 수 있다.

 

<중요한 지도 학습 알고리즘>

  • k-nearesst neighbors(k-최근접 이웃)
  • linear regression(선형 회귀)
  • logistic regression(로지스틱 회귀)
  • SVM(서포트 벡터 머신)
  • dicision tree(결정 트리) 와 random forest(랜덤 포레스트)
  • neural networks(신경망)

 

비지도 학습

훈련 데이터에 label이 없다. 시스템이 아무런 도움 없이 학습해야 한다. 

 

< 중요한 비지도 학습 알고리즘>

  • clustering(군집)
    • k-means(k-평균)
    • DBSCAN
    • HCA(계층 군집 분석)
    • outlier detection(이상치 탐지)와 noveity detection(특이치 탐지)
    • one-class SVM(원-클래스)
    • isolation forest(아이솔레이션 포레스트)
  • visualization(시각화)와 dimensionality reduction(차원 축소)
    • PCA(주성분 분석)
    • kernel PCA(커널)
    • LLE(지역적 선형 임베딩)
    • t-SNE(t-distributed stochastic neighbor embedding)
  • association rule learning(연관 규칙 학습)
    • Apriori(어프라이어리)
    • Eclat(이클렛)

준지도 학습

일부 label이 있는 데이터를 다룬다.

  • DBN(심층 신뢰 신경망)
  • RBM(제한된 볼츠만 머신)

강화 학습

학습하는 시스템을 에이전트라 부르며 environment(환경)을 관찰해서 action(행동)을 실행하고 그 결과로 reward(보상) 또는 penalty(벌점)을 받는다. 시간이 지나면서 가장 큰 보상을 얻기 위해 policy(정책)이라고 부르는 최상의 전략을 스스로 학습한다. 정책은 주어진 상황에서 에이전트가 어떤 행동을 선택해야 할지 정의한다. 

 


머신러닝 시스템을 분류하는 데 사용하는 다른 기준은 입력 데이터의 stream으로부터 점진적으로 학습할 수 있는지 여부이다. 

 

배치 학습(batch learning)

학습한 것을 단지 적용만 하기 때문에 오프라인 학습이라 한다. 

전체 데이터셋을 사용해 훈련하기 때문에 많은 컴퓨팅 자원이 필요하다. 

 

온라인 학습(online learning) = 점진적 학습(incremental learning)

데이터를 순차적으로 한 개씩 또는 mini-batch라 부르는 작은 묶음 단위로 주입하여 시스텝을 훈련시킨다. 

온라인 학습 시스템에서 중요한 파라미터 하나는 변화하는 데이터에 얼마나 빠르게 적응할 것인지다. 이를 learning rate라고 한다. 학습률을 높게 하면 시스템이 데이터에 빠르게 적응하지만 예전 데이터를 금방 잊어버리며, 낮게 하면 시스템의 관성이 더 커져 더 느리게 학습된다. 하지만 새로운 데이터에 있는 잡음이나 대표성 없는 데이터 포인트에 덜 민감해진다. 


머신러닝 시스템은 어떻게 generalize(일반화)되는가에 따라 분류할 수 있다. 

 

사례 기반 학습

similarity를 측정하여 새로운 데이터와 학습한 샘플을(또는 학습한 샘플 중 일부를)비교하는 식으로 일반화한다. 

 

모델 기반 학습

샘플들의 모델을 만들어 prediction에 사용하는 것이다. 

모델이 최성의 성능을 내도록 하는 값을 알려면 측정 지표를 정해야 한다. 

얼마나 좋은지 측정하는 utility function(효용 함수) 또는 fitness function(적합도 함수)를 정의하거나 얼마나 나쁜지 측정하는 cost function(비용 함수)를 정의할 수 있다. 선형 회귀에서는 보통 선형 모델의 예측과 훈련 데이터 사이의 거리를 재는 비용 함수를 사용한다. 이 거리를 최소화하는 것이 목표다. 

 


머신러닝의 주요 도전 과제

 

< 나쁜 데이터의 사례>

 

1. 충분하지 않은 양의 훈련 데이터

 

2. 대표성 없는 훈련 데이터

샘플이 작으면 sampling noise(샘플링 잡음. 즉, 우연에 의한 대표성 없는 데이터)가 생기고, 매우 큰 샘플도 표본 추출 방법이 잘못되면 대표성을 띠지 못하는 sampling bias(샘플링 편향)가 생긴다. 

 

3. 낮은 품질의 데이터

훈련 데이터가 에러, outlier(이상치), 잡음으로 가득하다면 내재된 패턴을 찾기 어려워 잘 작동하지 않을 것이다. 

 

4. 관련 없는 특성

* feature selection : 가지고 있는 특성 중에서 훈련에 가장 유용한 특성을 선택한다. 

* feature extraction : 특성을 결합하여 더 유용한 특성을 만든다. 차원 축소 알고리즘이 도움 될 수 있다. 

* 새로운 데이터를 수집해 새 특성을 만든다. 

 

<나쁜 알고리즘의 예>

 

1. 훈련 데이터 과적합

* overfitting : 모델이 훈련 데이터에 너무 잘 맞지만 일반성이 떨어진다.

* 해결방법 :

  •  파라미터 수가 적은 모델을 선택, 특성 수 줄이기, 모델에 제약을 가하기
  • 훈련 데이터를 더 많이 모은다.
  • 오류 데이터 수정과 이상치 제거 등 데이터의 잡음을 줄인다.

모델에 제약을 가하는 것을 regularization(규제화)라고 한다. 학습하는 동안 적용할 규제의 양은 hyperparameter가 결정한다. 규제 하이퍼파라미터를 매우 큰 값으로 지정하면(기울기가 0에 가까운) 거의 평편한 모델을 얻게 된다. 그러면 과대적합될 가능성은 거의 없겠지만 좋은 모델을 찾지 못한다. 

 

2. 훈련 데이터 과소적합

* underfitting : 모델이 너무 단순해서 데이터의 내재된 구조를 학습하지 못할 때 일어난다. 

해결방법 : 

  • 모델 파라미터가 더 많은 강력한 모델을 선택한다.
  • 학습 알고리즘에 더 좋은 특성을 제공한다(특성 공학).
  • 모델의 제약을 줄인다(규제 하이퍼파라미터를 감소시킨다)

 

참고한 책 : 핸즈온 머신러닝