머신러닝

  • 데이터에서부터 학습하도록 컴퓨터를 프로그래밍하는 과학
  • 어떤 작업 TT에 대한 컴퓨터 프로그램의 성능을 PP로 측정했을 때 경험 EE로 인해 성능이 향상됐다면, 이 컴퓨터 프로그램은 작업 TT와 성능 측정 PP에 대해 경험 EE로 학습한 것
  • 학습하는 데 사용하는 샘플: Training Set
    • 각 훈련 데이터: Training Instance
  • ex) 스팸필터
    • TT: 새로운 메일이 스팸인지 구분
    • EE: 훈련 데이터
    • PP: 정확히 분류된 메일의 비율(정확도)
  • 머신러닝은 어렵고 복잡한 문제의 패턴을 감지하여 판단에 좋은 기준을 자동으로 학습
    • 머신러닝을 사용하지 않으면 직접 스팸에 자주 나타나는 단어를 분석해 패턴을 발견하고 알고리즘으로 작성하는 과정을 반복해야 함
    • 머신러닝을 사용하면 프로그램이 훨씬 짧아지고 유지보수가 쉽고 정확도가 높다.
  • 머신러닝 기술을 적용해 대용량 데이터를 분석하면 겉으로는 보이지 않던 패턴 발견: 데이터 마이닝
  • 적용 사례
    • 생산 라인에서 제품 이미지를 분석해 자동으로 분류(CNN)
    • 뇌를 스캔해 종양 진단(CNN)
    • 자동으로 뉴스 기사를 분류(NLP)
    • 토론 포럼에서 부정적인 코멘트를 자동으로 구분(NLP)
    • 다양한 성능 지표를 기반으로 회사의 내년도 수익 예측(회귀)
    • 신용카드 부정 거래 감지(이상치 탐지)
    • 구매 이력을 기반으로 고객을 나누고 각 집합마다 다른 마케팅 전략 계획(Clustering)
    • 과거 구매 이력을 기반으로 고객이 관심을 가질 수 있는 상품 추천(RS)
    • 지능형 게임 봇 만들기(RL)

종류

  • 사람의 감독 하에 훈련하는 것인지
    • 지도 학습
      • 훈련 데이터에 label이라는 정답이 포함됨
      • 분류와 회귀로 나뉨
        • 분류: feature를 사용해 범주형 데이터인 label(class)를 예측하는 문제
        • 회귀: 예측 변수(predictor variable)라고 부르는 feature를 사용해 target 수치 예측
          • 일부 회귀 알고리즘은 분류에 사용 ex) Logistic Regression
      • 유명한 지도 학습 알고리즘
        • KNN, 선형 회귀(Linear Regression), 로지스틱 회귀(Logistic Regression), SVM, Decision Tree & Random Forest, 신경망
    • 비지도 학습
      • 훈련 데이터에 label이 없이 학습하는ㄴ 것
      • 유명한 비지도 학습 알고리즘
        • Clustering: K-means, DBSCAN, HCA, 이상치 탐지, 특이치 탐지, 원-클래스, 아이솔레이션 포레스트
          • 알고리즘 스스로 데이터 사이의 연관성을 찾고 세분화
          • 이상치 탐지: 이상한 값 제거 - 훈련하는 동안 정상 샘플을 만나 이를 인식하도록 훈련
          • 특이치 탐지: 훈련셋에 있는 모든 샘플과 달라보이는 새로운 샘플 탐지
            • 특이치 탐지는 훈련셋에 없는 것을 탐지, 이상치는 드문 것도 탐지
        • 시각화/차원축소: PCA, 커널 PCA, 지역적 선형 임베딩(LLE), t-SNE
          • 시각화: 고차원 데이터를 가능한 구조를 그대로 유지해 2D, 3D 표현으로 나타냄
          • 차원 축소: 너무 많은 정보를 잃지 않으면서 데이터 간소화
            • 상관관계가 있는 여러 특성을 하나로 합침 \rarr feature extraction
        • 연관 규칙 학습: 어프라이어리(Apriori), 이클렛(Eclat)
          • 대량의 데이터에서 특성 간 흥미로운 관계 찾음
          • 마트에서 구매자가 함께 구매하는 상품을 찾음
    • 준지도 학습
      • 데이터에 labeling하는 것은 시간과 비용이 ㅁ낳이 듦
      • 일부 데이터만 label이 있는 경우
      • 지도 학습과 비지도 학습의 조합으로 이뤄짐
        • DBN, RBM에 기초
    • 강화 학습
      • 에이전트(agent): 학습하는 시스템
      • 환경(environment)를 관찰해 행동(action)을 실행하고 그 결과로 보상(reward)를 최대화하는 최상의 정책(policy) 학습
  • 실시간으로 점진적인 학습을 하는지
    • 배치 학습
      • 시스템이 점진적으로 학습할 수 없다.
      • 가용한 데이터를 모두 사용해 훈련
      • 자원과 시간 많이 소요돼 주로 오프라인에서 수행
      • 먼저 시스템을 학습시키고 그 다음 제품 시스템에 적용
      • 오프라인 학습이라고도 부름
      • 새로운 데이터 학습을 위해서는 전체 데이터를 사용해 새로운 버전을 처음부터 다시 훈련
    • 온라인 학습
      • 데이터를 순차적으로 한 개씩 또는 미니배치 단위로 학습
      • 속도가 빠르고 비용이 적게 듦
        • 빠른 변화에 스스로 적응해야하는 시스템에 적합
        • 컴퓨팅 자원이 제한된 경우에도 좋은 선택
      • 중요한 파라미터로 학습률(learning rate) 존재
        • 변화하는 데이터에 얼마나 빠르게 적응할 것인지 의미
        • 학습률을 높게하면 시스템이 데이터에 빠르게 적응하지만 금방 잊음
        • 학습률을 낮게하면 더 느리게 학습하지만 noise에 덜 민감해짐
      • 나쁜 데이터가 주입되었을 때 시스템이 운영중이라면 고객에게 들킬 수 있다.
        • 모니터링을 잘해야 함
  • 단순하게 알고 있는 데이터 포인트와 새 데이터 포인트를 비교하는지, 또는 훈련 데이터셋에서 패턴을 발견해 예측 모델을 만드는지
    • 머신러닝 시스템은 어떻게 일반화 되는가에 따라 분류
      • 머신 러닝은 학습 데이터에 없는 처음 보는 데이터에서 좋은 예측을 만들어야 함(일반화)
    • 사례 기반 학습
      • 단순히 모든 데이터를 기억 후 새로운 데이터와 비교
        • 데이터 사이의 유사도 측정
    • 모델 기반 학습
      • 데이터에 알맞은 모델을 만들어 예측에 사용
        • 데이터를 모고 알맞는 모델 선택(model selection)
        • 파라미터 조정
          • 모든 모델은 파라미터 보유
        • 효용 함수 또는 비용 함수 정의 후 성능 측정
          • 효용 함수: 모델이 얼마나 좋은지 측정
          • 비용 함수: 모델이 얼마나 나쁜지 측정
      • 과정
        • 데이터 공부
        • 모델 선택
        • 학습 데이터 학습(비용 함수를 최소화하는 파라미터 학습)
        • 새로운 데이터에 모델을 적용시켜 추론

머신러닝 도전 과제

  • 나쁜 데이터
    • 학습 데이터 부족
      • 머신러닝 모델 학습을 위해서는 많은 데이터를 통해 학습을 진행해야 한다.
      • 많은 데이터를 통해 학습할수록 test 성능이 증가
      • 대표성 없는 훈련 데이터
        • 일반화를 위해 학습 데이터가 새로운 사례를 잘 대표해야 한다.
        • 샘플이 작으면 noise가 생기고 크더라도 샘플링 방법이 잘못되면 대표성이 없음
          • 이를 sampling bias라고 함
    • 낮은 품질의 데이터
      • 데이터가 에러, 이상치, 잡음으로 가득하면 모델이 내재된 패턴을 찾기 어려움
      • 그렇기 때문에 데이터 정제 해야 함
        • 이상치 - 무시, 수정 해야 함
        • 결측치 - 제거, 삽입 해야 함
    • 관련없는 feature
      • Garbage In, Garbage Out
      • 훈련에 좋은 feature를 찾아야 함
        • 이 과정은 Feature Engineering이라고 함
          • Feature Extraction: 특성을 결합해 더욱 유용한 특성 만듦
          • Feature Selection: 보유한 feature 중 훈련에 가장 유용한 특성(들) 선택
          • 새로운 데이터를 수집해 특성 만들기
  • 나쁜 알고리즘
    • 과대 적합(Overfitting)
      • 훈련 데이터에 너무 잘 맞지만 일반성이 떨어지는 현상
        • 잡음이 섞인 패턴을 감지하면 일반화 떨어짐
        • 잘못된 feature 사용
      • 훈련 데이터에 있는 잡음의 양에 비해 모델이 복잡할 때 발생
        • 파라미터 수가 적은 모델 사용
          • 모델 변경
          • feature 수 감소
          • regularization: 파라미터에 규제를 가해 학습 데이터에 잘 학습되지 않도록 함(일반화 성능 증가)
            • 규제의 양은 하이퍼 파라미터로 결정
        • 훈련 데이터 수집
        • 훈련 데이터 잡음 제거
          • 오류 데이터 수정 및 이상치 제거
    • 과소 적합(underfitting)
      • 모델이 너무 단순해서 데이터의 내재된 구조를 학습하지 못하는 것
        • 파라미터가 더 많은 모델 사용
        • 더욱 좋은 feature 제공
        • regularization 감소

테스트와 검증

  • 모델 학습 후, 모델이 일반화가 잘 되었는지 검증하며 학습 진행
  • hold-out
    • 모델 학습 후, 모델이 일반화가 잘 되었는지 검증하며 학습 진행
    • 데이터를 training set, test set으로 분할
      • training set으로 모델을 학습
      • test set으로 모델 평가
    • 새로운 샘플에 대한 오류 비율: 일반화 오차
      • test set을 통해 일반화 오차의 추정값 얻음
        • 훈련 오차가 낮지만 일반화 오차가 높다면 오버 피팅이다.
    • 하지만 일반화 오차를 줄이기 위해 test set을 계속하여 모니터링하여 모델링을 진행한다면, 또한 test set에 과적합
      • 또 다른 test set 1개를 더 만듦
        • validation set(검증 세트)
    • train set으로 학습, validation set으로 모델의 일반화 오차를 확인하여 모델링을 진행한 후, test set으로는 단 한번의 최종 테스트만 시행
  • 교차 검증(cross-validation)
    • 훈련 데이터에서 검증 셋으로 너무 많은 양의 데이터를 뺏기지 않기 위해 교차 검증 사용
    • 훈련 데이터를 여러 subset으로 나누고, 각 모델을 1개를 제외한 subset으로 학습 후, 나머지 subset으로 검증
      • 모델과 하이퍼 파라미터가 선택되면 전체 훈련 데이터를 사용해 최종 모델 훈련

No Free Lunch

  • 모델은 관측한 것을 간소화한 것
    • 간소화: 새로운 샘플에 일반적이지 않을 것 같은 불필요 세부사항 제거
  • 어떤 가정도 하지 않으면 모델 간의 비교를 할 근거가 없다.
    • 즉, 데이터에 따라 훌륭한 모델이 따로 존재한다.

참고
Hands-on Machine Learning with Scikit-Learn, Keras & Tensorflow 2 - 오렐리앙 제롱

profile
데이터사이언스를 공부하는 권유진입니다.

0개의 댓글