한눈에 보는 머신러닝

Stop._.bmin·2023년 2월 1일
0

핸즈온 머신러닝

목록 보기
1/3
post-thumbnail

1.1 머신러닝이란?

  • 데이터에서부터 학습하도록 컴퓨터를 프로그래밍 하는 과학(또는 예술)

명시적인 프로그래밍 없이 컴퓨터가 학습하는 능력을 갖추도록

훈련 세트 : 시스템이 학습하는 데 사용하는 샘플
훈련 사례 : 각 훈련 데이터
훈련 데이터 : 경험
정확도 : 성능 측정(정확히 분류된 x의 비율)

1.2 왜 머신러닝을 사용하는가?

문제가 어렵다면 전통적인 프로그래밍 기법으로는 유지 보수하기 매우 힘들어짐 ➡️ 패턴을 감지하여 자동으로 학습하여 판단해준다면? ➡️ 유지 보수가 쉬우며 정확도가 높아진다!

머신러닝 기반의 포르개래밍은 자동으로 훈련 사례를 인식하고 별도의 작업을 하지 않아도 알아서 처리한다

* 데이터 마이닝: 머신러닝 기술을 적용해서 대용량의 데이터를 분석하며 겉으로 보이지 않았던 패턴을 발견할 수 있다.

머신러닝이 뛰어난 분야

  • 기존 솔루션으로는 많은 수동 조정과 규칙이 필요한 문제
  • 전통적인 방식으로는 해결 방법이 없는 복잡한 문제
  • 유동적인 환경
  • 복잡한 문제와 대량의 데이터에서 통찰 얻기

1.4 머신러닝 시스템의 종류

  • 지도, 비지도, 준지도, 강화학습 : 사람의 감독하에 훈련하는 것인지 그렇지 않은 것인지
  • 온라인 학습배치 학습 : 실시간으로 점진적인 학습을 하는지 아닌지
  • 사례 기반 학습모델 기반 학습: 단순하게 알고 있는 데이터 포인트와 새 데이터 포인트를 비교하는 것인지 아니면 과학자들이 하는 것처럼 훈련 데이터셋에서 패턴을 발견하여 예측 모델을 만드는지

이 범주들은 서로 배타적이지 않으며 원하는 대로 연결 할 수 있다

1.4.1 지도 학습과 비지도 학습

"학습하는 동안의 감독 형태나 정보량"

지도 학습

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

분류 : 전형적인 지도 학습 (ex. 스팸)
예측 변수(predictor variable) : 특성(feature)을 사용해 중고차 가격 같은 타깃(target)의 수치를 예측하는 것

이런 종류의 작업을 회귀라고 한다.

일부 회귀 알고리즘은 분류에 사용할 수 있다. 반대로 일부 분류 알고리즘은 회귀에 사용할 수도 있다. 널리 쓰이는 로지스틱 회귀는 클래스에 속할 확률을 출력한다.

✏️ 중요한 지도 학습 알고리즘

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

비지도 학습

훈련 데이터에 레이블이 없다 ➡️ 시스템이 아무런 도움없이 학습해야한다

✏️중요한 비지도 학습 알고리즘

  • 군집
    • k-평균
    • DBSCAN
    • 계층 군집 분석
    • 이상치 탐지와 특이치 탐지
    • 원-클래스
    • 아이솔레이션 포레스트
  • 시각화와 차원 축소
    • 주성분 분석
    • 커널 PCA
    • 지역적 선형 임베딩
    • t-SNE
  • 연관 규칙 학습
    • 어프라이어리
    • 이클렛

계층 군집 알고리즘을 사용하여 각 그룹을 더 작은 그룹으로 세분화 할 수 있다.

시각화 알고리즘은 레이블이 없는 대규모의 고차원 데이터를 넣으면 도식화가 가능한 2D나 3D 표현을 만들어준다.

차원 축소는 너무 많은 정보를 잃지 않으면서 데이터를 간소화하려고 한다.

특성 추출 : 두 특성을 하나의 특성으로 합치는 것

머신러닝 알고리즘에 데이터를 주입하기 전에 차원 축소 알고리즘을 사용하여 훈련 데이터의 차원을 줄이는 것이 유용할 때가 많다. 실행속도가 훨씬 빨라지고 디스크와 메모리를 차지하는 공간도 줄고 경우에 따라 성능이 좋아지기도 한다.

이상치 탐지 : 새로운 샘플을 보고 정상 데이터인지 혹은 이상치인지 판단한다.
특이치 탐지 : 훈련 세트에 있는 모든 샘플과 달라보이는 새로운 샘플을 탐지하는 것이 목적이다.
연관 규칙 학습 : 대량의 데이터에서 특성 간의 흥미로운 관계를 찾는다.

준지도 학습

"일부만 레이블이 있는 데이터를 다루는 것"

구글 호스팅 서비스가 좋은 예시다. 가족 사진을 모두 올리면 이 사람들이 누구인가에 대해서 레이블을 하나만 추가하면 모든 사람을 알 수 있게된다.

대부분의 준지도학습은 지도학습과 비지도학습의 조합으로 이루어져있다.

강화 학습

"주어진 상황에서 어떤 행동을 해야하나?"

에이전트 : 학습하는 시스템
환경을 관찰해서 행동을 실행하고 그 결과로 보상을 받는다. 시간이 지나면서 가장 큰 보상을 얻기 위해 정책이라는 최상의 전략을 스스로 학습한다

1.4.2 배치 학습과 온라인 학습

스트림으로부터 점진적으로 학습할 수 있는지 여부

배치 학습

시스템이 점진적으로 학습할 수 없다 ➡️ 가용한 데이터를 모두 사용해 훈련
➡️ 시간과 자원을 많이 소모하므로 오프라인에서 수행된다.
먼저 시스템을 훈련시키고 다음 제품 시스템에 적응하면 더 이상의 학습없이 실행된다.
오프라인 학습이라고 한다.

온라인 학습

순차적으로 한 개씩 또는 미니배치라 부르는 작은 묶음 단위로 주입하여 시스템을 훈련시킨다.

  • 빠른 변화에 스스로 적응해야 하는 시스템에 적합하다.
  • 컴퓨팅 자원이 제한된 경우

컴퓨터 한 대의 메인 메모리에 들어갈 수 없는 아주 큰 데이터셋을 학습하는 시스템에도 온라인 학습 알고리즘을 사용할 수 있다. (외부 메모리➡️보통 오프라인으로..➡️그냥 점진적 학습이라 기억)


학습률 : 온라인 학습 시스템에서 중요한 파라미터 하나는 변화하는 데이터에 얼마나 빠르게 적응할 것인지 (높을 경우, 시스템이 데이터에 빠르게 적응하지만, 예전 데이터를 금방 잊어버림.)

➡️ 나쁜 데이터가 주입되었을 때?

성능이 일시적으로감소한다.

1.4.3 사례 기반 학습과 모델 기반 학습

"일반화 되는가에 따른 분류"

사례 기반 학습

유사도 측정을 통해 분류한다. ➡️ 사례 기반 학습
시스템이 훈련 샘플을 기억함으로써 학습

모델 기반 학습

샘플들의 모델을 만들어 예측에 사용하는 것

  • 데이터를 분석한다.
  • 모델을 선택한다.
  • 훈련 데이터로 모델을 훈련시킨다 ➡️ 학습 알고리즘이 비용 함수를 최소화하는 모델을 찾는다.
  • 새로운 데이터에 모델을 적용해 예측을 하고, 모델이 잘 일반화되길 기대한다.

1.5 머신러닝의 주요 도전 과제

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

대부분의 머신러닝 알고리즘이 잘 작동하려면 데이터가 많아야 한다.

1.5.2 대표성 없는 훈련 데이터

일반화가 잘되려면 우리가 일반화되기 원하는 새로운 사례를 훈련 데이터가 잘 대표하는 것이 중요하다.
샘플링이 작으면 샘플링 잡읍이 생기고, 매우 큰 샘플도 표본 추출 방법이 잘못되면 샘플링 평향이 생기기도 한다.

1.5.3 낮은 품질의 데이터

훈련 데이터가 에러, 이상치, 잡음이 많다면 머신러닝 시스템이 내재된 패턴을 찾기 어려워 잘 작동하지 않는다. 따라서 아래의 경우에는 훈련 데이터 정제가 필요하다.

  • 일부 샘플이 이상치라는 게 명확하면 간다히 그것을 무시하거나 수동으로 잘못된 것을 고치는 것이 좋다.
  • 일부 샘플에 특성 몇 개가 빠져있다면, 이 특성을 모두 무시할지, 이 샘플을 무시할지, 빠진 값을 채울지, 또는 이 특성을 넣은 모델과 제외한 모델을 따로 훈련시킬 것인지 결정해야한다.

1.5.4 관련 없는 특성

성공적인 머신러닝 프로젝트를 위해 훈련에 사용할 좋은 특성을 찾는다. ➡️ 특성 공학

  • 특성 선택 : 가지고 있는 특성 중에서 훈련에 가장 유용한 특성을 선택한다.
  • 특성 추출 : 특성을 결합하여 더 유용한 특성을 만든다. (차원 축소 알고리즘)
  • 새로운 데이터를 수집해 새 특성을 만든다.

1.5.5 훈련 데이터 과대적합

"과도하게 일반화를 하여 기계도 똑같은 함정에 빠진 경우"

훈련 데이터에 있는 잡음의 양에 비해 모델이 너무 복잡할 때 일어난다. 해결방법은 아래와 같다.

  • 파라미터 수가 적은 모델을 선택하거나, 훈련 데이터에 있는 특성 수를 줄이거나, 모델에 제약을 가하여 단순화시킨다.
  • 훈련 데이터를 더 많이 모은다.
  • 훈련 데이터의 잡음을 줄인다.

규제 : 과대적합의 위험을 감소시키기 위해 모델에 제약을 가하는 것
하이퍼 파라미터 : 학습하는 동안 적용할 규제의 양을 결정한다.

1.5.6 훈련 데이터 과소적합

"모델이 너무 단순해서 데이터의 내재된 구조를 학습하지 못할 때"

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

1.5.7 한걸음 물러서서

  • 머신러닝은 명시적인 규칙을 코딩하지 않고 기계까 데이러토부터 학습하여 어떤 작업을 더 잘하도록 만드는 것이다.
  • 여러 종류의 머신러닝 시스템이 있다. 지도 학습과 비지도 학습, 배치 학습과 온라인 학습, 사례 기반 하ㅏㄱ습과 모델 기반 학습 등이다.
  • 머신러닝 프로젝트에서는 훈련 세트에 데이터를 모아 학습 알고리즘에 주입한다. 학습 알고리즘이 모델 기반이면 훈련 세트에 모델을 맞추기 위해 모델 파라미터를 조정하고, 새로운 데이터에서도 좋은 예측을 만들 거라 기대한다. 알고리즘이 사례기반이면 샘플을 기억하는 것이 학습이고 유사도 측정을 사용하여 학습한 샘플과 새로운 샘플을 비교하는 식으로 새로운 샘플에 일반화한다.
  • 훈련 세트가 너무 작거나, 대표성이 없는 데이터이거나, 잡음이 많고 관련 없는 특성으로 오염되어 있다면 시스템이 잘 작동하지 않는다. 마지막으로, 모델이 너무 단순하거나 너무 복잡하지 않아야 한다.

1.6 테스트와 검증

"모델이 얼마나 잘 일반화될지 아는 유일한 방법"

훈련 데이터를 훈련 세트테스트 세트 두 개로 나눈다. 훈련 세트를 사용하여 모델을 훈련하고 테스트 세트를 사용하여 모델을 테스트한다.
새로운 샘플에 대한 오류 비율을 일반화 오차(또는 외부 샘플 오차)라고 하며, 테스트 세트에서 모델을 평가함으로써 이 오차에 대한 추정값을 얻는다.

1.6.1 하이퍼파라미터 튜닝과 모델 선택

모델 평가는 그냥 테스트 세트를 사용하면 된다.
홀드아웃 검증을 통해 훈련 세트의 일부를 떼어내어 여러 후보 모델을 평가하고 가장 좋은 하나를 선택한다. 이 새로운 홀드 아웃 세트를 검증 세트라 부른다. (개발 세트 또는 데브 세트라고도 한다.)

  • 줄어든 훈련 세트에서 다양한 하이퍼파라미터 값을 가진 여러 모델을 훈련한다.
  • 검증 세트에서 가장 높은 성능을 내는 모델을 선택한다.
  • 홀드아웃 검증 과정이 끝나면 이 최선의 모델을 전체 훈련 세트에서 다시 훈련하여 최종 모델을 만든다.
  • 최종 모델을 테스트 세트에서 평가하여 일반화 오차를 추정한다.
  • 검증 세트를 여러개를 사용해 반복적인 교차 검증을 수행한다.
    • 검증 세트마다 나머지 데이터에서 훈련한 모델을 해당 검증 세트에서 평가한다. ➡️ 모든 모델의 평가를 평균하면 훨씬 정확한 성능을 측정할 수 있다.

데이터 불일치

"쉽게 많은 양의 훈련 데이터를 얻을 수 있지만 이 데이터가 실제 제품에 사용될 데이터를 완벽하게 대표하지 못하는 경우"

훈련-개발 세트: 훈련 사진의 일부를 떼어내어 또 다른 세트를 만드는 것

모델을 규제하거나 더 많은 훈련 데이터를 모으거나 훈련 데이터 정제를 시도해봐야한다.

profile
원하는 만큼만

0개의 댓글