본문 바로가기
CS/MachineLearning

머신러닝 자동화 시스템 구축

by Diligejy 2022. 12. 7.

p.3

두 가지 이유로 머신러닝 자동화를 배워야 합니다. 

 

첫째, 상용화된 머신러닝 자동화 시스템은 범용적인 목적으로 개발됐기 때문입니다. 즉, 어느 데이터에도 잘 맞도록 설계됐습니다. 이렇나 시스템은 한 기업이 보유한 데이터에 특화돼 있지 않아 만족스러운 성능을 내지 못하거나 꼭 필요한 기능 등이 포함돼 있지 않을 수 있습니다. 물론 앞서 설명한 대로 개인화된 솔루션을 구매할 수도 있으나 적지 않은 비용이 발생합니다.

 

둘째, 머신러닝 자동화를 배우는 과정에서 실전적인 머신러닝 모델 개발 과정을 익힐 수 있기 때문입니다. 즉, 효과적인 머신러닝 자동화 시스템을 구축하려면 다양한 머신러닝 모델이 수학적으로 어떻게 작동하고 학습되는지보다 데이터가 주어졌을 때 어떠한 탐색과 전처리가 필요한지, 어느 종류의 모델과 파라미터를 고려해야 하는지가 더 중요합니다. 이러한 내용은 머신러닝 실무에 필요합니다. 사이킷런 등의 잘 개발된 머신러닝 패키지 덕분에 모델의 작동 및 학습에 관한 이론을 전혀 모르더라도 코드 몇 줄로 손쉽게 머신러닝 모델을 학습할 수 있습니다. 그러나 쉽게 머신러닝 모델을 학습할 수 있다고 해서 좋은 모델을 효율적으로 만들 수 있다는 뜻은 아닙니다. 좋은 모델을 효율적으로 만들려면 데이터가 주어졌을 때 "어느 전처리 방법을 사용해야 하지?", "이 데이터에 대해서는 신경망이 결정 나무보다 더 적합할까?", "신경망의 은닉층은 몇 개가 적절할까?"와 같은 질문에 답할 수 있어야 합니다. 

 

p.11

반드시 짚고 넘어가야 할 점은 지도 학습 모델을 학습하고 사용하는 일련의 과정에서 사용자가 어느 부분에 개입했는가입니다. 사용자가 실제로 한 일은 데이터를 준비하고 모델 f와 비용 함수 L을 선택한 것입니다. 위에서 자세히 설명하지는 않았지만 모델의 옵션이라 할 수 있는 하이퍼파라미터 선택도 사용자가 했을 것입니다. 중요한 점은 모델 학습을 사용자가 직접하지 않았다는 것입니다. theta_hat를 추정하는 방법이 여러 개라면 기껏해야 그 중 하나를 선택했을 것입니다. 다시 말해, 데이터가 준비한 상황에서 모델, 하이퍼파라미터, 비용 함수를 사용자가 선택해준다면 컴퓨터가 스스로 모델을 학습한다고 할 수 있습니다. 따라서 한 데이터에 대해 적합한 모델, 하이퍼파라미터, 비용 함수를 자동으로 선택할 수 있다면 기본적인 모델 학습을 자동화할 수 있습니다.

 

p.16

k-겹 교차 검증 방식으로 모델을 검증하는 과정에서 k개의 모델을 학습하게 되는데, 어느 모델을 사용해야 할까요? 성능이 가장 좋은 모델이라 생각할 수 있겠지만, 그것은 좋은 선택지가 아닐 수 있습니다. 평가 데이터로 사용된 폴드가 단순히 예측하기 쉬워서 성능이 가장 좋다고 평가될 가능성이 있기 때문입니다. 또한, 이처럼 k개의 모델 중 하나를 고른다면 평가 데이터를 버린다는 문제가 해결되지 않습니다. 따라서 최종 결과가 만족스러운 모델에 대해서 전체 데이터를 가지고 재학습하는 것이 보통입니다.

 

p.17

군집화 결과는 다른 비지도 학습과 마찬가지로 어느 결과가 좋은지를 객관적으로 평가할 수 없으며 도메인 지식에 의존해서 평가해야 합니다. 따라서 데이터 사이언티스트보다는 도메인 전문가가 봤을 때 해석이 잘 되거나 새로운 인사이트를 도출할 수 있는 군집화 결과가 좋은 군집화 결과라고 할 수 있습니다. 이렇나 이유로 군집화는 여러 모델을 학습하여 비교한 뒤 가장 좋은 모델을 반환하는 머신러닝 자동화 시스템에 사용하기에 부적합합니다. 많이 쓰이는 알고리즘과 거리 척도 등을 사용해 사용자에게 여러 군집화 결과를 리포트 형태로 제시하는 것이 최선입니다.  

 

p.18

이상 탐지 결과를 해석할 때 주의할 점은 이상이 문제가 있는 샘플이 아니라 다른 샘플과 많이 다른 샘플이라는 것입니다. 마찬가지로 정상은 문제가 없는 샘플이 아니라 다른 샘플과 비슷한 샘플이라는 것입니다. 

 

이상 탐지를 통해 생산하는 제품의 무게를 바탕으로 이상한 제품을 찾아낸 상황을 예로 들어보겠습니다. 일반적인 제품의 무게가 15g에서 20g 사이인데, 이상한 제품의 무게는 12g 이하입니다. 이때 많이 하는 실수가 이상이라고 판단한 제품의 무게가 다른 제품보다 가벼우니 불량이라고 해석하는 것입니다. 물론 이상 샘플이 불량일 수도 있습니다. 그러나 제품의 무게가 양품인지 불량인지와 관련 없다면 어떨까요? 그러면 가벼운 샘플을 불량이라고 간주하기 힘들 것입니다. 이처럼 이상 탐지 결과를 우리가 정확히 알지 못하는 라벨과 연관지어 해석하는 것은 위험하며 반드시 도메인 지식을 활용해야 합니다.

 

이상 탐지 결과는 사용한 이상 탐지 모델(예: Isolation Forest, Local Outlier Factor 등)과 그 하이퍼파라미터에 따라 결정되며 이상 탐지 결과도 객관적으로 평가할 수 없습니다. 따라서 이상 탐지도 군집화와 마찬가지로 머신러닝 자동화 시스템에 사용하기에는 부적합합니다. 여러 개의 이상 탐지 알고리즘을 사용해 공통으로 이상이라고 판단하는 샘플을 제시하는 것이 최선입니다. 

 

p.26

결측치는 값이 없는 것이 정상적인 None과, 값이 있어야 하는데 없는 NaN으로 구분할 수 있습니다. None은 값이 없는 것 자체로 정상적인 값이기에 엄밀한 의미에서 결측이라 보기 힘듭니다. 예를 들어, 설문조사에서 직업을 물어보는 문항에 무직자는 응답할 수 없으므로 자연스레 결측이 발생합니다.

 

None은 제거하거나 추정해야 하는 대상이 아닙니다. 왜냐하면 값이 없는 것이 정상적이기 떄문입니다. 그러나 결측이 포함된 데이터로 머신러닝 모델을 학습할 수 없으므로 None에 새로운 값을 부여해야 합니다. 반면에 NaN은 값이 있어야 하지만 없는 것이므로 제거하거나 원래 값을 추정해야 합니다. 따라서 머신러닝 과제에서 관심 있게 보는 결측치는 NaN이며 이 책에서도 별다른 언급이 없으면 결측치는 NaN을 의미한다고 봐도 무방합니다. 

 

p.29

k-최근접 이웃 모델을 이용한 결측치 추정 방법은 특징 간 강한 상관관계가 있는 데이터에 적용하기에 적절합니다. 이 방법은 결측이 있는 샘플의 가장 가까운 k개 이웃을 바탕으로 결측을 추정합니다. 

 

 

 

댓글