IT지식/인공지능

머신러닝 지도학습 프로세스 - 6단계로 정리

매 석 2022. 11. 1. 18:08
반응형

 

1. 지도학습 프로세스란?

- 빅데이터 프로젝트의 일부로, 빅데이터 프로젝트의 데이터 수집 및 이해, 분석 및 모델링, 배포 및 적용 부분을
  모델링하는 사람의 관점에서 좀더 자세히 나눈 것으로 이해할 수 있다.

 

2. 지도학습 프로세스의 단계

1. 데이터 수집

2. 데이터셋 정의

3. 지도학습 기법 선택 및 모델 구축

4. 모델 성능 평가

5. 모델 선택

6. 모델 배포 - 피드백

3. 데이터 수집

- 비즈니스 문제 해결, 인구 문제 해결 등의 목표가 설정됐다면 분석 데이터를 확보해야 한다.
  기관이라면 데이터를 사유 데이터베이스에 저장할 때가 많으며,
  연구자는 연구용 '오픈 데이터'를 사용하기도 한다.
  만약 기관에는 소속돼 있지 않지만, 데이터 분석을 원하면 웹 사이트의 데이터를 DB에 구축할 수도 있다.
  데이터를 수집할 때는 관련 분야에 대한 전문 지식을 최대한 활용해야 한다.
  즉 '도메인 지식'을 통해 데이터와 도메인 지식의 정확한 관계를 이해하여 적절한 행동을 도출할 수 있다.
  데이터의 질도 중요한 요소이다.
  분석용 데이터가 실전 데이터와 비슷한지, 데이터 소스는 믿을 만한지 신경써야 한다.
  또한 데이터가 분석하기 쉬운 형태로 저장돼 있는지 확인해야 한다.

 

4. 데이터셋 정의

- 데이터가 준비된 후에는 용도별로 나눠 저장해야 한다. 이를 '데이터셋 정의'라고 한다.
  데이터셋은 보통 '학습', '검증', '테스트'로 구분한다. 학습 데이터셋은 모델을 학습하는데 사용하고,
  테스트셋은 모델의 일반화 오차를 근사하는데 사용한다. 
  검증 데이터셋은 테스트 데이터셋과 비슷한 개념으로, 검증 오차를 계산해 모델의 성능을 측정하고,
  측정한 모델 성능을 사용해 최종 모델을 선택한다. 특히 검증 데이터셋은 하이퍼파라미터를 결정하는데
  쓰이는 데이터로, 훈련, 검증, 테스트 데이텃세은 보통 6:2:2의 비율러 정하지만, 훈련 테스트셋을 
  가장 큰 비중으로 하면 나머지 데이터셋의 비중을 임의로 변경할 수 있다. 하지만 비율 외에도
  클래스 불균형데이터 부족 문제 등을 고려해야 한다.

 

4-1. 데이터셋 정의 중 발생하는 문제

- 클래스 불균형은 분류 문제에서 발생한다. 분류 문제는 데이터를 어떤 카테고리로 분류할 것인지에 관련된 문제다.
  즉 클래스 불균형 문제는 분류 모델을 학습할 때 학습 데이터셋에 분류해야 하는 클래스가 한쪽으로 치우져
  있는 상황으로, 이런 상황은 데이터가 적은 클래스의 특성을 학습하기 어렵게 한다.
  클래스 불균형을 포착하기 위해서는 각 분류 클래스에 속하는 데이터의 비중을 계산해야 한다.
  데이터가 여러 클래스에 고르게 분포돼 있다면, 그 비율을 유지하면서 무작위로 데이터를 추출해
  데이터셋을 정의하는 '층화 추출법'을 사용하면 된다.
  클래스 불균형이 발생하는 큰 이유는 첫째, 특정 지역이나 특정 집단을 대상으로 설문조사를 진행하여
  편향된 데이터가 수집된 상황이거나, 둘째 처음부터 해당 클래스의 데이터 발생 빈도가 적은 상황이다.
  두 번째의 경우는 희소 클래스의 비율을 그대로 유지하는 테스트셋을 구축하면 희소 클래스의
  분류를 틀렸다고 해도 전체적인 분류 정확도에는 큰 영향을 미치지 않는다.
  이 경우에는 '오버샘플링' 또는 '언더샘플링'이라는 기법을 활용해 학습 데이터셋에서 각 클래스의 
  비중을 비등하게 맞춰 준다.
  위 내용은 '이상치 탐지'분야와 연관돼 있는데, 클래스 분균형이 심한 상황에서의 데이터셋 정의,
  모델 성능 평가 그리고 다양한 상황에 알맞은 알고리즘 개발 등을 중점적으로 연구하는 분야다.

 

- 데이터셋 정의 과정에서 또 다른 문제는 데이터 부족 문제이다.
  데이터셋을 전통적인 방법에 따라 6:2:2로 정의하면 실제 학습에 사용되는 데이터는 60%정도이다.
  수집한 데이터가 적다면 학습에 매우 적은 양의 데이터만 사용하게 되고, 이는 모델 학습을 방해하는 요소가 될 수 있다.
  이럴 때는 '리샘플링'이라는 기법을 사용한다. 리샘플링은 주어진 데이터셋의 일부를 여러 번 다시 추출해
  작은 데이터셋을 여러 개 만들고, 이를 새로 수집한 데이터라고 간주해 사용하는 것을 말한다.
  이 예시로 교차검증이 있다. 교차검증은 테스트 데이터셋을 제외한 데이터셋을 여러 개의 부분 집합으로
  분할한 후 각 부분 집합이 학습 데이터셋과 검증 데이터셋 모두에 사용될 수 있도록 학습과 모델 성능 평가를
  여러 번 진행한다. 최종 모델 성능은 각 검증 데이터셋에서 측정한 성능 지표의 평균으로 측정하는데, 이를
  'k-겹 교차검증'이라 부른다. 이외에도 교차검증은 모델 성능 평가 시 일반화 오차를 더 잘 추정할 수 있다.

k-겹 교차 검증

+ 시계열 데이터를 다룰 때는 학습 데이터셋이 검증 데이터셋보다 과거의 데이터여야 한다.
   학습 데이터셋이 미래이면 학습 데이터셋에 검증 데이터셋의 정보가 포함될 수 있기 때문이다.
   즉, 검증 데이터셋의 정보를 모델에 미리 반영하는 것과 같은 효과가 있으므로 일반화 오차를 제대로 
   측정할 수 없게 된다. 따라서 시계열 데이터를 학습에 사용할 때는 데이터셋을 시간 순서로 정의해야 한다.

 

5. 지도학습 기법 선택 및 모델 구축

- 지도학습 기법을 선택할 때는 데이터의 특성과 도메인 지식, 풀고자 하는 문제 등을 고려해야 한다.
  선택 후 기법을 사용해 모델을 만들어야 한다. 모델이 데이터를 얼마나 잘 표현하는지를 나타내는 
  하나의 '손실함수'로 정의하고, 이 값을 최적화하는 것이다. 최적화가 끝나면 모델 성능 평가를 하게 된다.
  작은 손실함수를 갖는 모델은 손실함수의 값이 작아지는 방향으로 학습하기에 데이터를 잘 이해했다고
  생각할 수 있다. 따라서 학습 오차를 수치적으로 나타낼 때 손실함수 값을 사용하기도 한다.
  지도학습 모델 구축은 모수 추정외에도 '하이퍼파라미터'라는 모델의 설정 값이 있어서
  그 값을 모델 학습 전에 정해야 한다. 하이퍼파라미터 값은 학습 과정 중에도 바뀌지 않는다.

 

6. 모델 성능 평가

- 통계 방법에도 샘플 밖 데이터의 모델 성능을 평가하는 'AIC', 'BIC' 등이 있지만, 빅데이터 시대의
  지도학습 모델을 평가하기 위해서는 다른 지표를 사용할 수 있다.
  일반화 오차, 테스트 오차, 학습 오차 등의 개념을 통해 모델의 성능을 평가한다.
  예측 모델의 성능은 모델의 출력값과 그 출력값이 원래 예측해야 하는 값의 차이를 활용하는 것이 직관적이다.
  오차를 나타내는 데는 여러 가지 방법이 있고, 상황에 따라 'MSE', 'RMSE', 'MAE' 등과 같은 여러 지표를 사용한다.
  이런 지표는 실제 값과 모델이 예측한 값의 차이를 기반으로 한 것이다.
  분류 모델은 보통 '정오분류표'를 사용해 성능을 평가한다.
  정유분류표는 데이터의 실제 클래스와 모델이 예측한 데이터 클래스를 동시에 표현하는 방법으로,
  2차원 테이블을 사용한다. 분류 모델은 데이터가 각 클래스에 해당할 가능성이나 확률을 반환하도록 설계되는데,
  미리 지정한 '컷오프' 또는 '역치'의 초과 여부에 따라 클래스를 분류한다.
  정오분류표에 도출할 수 있는 일반적인 성능 평가 지표는 '정확도'이다.
  모든 클래스가 중요하다면 주로 성능 지표를 정확도로 선택하고, 특정 클래스가 더 중요하다면 클래스에 따라,
  '정밀도', '재현율', '특이성', 'F1 점수', 'AUROC' 등과 같은 지표를 사용한다.

출처 : KR101563406B1 - 하둡 기반의 대용량 불균형 데이터 분류분석 시스템 및 방법 - Google Patents

 

7. 모델 선택

- 모델 구축에서 모수 추정을 제외한, 지도학습 기법 선택과 하이퍼파라미터 선택을 포함하는 과정으로,
  지도학습 기법과 하이퍼파라미터의 조합 중 가장 적절한 것을 고르는 과정이다.
  학습 데이터셋과 테스트 데이터셋 이외의 검증 데이터셋을 사용해 모델을 선택한다.
  좀 더 정확하게는 적절한 기법과 하이퍼파라미터의 조합을 찾기 위해 검증 데이터셋에서 평가한 검증 오차를 사용한다.
  테스트 데이터셋은 모델의 일반화 오차를 근사하기 위해서만 사용하기에 최종 성능 평가 전에는
  모델이 테스트 데이터셋을 학습해서는 안 된다. 최종 모델이 만들어지기 전 단계인 모델 선택 과정 또한
  테스트 데이터셋의 영향을 받으면 안 되는 것이다.
  일반적으로 모든 기법과 하이퍼파라미터의 조합에 대해 검증 오차를 측정하는 식으로 비교하는 것은 비효율적이다.
  그래서 현업에서는 도메인 지식을 이용해 지도학습 기법을 선택하고, 하이퍼파라미터 선택은 탐색 알고리즘을 사용한다.
  하이퍼파라미터 탐색 기법에는 '그리드 서치', '랜덤 서치', '베이지만 최적화' 등이 있다.
  그리드 서치는 가능한 범위에서 하이퍼파라미터 값을 일정한 간격으로 분할해 탐색하는 방법,
  랜덤 서치는 무작위로 하이퍼파라미터 값을 찾는 방법을 말한다.
  베이지안 최적화는 특정 하이퍼퍼라미터 값이 최적일 확률을 베이지안 방식으로 계산해
  최적의 하이퍼파라미터 값을 체계적으로 탐색하는 것을 말한다.

출처 : 그리드 서치를 이용한 하이퍼파라미터 튜닝 (tistory.com)
출처 : [DL] Hyperparameter Search : 네이버 블로그 (naver.com)

8. 모델 배포 - 피드백

- 최종적으로 모델 선택과 구축을 마쳤다면, 해당 모델을 배포해 실제 데이터를 처리하게 해야 한다.
  모델 배포 이후에는 해당 모델이 실제 데이터를 받아 어떤 성능을 내고 있는지 지속적으로 확인하고,
  그 결과에 따라 기존의 모델을 수정해야 한다.
  배포한 모델을 꾸준히 관리하면 모델의 질을 향상할 수 있다.
  기존 모델 학습에 사용된 데이터는 한정적이므로 실제 데이터 생성 분포의 정보를 충분히
  담고 있지 못할 수 있고, 실제 데이터가 쌓일수록 모델의 성능을 향상할 수 있는 것이다.
  또한 배포한 모델이 더 이상 유효하지 않을 수 있기에 꾸준한 관리가 필요하다.
  데이터의 분포는 시간의 변화에 따라 바뀔 수 있는데, 이렇게 시간 변화에 따라 데이터 분포가 달라지는 것을
  '시간 일관성'의 부재가 발생했다 또는 '개념 변화'가 일어났다. 라고 표현한다.
  이런 데이터 분포의 변화는 도메인 지식으로 쉽게 인지할 수 있지만, 과학적인 방법으로는
  '시간 일관성 데이터셋'을 정의해 모델을 검증하기도 한다.
  이렇게 변화하는 데이터를 다룰 때는 모델의 성능을 정기적으로 점검해야 하고, 성능 저하가 관측되면
  과거의 데이터는 제외하고 새로 수집된 데이터만으로 모델을 다시 구축해야 한다.
  이외에도 비즈니스 문제가 바뀌거나 현실적인 시스템 제약의 변화 등 모델 구축 사이클을 다시 시작하는
  이유는 다양하다. 그리고 각 상황에 따라 다시 사이클의 첫 절차로 돌아가 지도학습 프로세스를 반복하면 된다.