2015.07.14

개발자들을 위한 성공적인 머신러닝의 10가지 핵심 요소

Alexander Gray | ITWorld

머신 러닝이 데이터 깊숙이 묻혀 있는 패턴을 발견해준다는 점에서 애플리케이션의 성능을 높이고, 사용자의 수요에 더욱 민감하게 만들 수 있다는 잠재력이 있다. 제대로 고안한 알고리즘을 통해 인간의 사고와 분석적 한계를 뛰어넘어 엄청난 양의 이질적인 데이터로부터 가치를 뽑아낼 수 있다. 머신러닝은 개발자가 비즈니스에 필수적인 분석을 그 어떤 애플리케이션에도 적용하고, 고객 경험을 높이거나 제품 추천을 제공하고, 더욱 개인화된 콘텐츠를 제공하는 것까지 달성하게 해준다.

아마존과 마이크로소프트와 같은 클라우드 제공업체들은 개발자가 머신러닝을 손쉽게 통합할 수 있는 클라우드 기반의 솔루션을 제공함으로써 최근 화제를 불러일으켰다. 무엇인가 굉장해 보이기는 하나, 개발자들의 주의가 필요해 보인다.

클라우드 기반의 머신러닝 도구는 개발자가 머신러닝을 활용하여 참신한 기능을 구현할 수 있도록 한다. 하지만 이런 도구를 적절하게 활용하지 않으면 형편없는 결과로 사용자에게 좌절감을 줄 수 있다. 마이크로소프트의 나이 감지 머신러닝 도구를 시험해본 사람이라면 알겠지만, 사용 편의성이 뛰어난 만큼 중대한 정확도 문제가 대두한 바 있으며, 신뢰하거나 중요한 의사를 결정할 때 참조할 수 없는 경우도 많다.

머신 러닝을 자신의 애플리케이션에 도입하려는 개발자는 성공을 위한 일부 핵심 요소를 염두해야 한다.

1. 알고리즘의 데이터가 많으면 더욱 정확해진다. 따라서 가능하다면 부차 표본 추출은 피한다.

머신러닝 이론에는 예측 오차에 대한 매우 직관적인 특성이 있다. 쉽게 말해서 머신러닝 모델과 (이론상 최고의 오류를 달성하는) 최적 예측변수 사이의 예측 오차의 공백은 세 부분으로 분류할 수 있다.

1. 모델을 위한 적절한 기능적인 형태가 없기 때문에 발생하는 오차
2. 모델을 위한 최적의 파라미터가 없기 때문에 발생하는 오차
3. 모델에 충분한 데이터를 제공하지 않기 때문에 발생하는 오차

훈련 데이터가 제한된 경우 문제를 위해 필요한 모델 복잡성을 뒷받침하지 못할 수 있다. 통계의 기능적 법칙을 통해 우리는 가능하다면 부차 표본이 아닌, 우리가 가진 모든 데이터를 이용해야 한다.

2. 주어진 문제에 가장 적절한 머신러닝 학습법을 선택하는 것이 핵심이며, 이는 성공가 실패를 결정하기도 한다.
예를 들어, 정확도가 높은 GBT(Gradient Boosting Tree)는 업계 실무자들이 널리 활용하고 있는 인기 감독 학습 알고리즘이다. 하지만 그 높은 인기에도 불구하고 모든 문제를 위한 알고리즘으로써 맹목적으로 취급해서는 안 된다. 대신에 항상 가장 정확한 결과를 위해 데이터의 특성에 가장 적합한 알고리즘을 항상 사용해야 한다.

이 개념을 입증하기 위해 GBT와 선형 SVM(Support Vector Machine) 알고리즘 사이의 정확성을 인기 있는 텍스트 범주와 데이터세트 rcv1에서 비교하는 실험을 해봐도 된다. 실제로 실험해본 결과, 선형 SVM이 이 문제에 대한 오류율 측면에서 GBT보다 우월하다는 사실을 발견했다. 이는 텍스트 영역에서 데이터가 종종 고차원적이기 때문이다. 선형 분류자는 N개의 예시를 N-1 차원으로 완벽하게 분리할 수 있어, 단순한 모델은 이런 데이터에서 제대로 기능하게 된다. 게다가 모델이 간단할수록 한정된 수의 훈련 예제로 파라미터를 학습할 때 문제가 덜 발생하여 과적응을 방지하고 정확한 모델을 제공할 수 있다.

한편, GBT는 매우 선형적이며, 더욱 강력한 성능을 자랑하지만, 학습이 더 어렵고 이런 설정에서 과적응의 경향이 더욱 크다. 때로는 정확도가 떨어질 수도 있다.

3. 뛰어난 모델을 얻기 위해서는 방법과 그 방법에 관한 파라미터를 반드시 잘 선택해야 한다.
데이터가 공학자가 아닌 사람들에게는 간단하지 않을 수 있다. 현대의 머신러닝 알고리즘은 변경할 수 있는 부분이 많다. 예를 들어, 인기 있는 GBT 알고리즘 단독으로도 트리(Tree) 크기 제어 방법, 학습률, 행이나 열의 샘플 채취 방법론, 손실 함수, 조직화 옵션 등을 포함하여 최대 12개의 파라미터를 설정할 수 있다. 일반적으로 프로젝트에서는 각 파라미터에 대한 최적값을 찾아 주어진 데이터 세트에 대해 가장 높은 정확도를 얻어야 하는데, 그리 쉬운 일이 아니다. 직관과 경험이 도움되긴 하지만, 데이터 공학자는 최선의 결과를 위해 다수의 모델을 훈련하면서 교차 검증 점수를 파악하고, 다음에 시도할 파라미터를 결정하는 일을 고민해야 할 것이다.

4. 머신러닝 모델이 데이터와 마찬가지일 수도 있다. 부적절한 데이터 수집과 청소로 일반화가 가능한 예측 가능한 머신러닝 모델을 구축하는 능력이 저하될 수 있다.
주제와 관련된 전문가와 데이터를 신중하게 검토하여 데이터와 그 이면의 생성 프로세스에 대한 통찰력을 얻는 것이 좋다. 종종 이 과정으로 기록, 기능, 값, 샘플 채취 등과 관련된 데이터 품질 문제를 식별할 수 있다.



2015.07.14

개발자들을 위한 성공적인 머신러닝의 10가지 핵심 요소

Alexander Gray | ITWorld

머신 러닝이 데이터 깊숙이 묻혀 있는 패턴을 발견해준다는 점에서 애플리케이션의 성능을 높이고, 사용자의 수요에 더욱 민감하게 만들 수 있다는 잠재력이 있다. 제대로 고안한 알고리즘을 통해 인간의 사고와 분석적 한계를 뛰어넘어 엄청난 양의 이질적인 데이터로부터 가치를 뽑아낼 수 있다. 머신러닝은 개발자가 비즈니스에 필수적인 분석을 그 어떤 애플리케이션에도 적용하고, 고객 경험을 높이거나 제품 추천을 제공하고, 더욱 개인화된 콘텐츠를 제공하는 것까지 달성하게 해준다.

아마존과 마이크로소프트와 같은 클라우드 제공업체들은 개발자가 머신러닝을 손쉽게 통합할 수 있는 클라우드 기반의 솔루션을 제공함으로써 최근 화제를 불러일으켰다. 무엇인가 굉장해 보이기는 하나, 개발자들의 주의가 필요해 보인다.

클라우드 기반의 머신러닝 도구는 개발자가 머신러닝을 활용하여 참신한 기능을 구현할 수 있도록 한다. 하지만 이런 도구를 적절하게 활용하지 않으면 형편없는 결과로 사용자에게 좌절감을 줄 수 있다. 마이크로소프트의 나이 감지 머신러닝 도구를 시험해본 사람이라면 알겠지만, 사용 편의성이 뛰어난 만큼 중대한 정확도 문제가 대두한 바 있으며, 신뢰하거나 중요한 의사를 결정할 때 참조할 수 없는 경우도 많다.

머신 러닝을 자신의 애플리케이션에 도입하려는 개발자는 성공을 위한 일부 핵심 요소를 염두해야 한다.

1. 알고리즘의 데이터가 많으면 더욱 정확해진다. 따라서 가능하다면 부차 표본 추출은 피한다.

머신러닝 이론에는 예측 오차에 대한 매우 직관적인 특성이 있다. 쉽게 말해서 머신러닝 모델과 (이론상 최고의 오류를 달성하는) 최적 예측변수 사이의 예측 오차의 공백은 세 부분으로 분류할 수 있다.

1. 모델을 위한 적절한 기능적인 형태가 없기 때문에 발생하는 오차
2. 모델을 위한 최적의 파라미터가 없기 때문에 발생하는 오차
3. 모델에 충분한 데이터를 제공하지 않기 때문에 발생하는 오차

훈련 데이터가 제한된 경우 문제를 위해 필요한 모델 복잡성을 뒷받침하지 못할 수 있다. 통계의 기능적 법칙을 통해 우리는 가능하다면 부차 표본이 아닌, 우리가 가진 모든 데이터를 이용해야 한다.

2. 주어진 문제에 가장 적절한 머신러닝 학습법을 선택하는 것이 핵심이며, 이는 성공가 실패를 결정하기도 한다.
예를 들어, 정확도가 높은 GBT(Gradient Boosting Tree)는 업계 실무자들이 널리 활용하고 있는 인기 감독 학습 알고리즘이다. 하지만 그 높은 인기에도 불구하고 모든 문제를 위한 알고리즘으로써 맹목적으로 취급해서는 안 된다. 대신에 항상 가장 정확한 결과를 위해 데이터의 특성에 가장 적합한 알고리즘을 항상 사용해야 한다.

이 개념을 입증하기 위해 GBT와 선형 SVM(Support Vector Machine) 알고리즘 사이의 정확성을 인기 있는 텍스트 범주와 데이터세트 rcv1에서 비교하는 실험을 해봐도 된다. 실제로 실험해본 결과, 선형 SVM이 이 문제에 대한 오류율 측면에서 GBT보다 우월하다는 사실을 발견했다. 이는 텍스트 영역에서 데이터가 종종 고차원적이기 때문이다. 선형 분류자는 N개의 예시를 N-1 차원으로 완벽하게 분리할 수 있어, 단순한 모델은 이런 데이터에서 제대로 기능하게 된다. 게다가 모델이 간단할수록 한정된 수의 훈련 예제로 파라미터를 학습할 때 문제가 덜 발생하여 과적응을 방지하고 정확한 모델을 제공할 수 있다.

한편, GBT는 매우 선형적이며, 더욱 강력한 성능을 자랑하지만, 학습이 더 어렵고 이런 설정에서 과적응의 경향이 더욱 크다. 때로는 정확도가 떨어질 수도 있다.

3. 뛰어난 모델을 얻기 위해서는 방법과 그 방법에 관한 파라미터를 반드시 잘 선택해야 한다.
데이터가 공학자가 아닌 사람들에게는 간단하지 않을 수 있다. 현대의 머신러닝 알고리즘은 변경할 수 있는 부분이 많다. 예를 들어, 인기 있는 GBT 알고리즘 단독으로도 트리(Tree) 크기 제어 방법, 학습률, 행이나 열의 샘플 채취 방법론, 손실 함수, 조직화 옵션 등을 포함하여 최대 12개의 파라미터를 설정할 수 있다. 일반적으로 프로젝트에서는 각 파라미터에 대한 최적값을 찾아 주어진 데이터 세트에 대해 가장 높은 정확도를 얻어야 하는데, 그리 쉬운 일이 아니다. 직관과 경험이 도움되긴 하지만, 데이터 공학자는 최선의 결과를 위해 다수의 모델을 훈련하면서 교차 검증 점수를 파악하고, 다음에 시도할 파라미터를 결정하는 일을 고민해야 할 것이다.

4. 머신러닝 모델이 데이터와 마찬가지일 수도 있다. 부적절한 데이터 수집과 청소로 일반화가 가능한 예측 가능한 머신러닝 모델을 구축하는 능력이 저하될 수 있다.
주제와 관련된 전문가와 데이터를 신중하게 검토하여 데이터와 그 이면의 생성 프로세스에 대한 통찰력을 얻는 것이 좋다. 종종 이 과정으로 기록, 기능, 값, 샘플 채취 등과 관련된 데이터 품질 문제를 식별할 수 있다.



X