카테고리 없음

[머신러닝]따라해보기

내일을 따라잡다 2023. 11. 6. 20:22
728x90

머신러닝을 배울 때는 인공적으로 만들어진 data set 아닌 실제 데이터로 실험해 보는 것이 좋다.

 

1) 문제정의

우리가 머신러닝을 배울때, 모델을 만드는 것이 최종 목적은 아니다. 문제를 어떻게 구성할지, 어떤 알고리즘을선택할지, 모델평가에 어떤 성능 지표를 사용할지, 모델 튜닝을 위해 얼마나 노력을 투여할지 결정해야 한다. 

 

구역의 중간 주택 가격에 대한 예측을 해볼 것이다.

레이블된 훈련 샘플(구역의 중간 주택 가격)이 있기에 지도 학습 작업을 해야한다. 또한 값을 예측해야 하므로 회귀문제이다. 좀 더 구체적으로 예측에 사용할 특성이 여러개(구역의 인구, 중간 소득 등)이므로 다변량 회귀(multivariate regression)문제이다. 

 

 

*데이터가 너무 크면(맵리듀스 MapReduce 기술을 사용하여) 배치 학습을 여러 서버로 분할하거나, 대신 온라인 학습 기법을 사용할 수 있다.

 

<파이프라인>

데이터 처리 component들이 연속되어 있는 것을 데이터 파이프라인(pipeline)이라고 한다.

머신러닝 시스템은 데이터를 조작하고 변환할 일이 많아 파이프라인을 사용하는 일이 매우 흔하다.

보통 component들은 비동기적으로 동작한다.  component 많은 데이터를 추출해 처리하고  결과를 다른데이터 저장소로 보낸다. 그러면 일정 시간  파이프라인의 다음 component  데이터를 추출해 자신의출력 결과를 만드는 식이다.  component 완전히 독립적이다.  즉, component 사이의 인터페이스는 데이터저장소뿐이다. 이는 시스템을 이해하기 쉽게 만들고,  팀은 각자의 component 집중할  있다. 한component가 다운되더라도 하위 component는 문제가 생긴 component의 마지막 출력을 사용해 평상시와같이 계속 동작할  있다. 그래서 시스템이 매우 견고해진다.

한편 모니터링이 적절히 되지 않으면 고장 난 component를 한동안 모를  있다. 데이터가만들어진지 오래되면 전체 시스템의 성능이 떨어진다.

 

2) 성능 측정 지표 선택

다음 단계는 성능 측정 지표를 선택하는 것이다. 회귀 문제의 전형적인 성능 지표는 평균 제곱근 오차(Root Mean Square Error; RMSE)이다. 오차가 커질 수록 이 값은 더욱 커지므로 예측에 얼마나 많은 오류가 있는지 가늠하게 해준다. 

 

\[ RMSE(\mathbf{X}, h) = \sqrt{\frac{1}{m} \Sigma_{i=0}^m (h(x^{(i)}) - y^{(i)})^2} \]

"평균 제곱근 오차"

 

$m$ : 샘플 수,  $x^{(i)}$ : $i$번째 샘플의 전체 특성값의 벡터, $y^{(i)}$ : 해당 샘플의 기대 출력값, $h$ : 시스템의 예측 함수

 

 

RMSE가 일반적으로 회귀 문제에 선호되는 상능 측정 방법이지만 경우에 따라 다른 함수를 사용할 수도 있다. 예로 이상치로 보이는 구역이 많다고 가정하자. 이 경우에 평균 절대 오차(Mean Absolute Error;MAE)를 고려해볼 수 있다. 

 

\[ MAE(\mathbf{X}, h) = \sqrt{\frac{1}{m} \Sigma_{i=0}^m | h(x^{(i)}) - y^{(i)} | }\]

"평균 절대 오차"

 

3) 가정 검사

 

마지막으로 지금까지 만든 가정을 나열하고 검사해보는 것이 좋다. 이 과정에서 문제를 발견 할 수 있기 때문이다.