머신러닝을 통해서 기계를 학습시켜 결과물로 모델을 만들어 모델로 값을 예측시키는 것입니다

 

머신러닝이란?

  • 기계가 데이터로부터 학습하도록 프로그래밍하는 과학/기술 분야 입니다
  • 머신 러닝을 사용하면 대용량 데이터를 분석하여 인간이 보기 힘든 패턴을 발견할 수 있습니다

 

머신러닝이 뛰어난 분야

  • 머신러닝은 기존 솔루션이 많은 수동 조정 (hand-tuning) 또는 긴 규칙 리스트가 필요한 문제를 잘 해결할 수 있습니다
  • 유동적인 주변 환경에서 성능을 발휘할 수 있습니다
  • 복잡한 문제와 대량의 데이터에 관한 통찰을 얻을 수 있습니다

 

머신러닝 시스템의 종류

앞서 머신러닝이 무엇이고 머신러닝이 어떤 방면에서 뛰어난지 확인하였습니다. 

머신러닝은 여러 학습 방법이 있으며 각각의 학습 방법마다 특징이 서로 다릅니다.

 

 

● 사람의 감독하에 훈련하는 것인지 그렇지 않은 것인지에 따라서 다음과 같이 나뉩니다

    ✓ 지도 학습 supervised learning

    ✓ 비지도 학습 unsupervised learning

    ✓ 준지도 학습 semi-supervised learning

    ✓ 강화 학습 reinforcement learning

 

● 실시간으로 점진적인 학습을 하는지 아닌지에 따라서 나뉩니다

    ✓ 온라인 학습

    ✓ 배치. 학습

 

● 단순하게 알고 있는 데이터 포인트와 새 데이터 포인트를 비교하는 것인지 아니면 과학자들이 하는 것처럼 훈련 데이터셋에서 패턴을

    발견하여 예측 모델을 만드는 것인지에 따라서 나뉩니다.

    ✓ 사례 또는 인스턴스 기반 학습

    ✓ 모델 기반 학습

 

 

지도 학습

지도 학습에는 알고리즘에 주입하는 훈련 데이터에 레이블이라는 원하는 답이 포함됩니다.

즉 컴퓨터한테 문제의 정답을 보여줘서 다음 유사한 문제인 경우 학습한 정답을 예측하는 원리 입니다.

 

분류 Classification

대표적인 지도 학습을 이용한 작업으로는 분류가 있겠습니다.

- 예를 들어 고양이와 강아지를 분류하도록 사진과 정답을 미리 학습시켜 고양이 사진을 줬을 때 기계가 고양이라고 정답을 말하는 것이

  분류 예시입니다.

회귀 Regression

또다른 지도 학습을 이용한 작업으로는 분류가 있습니다.

- 분류와 다르게 회귀는 예측 변수라 부르는 특성 (예: 주행거리, 연식, 브랜드 등)을 사용하여 값을 예측하는 것입니다.

- 예를 들어 다음과 같은 특성 값들과 정답 레이블이 있을 때 컴퓨터한테 15000km, 2000, 현대 일때는 200만원 정도의 값일거야~ 하고 

  훈련을 시키는 것입니다.

 

물론 분류와 다르게 15000km, 2000, 현대 일때는 200만원이야! 라고 정하는 것이 아닌 200만원 정도야~ 라고 추정합니다.

분류 시스템을 훈련하려면 예측 변수와 레이블이 포함된 데이터가 많이 필요합니다.

주행거리 연식 브랜드 가격 (정답)
15000 2000 현대 200만원
20220 1997 KIA 150만원

 

학습된 모델로 새로운 샘플의 값을 예측하는 회귀 예시

 

지도 학습 알고리즘

지도 학습 알고리즘에는 다음과 같이 여러 알고리즘들이 존재합니다

  • k-최근접 이웃
  • 선형 회귀
  • 로지스틱 회귀
  • 서포트 벡터 머신 (SVM)
  • 결정 트리와 랜덤 포레스트
  • 신경망 (딥러닝)

 

 

비지도 학습

비지도 학습은 지도 학습과 달리 말 그대로 지도를 하지 않는, 기계에게 정답 레이블을 안주고 문제만 주는 것 입니다.

즉 비지도 학습은 기계가 아무런 도움 없이 학습을 해야합니다.

 

클러스터링

  • 비지도 학습 작업인 clustering (클러스터링, 군집화)는 특정 유사한 데이터들 중 서로서로를 찾아내고 묶어내는 것입니다.
  • 예를 들어 블로그 방문자에 관한 데이터가 많을 때, 유사한 방문자들로 그룹을 묶기 위해서 군집 알고리즘 실행이 필요합니다.
  • 기계는 각 방문자들이 속한 그룹(정답 레이블)을 모르기 때문에 스스로 방문자 사이의 연결고리를 찾아야 합니다.
  • 예, 방문자 중 40%는 남성, 만화책 선호, 저녁 방문, 20%는 젊고, 공상과학 선호, 주말 방문
  • 계층 군집을 사용한다면 더 작은 그룹으로 세분화할 수 있습니다.
  • 대표적으로 지도에서 일정 위치에 여러 📍이 존재한다면 묶어서 하나의 큰 원으로 표현하는 작업이 클러스터링이라 합니다.

군집

 

시각화

  • visualization (시각화)는 레이블이 없는 대규모의 고차원데이터를 넣으면 도식화가 가능한 2D나 3D 표현으로 만들어주는 것
  • 이런 알고리즘은 간으한 한 구조를 그대로 유지하려 하므로 (예를 들어 입력 공간에서 떨어져 있던 클러스터는 시각화된 그래프에서 겹쳐지지 않게 유지) 데이터가 어떻게 조직되어 있는지 이해할 수 있고 예상하지 못한 패턴을 발견할 수 있습니다.
  • 즉 인간이 100차원을 직접 표현할 수 없기 때문에 100차원같은 고차원의 데이터를 저차원의 데이터로 바꿔서 보여줍니다.
    - 예로 아래 것들은 수십개의 특징값(특성값)이 존재할텐데 100개의 특징은 100차원 데이터로 표현하게 됩니다.
    - 하지만 100차원의 데이터를 직접 인간이 표현하기 어렵기 때문에 시각화를 통해 아래와 같이 표현할 수 있게 됩니다.

의미 있는 군집을 시각화로 표현

 

차원 축소

  • dimensionality reduction (차원 축소)의 목표는 너무 많은 정보를 잃지 않으면서 데이터를 간소화하는 작업입니다.
  • 차원 축소의 한 가지 방법은 상관 관계가 있는 여러 특성들을 하나로 합치는 것입니다.
  • 예를 들어, 차 주행거리는 연식과 밀접하게 연관되어 있으므로 DR 알고리즘을 통해 차의 마모 정도를 나타내는 한 특성으로 합치는 것이 가능합니다. 이를 특성 추출이라고 합니다.
  • ML 알고리즘에 데이터를 적용하기 전에 DR 알고리즘을 적용하여 데이터의 차원을 줄이는 것이 매우 유용할 수 있습니다. 이는 실행 속도가 빨라지고, 디스크/메모리를 적게 사용하며, 경우에 따라서 성능이 좋아지기도 합니다.

 

 

이상치 탐지

  • 또 하나의 중요한 비지도 학습은  outlier detection이라고 합니다. 
  • 예를 들어 부정 거래를 막기 위해 이상한 신용카드 거래를 감지하고, 제조 결함을 잡아내는 것을 의미하며
  • 학습 알고리즘에 주입하기 전에 데이터셋에서 이상한 값을 자동으로 제거하는데 사용할 수 있습니다.
  • 기계는 정상 인스턴스로 훈련하고 새로운 인스턴스가 주어질 경우 정상인지 이상치인지 판단합니다.

 

연관 규칙 학습

  • association rule learning이라고 불리는 연간 규칙 학습은 대량의 데이터에서 특성 간의 흥미로운 관계를 찾는 것을 목표로 합니다
  • 예를 들어 슈퍼마켓 운영자 입장에서 판매 기록을 분석하면 아마 바베큐 소스와 감자칩을 구매한 사람이 또한 스테이크를 구매하는 경향이 있다는 것을 찾을지도 모릅니다. -> 연관 있는 제품을 가까이 놓을 수 있음

 

 

준지도 학습

데이터에 각 데이터마다 레이블(정답)을 다는 것은 일반적으로 시간과 비용이 많이 들기 때문에 레이블(정답)이 없는 샘플이 많고 레이블된 샘플이 적은 경우가 많습니다. 어떤 알고리즘은 일부만 레이블(정답)이 있는 데이터를 다룰 수 있는데 이를 준지도 학습이라고 합니다.

 

  • 준지도 학습은 일상생활에서도 현재 많이 사용되고 있습니다, 예를 들어 요로 사진을 찍었을 때 앨범에서 사람마다 레이블을 하나만 추가하면 사진에 있는 모든 사람의 이름을 알 수 있고, 검색을 통해서 편리하게 사진을 찾을 수 있습니다.

 

강화 학습

  • 강화 학습은 기계가 환경을 관찰하고, 행동을 결정하고 실행하여, 그 대가로 보상 또는 벌점을 받는 개념의 학습입니다. 
  • 시간이 지나는 동안에 기계는 최대 보상을 받기 위한 '정책'을 스스로 학습해야합니다.
  • 여기서 정책은 주어진 상황에서 에이전트가 어떤 행동을 선택해야 할지 정의하는 것입니다.
  • 강화학습을 적용된 예시로는 딥마인드에서 개발한 알파고나 보행 로봇 등이 있습니다

 

배치 학습 (오프라인 학습)

  • 배치 학습에서는 시스템이 점진적으로 학습할 수 없습니다.
    ✓ 가용한 데이터를 모두 사용하여 훈련시켜야 합니다.
    ✓ 시간과 자원이 많이 소비하므로 오프라인에서 수행합니다
    ✓ 시스템을 훈련시킨 후에 제품에 적용하려면 추가 학습 없이 실행됩니다.
  • 새로운 데이터에 대해 학습하려면 처음부터 다시 훈련합니다
    ✓ (점진적 학습이 불가하므로 새로운 데이터 뿐만 아니라 이전 데이터를 포함한) 전체 데이터를 가지고 새로운버전의 시스템 훈련이
         필요합니다
    ✓ 새 버전 시스템이 준비 되면 기존 시스템을 중지하고 새 시스템으로 교체해야 한다는 문제점이 있습니다.
  • ML 훈련, 평가, 런칭과 같은 전체 과정자동화가 가능합니다
    ✓ 훈련 시간이 많이 소요 되는 경우에는 일정 주기마다 훈련이 자동화됩니다.
    ✓ 급변하는 데이터에 적응이 필요할 때 능동적인 방법이 필요합니다 (예, 주식 가격 예측)

  • 때로는 전체 데이터셋 훈련에 많은 컴퓨팅 자원이 필요합니다
    ✓ CPU, 메모리 공간, 디스크 공간, 디스크 I/O, 네트워크 I/O 등 컴퓨팅 자원이 필요합니다.
    ✓ 큰 데이터셋을 가지고 자주 배치 학습을 필요로 하는 시스템은 큰 비용이 발생합니다.
  • 자원이 제한된 시스템에서는 비효율적입니다
    스마트폰, 로봇과 같이 자원이 제한된 시스템은 오히려 점진적(온라인) 학습효율적이라고 할 수 있습니다.

 

온라인 학습

  • 점진적 학습이 가능합니다(1)
    온라인 학습은 데이터를 순차적으로 한 개씩 또는 미니배치라 부르는 작은 묶음 단위로 주입하여 시스템을 훈련시킵니다.
    매 학습 단계가 빠르고 비용이 적게 들어 시스템은 데이터가 도착하는 대로 즉시 학습할 수 있습니다.

  • 점진적 학습이 가능합니다(2)
    ✓ 컴퓨터 한대의 메모리가 다 들어갈 수 없을 정도로 큰 데이터셋 훈련을 위해 온라인 학습을 사용할 수도 있습니다.
         -> 외부 메모리 학습
    ✓ 전체 데이터셋을 부분으로 쪼개어 각 부분에 대해 학습과정을 반복합니다.

  • 온라인 학습은 연속적으로 데이터를 받고 (예를 들어 주식가격) 빠른 변화에 스스로 적응해야 하는 시스템에 적합합니다.
    ✓ 컴퓨팅 자원이 제한된 경우(예: 스마트폰)에도 좋은 선택입니다.
    ✓ 모델을 만들 때 실시간으로 학습했던 데이터셋(미니배치)을 학습이 끝난 이후에는 필요하지 않으므로 버릴 수 있습니다.
  • 온라인 학습에서 학습률이라는 중요한 파라미터가 존재합니다, 학습률은 변화하는 데이터엥 얼마나 빠르게 적응할 것인가를 결정하는 파라미터입니다.
    ✓ 높은 학습률은 데이터 변화에 빠른 대응이 가능하나, 이전 데이터를 빠르게 잊어버립니다. (항상 좋지만은 않습니다)
    ✓ 낮은 학습률은 변화에 둔감하나, 새 데이터 잡음이나 이상치(outlier)에 덜 민감합니다 (항상 나쁘지만은 않습니다)

 

인스턴스 기반 학습

  • 가장 평범한 형태의 학습은 단순히 기억하기입니다. (예: 사용자가 스팸으로 지정한 메일과 동일한 메일들을 스팸으로 분류)
  • 이렇게 하면 유사도 측정 방법이 필요합니다. 스팸 필터에서 활용 가능한 SM은 두 메일간 공통으로 포함된 단어의 수, 만약 스팸 메일과 공통으로 가진 단어가 '일정 수'보다 많으면 스팸으로 분류하는 형식으로 이루어질 수 있습니다.
  • 가장 대표적인 인스턴스 기반 학습이 k-Nearest Neighbor (kNN, 최근접 이웃) 알고리즘입니다.

 

모델 기반 학습

  • 일반화는 결국 새로운 데이터들이 왔을 때 학습 시스템이 잘 동작 하기 위하여 (예: 예측) 내가 알고 있는 사례들을 잘 정리하는 것 입니다.
  • 인스턴스 기반 학습은 일반화를 '새 데이터가 올 때마다' SM을 활용하여 일반화를 적용합니다.
  • 반면에 모델 기반 학습은 훈련 인스턴스들을 분석하여 모델을 생성하여 내가 알고 있는 사례들을 미리 정리합니다
    -> 새 데이터가 오기 전에 일반화

 

 

 

머신러닝을 하기 위해서는?

  • 문제 해결을 위해 ML 알고리즘은 충분한 데이터가 필요합니다. (많으면 많을수록 무조건 좋습니다)

  • 일반화를 위해서 훈련 데이터가 새로운 데이터에 대한 대표성이 충분해야 합니다.
    ✓ 샘플링 잡음 (sampling noise)
      - 만약 샘플이 너무 작으면, 우연에 의해 대표성이 없는 데이터를 가지고 학습할 수 있습니다
    ✓ 샘플링 편향 (sampling bias)
      - 비록 매우 큰 샘플도 추출 방법이 잘못되면 대표성을 가지지 못할 수도 있습니다
  • 데이터에 오류, 이상치, 잡음이 많으면 기계는 데이터에 내재된 패턴을 찾을 수 없으며 새로운 데이터에 적용할 때 잘 동작하지 않습니다, 따라서 옮바른 데이터를 사용하는 것이 중요합니다.
    ✓ 만일 정제되지 않은 데이터셋을 사용한다면  일부 특성이 필요 없다고 생각되면 해당 특성을 지우거나 값이 빠져있을 때 대체값을
        넣는 방법 등을 사용해야 합니다.
  • ML에서의 핵심은 훈련에 사용할 특성 집합을 찾아내는 것으로 이를 Feature engineering (피처 엔지니어링, 특성 공학)이라고 합니다.
    특성 선택 (feature selection)
      - 가지고 있는 특성들 중에 훈련에 가장 유용한 특성을 선택하는 것
    특성 추출 (feature extraction)
      - 특성을 결합하여 더욱 유용한 특성을 만드는 것 (차원 축소 알고리즘 예)
      - 학습에 도움이 되는 '특성들의 조합'을 찾는 것도 특성 추출이라고 말할 수 있습니다.

 

머신러닝에서 조심해야하는 것?

  • 훈련 데이터 과대 적합을 조심해야 합니다. Overfitting (오버피팅, 과대적합)
    ✓ 외국인에 대한 과대한 택시 요금이 국가 전체 택시 운전사들에 대해 나쁜 인식으로 확대될 수 있듯이, 과도한 일반화로 인해
        컴퓨터도 같은 실수를 할 수 있게 됩니다.
    ✓ Overfitting (오버피팅, 과대적합)이란 훈련시킨 훈련 데이터에는 매우 잘 동작하지만 일반성이 떨어진느 현상을 의미합니다.
  • 오버피팅의 위험을 줄이기 위해서 모델에 규제를 사용하여 제약을 가하는 방법이 있습니다.
  • 규제란 모델을 단순화 하기 위해 제약을 가하는 것입니다.
  • 만약 삶의 만족도를 계산하는 공식이 다음과 같다고 가정합니다
  • 삶의 만족도 = ⍬0 + ⍬0 X 1인당 GDP -> 절편 ⍬0, 기울기 ⍬1
    - 기울기 ⍬1 = 0으로 강제 한다면? 단순한 평균값 구하기가 될 것입니다. (DOF는 1)
    - 기울기 ⍬1 = 0을 수정하되 작은 값을 갖도록 유지하게 된다면 (DOF는 1과 2 사이 정도가 됩니다)
DOF(Degree of Freedom, 자유도): 통계와 모델링에서 중요한 개념으로, 모델의 유연성과 복잡성을 설명하는 데 사용됩니다

 

오버피팅 해결하기

규제는 오버피팅 되는 것을 방지하기 위해서 사용되는데 학습하는 동안 규제의 정도는 하이퍼파라미터가 결정합니다.

  • 하이퍼파라미터는 학습하는 동안 '모델에 대한 규제의 정도'를 결정하게 해주는 '제어 파라미터' 역할을 합니다.
  • 하이퍼파라미터는 학습 알고리즘으로부터 영향을 받지 않으며, 훈련 전에 미리 지정되고, 훈련하는 동안에는 상수로 남아있습니다.
  • 규제 하이퍼 파라미터를 매우 큰 값으로 지정하면 (기울기가 0에 가까운) 거의 평편한 모델을 얻게 됩니다.
  • 하이퍼파라미터 ⍺를 찾는 것이 사용자가 해야하는 것입니다.

 

훈련 데이터 과소적합

  • 과소적합은 너무 단순한 모델은 너무 단순해서 데이터의 내재된 구조를 학습하지 못할 때 일어납니다. -> underfitting (과소적합)
  • 예를 들어 삶의 만족도에 대한 선형 모델은 과소적합되기 쉽습니다, 현실은 이 모델보다 더 복잡하므로.
  • 언더피팅 해결 방법은 다음과 같습니다.
    ✓ 모델 파라미터가 더 많은 효과적인 모델을 선택합니다
    ✓ 학습 알고리즘에 더 효과적인 특성을 제공합니다 (특성 공학)
    ✓ 모델의 제약을 줄입니다

 

모델 테스트하기

훈련시킨 모델을 테스트 하기 위해서는 해당 모델이 잘 훈련 되었는지를 확인해야합니다. 만약 1개의 데이터로 한번 훈련했다고 모든 새로운 데이터에도 같은 성능을 발휘할 수 없기 때문에 조심해야합니다.

  • 훈련 데이터를 훈련 셋과 테스트 셋으로 나눕니다. (일반적으로 훈련셋 80 : 테스트 셋 20 으로 나눕니다)
    ✓ 훈련 셋은 모델 학습에 사용
    ✓ 테스트 셋은 모델 테스트에 사용
  • 모델을 테스트하기 위해서는 주로 교차 검증 (cross-validation) 기법을 사용합니다
    ✓ 검증 셋으로 너무 많은 양의 데이터를 뺏기지 않기 위해 사용합니다
    ✓ 훈련 셋을 여러 서브셋으로 나누고 일정 조합으로 모델을 훈련, 나머지로 검증합니다
    ✓ 모델과 하이퍼파라미터가 선택되면 전체 훈련 데이터로 최종 모델을 훈련하고 테스트 셋으로 일반화 오차를 측정합니다.
ytw_developer