>기술 주변기기 >일체 포함 >소프트웨어 설계자로서 15년간의 경험 요약: ML 분야 초보자를 위한 5가지 함정

소프트웨어 설계자로서 15년간의 경험 요약: ML 분야 초보자를 위한 5가지 함정

王林
王林앞으로
2023-04-11 19:31:251375검색

데이터 과학과 기계 학습이 점점 더 대중화되고 있으며 이 분야에 종사하는 사람들의 수가 나날이 늘어나고 있습니다. 이는 첫 번째 기계 학습 모델을 구축한 경험이 많지 않은 데이터 과학자가 많다는 것을 의미하며, 여기서 실수가 발생할 수 있습니다.

최근 소프트웨어 설계자이자 데이터 과학자이자 Kaggle 마스터인 Agnis Liukis는 기계 학습에서 가장 흔히 발생하는 초보자 실수에 대한 솔루션에 대해 이야기하여 초보자가 이를 이해하고 피할 수 있도록 하는 기사를 작성했습니다.

소프트웨어 설계자로서 15년간의 경험 요약: ML 분야 초보자를 위한 5가지 함정

Agnis Liukis는 소프트웨어 아키텍처 및 개발 분야에서 15년 이상의 경험을 보유하고 있으며 Java, JavaScript, Spring Boot, React.JS 및 Python과 같은 언어에 능숙합니다. 또한 Liukis는 데이터 과학 및 기계 학습에도 관심이 있으며 Kaggle 대회에 여러 번 참가하여 좋은 결과를 얻었으며 Kaggle 대회 마스터 수준에 도달했습니다.

다음은 기사 내용입니다.

머신러닝 분야에서 이 5가지 함정을 밟아보셨나요?

1. 데이터 정규화는 필요한 곳에 사용되지 않습니다

데이터를 정규화한 다음 특징을 얻어 모델에 입력하면 모델이 예측할 수 있습니다. 그러나 어떤 경우에는 이 간단한 접근 방식의 결과가 매우 중요한 부분을 놓치고 있기 때문에 실망스러울 수도 있습니다.

선형 회귀, 고전적인 신경망 등과 같은 일부 모델 유형에는 데이터 정규화가 필요합니다. 이 유형의 모델은 특성 값을 사용하여 훈련 값의 가중치를 곱합니다. 정규화되지 않은 특성의 경우 한 특성 값의 가능한 범위는 다른 특성 값의 가능한 범위와 다를 수 있습니다.

한 특성의 값이 [0, 0.001] 범위에 있고 다른 특성의 값이 [100000, 200000] 범위에 있다고 가정해 보겠습니다. 두 가지 특성을 똑같이 중요하게 만드는 모델의 경우 첫 번째 특성의 가중치는 두 번째 특성의 가중치보다 1억 배 더 큽니다. 가중치가 너무 크면 일부 이상값이 있는 경우와 같이 모델에 심각한 문제가 발생할 수 있습니다. 또한, 가중치가 크다는 것은 그 특징이 중요하다는 것을 의미할 수도 있지만, 단순히 그 특징의 값이 작다는 것을 의미할 수도 있기 때문에 다양한 특징들의 중요도를 추정하는 것이 어려워진다.

정규화 후 모든 특성의 값은 일반적으로 [0, 1] 또는 [-1, 1]과 같은 동일한 범위에 있습니다. 이 경우 가중치는 비슷한 범위에 있으며 각 기능의 실제 중요도와 밀접하게 일치합니다.

전반적으로 필요한 곳에 데이터 정규화를 사용하면 더 좋고 정확한 예측이 가능합니다.

2. 기능이 많을수록 좋다고 생각하세요

어떤 사람들은 모든 기능을 추가하는 것이 좋은 생각이라고 생각할 수도 있습니다. 모델이 자동으로 최고의 기능을 선택하여 사용한다고 생각할 수도 있습니다. 사실 이 아이디어는 실현되기 어렵다.

모델에 기능이 많을수록 과적합 위험이 커집니다. 완전히 무작위인 데이터에서도 모델은 일부 특징(신호)을 찾을 수 있지만 때로는 더 약하고 때로는 더 강합니다. 물론 랜덤 노이즈에는 실제 신호가 없습니다. 그러나 노이즈가 있는 열이 충분하다면 모델은 감지된 결함 신호를 기반으로 그 중 일부를 사용할 수 있습니다. 이런 일이 발생하면 부분적으로 무작위 노이즈를 기반으로 하기 때문에 모델 예측의 품질이 저하됩니다.

이제 특징 선택을 수행하는 데 도움이 되는 많은 기술이 있습니다. 하지만 가지고 있는 모든 기능과 해당 기능이 모델에 도움이 되는 이유를 설명해야 한다는 점을 기억해야 합니다.

3. 외삽이 필요한 경우 트리 기반 모델을 사용하세요.

트리 기반 모델은 사용하기 쉽고 강력하기 때문에 인기가 있습니다. 그러나 트리 기반 모델을 사용하는 것이 잘못된 경우도 있습니다.

트리 기반 모델은 추정할 수 없으며, 이러한 모델의 예측 값은 훈련 데이터의 최대값보다 클 수 없으며 훈련 중에 최소값보다 작은 예측 값을 출력하지 않습니다.

일부 작업에서는 추정 능력이 매우 중요할 수 있습니다. 예를 들어, 모델이 주가를 예측하는 경우 주가는 미래에 이전보다 더 높아질 수 있습니다. 이 경우 트리 기반 모델은 예측이 역사적 최고 가격을 거의 초과하므로 직접 사용할 수 없습니다.

이 문제에는 여러 가지 해결책이 있습니다. 한 가지 해결책은 값을 직접 예측하는 대신 변화나 차이를 예측하는 것입니다. 또 다른 해결책은 이러한 작업에 다양한 유형의 모델을 사용하는 것입니다. 선형 회귀 또는 신경망은 외삽을 수행할 수 있습니다.

4. 필요하지 않은 곳에 데이터 정규화를 사용하세요

이전 기사에서는 데이터 정규화의 필요성에 대해 설명했지만 트리 기반 모델에는 항상 데이터 정규화가 필요하지 않습니다. Keras 라이브러리의 BatchNormalization 작업과 같이 일부 네트워크에는 이미 내부적으로 정규화 계층이 포함되어 있으므로 신경망에는 명시적인 정규화가 필요하지 않을 수도 있습니다.

경우에 따라 선형 회귀에도 데이터 정규화가 필요하지 않을 수 있습니다. 이는 모든 특성이 이미 비슷한 값 범위에 있고 동일한 의미를 가짐을 의미합니다. 예를 들어 모델이 시계열 데이터에 적용되고 모든 기능이 동일한 매개변수의 과거 값인 경우입니다.

5. 훈련 세트와 검증/테스트 세트 사이의 정보 누출

사람들이 생각하는 것보다 데이터 누출을 일으키는 것이 더 쉽습니다. 다음 코드 조각을 고려하십시오.

소프트웨어 설계자로서 15년간의 경험 요약: ML 분야 초보자를 위한 5가지 함정

데이터 누출의 예

실제로 두 기능(sum_feature 및 diff_feature)이 모두 올바르지 않습니다. 훈련/테스트 세트로 분할한 후 훈련 데이터가 있는 부분에 테스트의 일부 정보가 포함되기 때문에 정보가 유출됩니다. 이로 인해 검증 점수는 높아지지만 실제 데이터 모델에 적용하면 성능이 저하됩니다.

올바른 접근 방식은 먼저 훈련 세트/테스트 세트를 분리한 다음 특성 생성 기능을 적용하는 것입니다. 일반적으로 훈련 세트와 테스트 세트를 별도로 처리하는 것이 좋은 특성 추출 패턴입니다.

어떤 경우에는 둘 사이에 일부 정보를 전달해야 할 수도 있습니다. 예를 들어 테스트 세트와 훈련 세트에 동일한 StandardScaler를 사용하려고 할 수 있습니다.

대체로 실수로부터 배우는 것이 좋으며 위에 제공된 실수의 예가 도움이 되기를 바랍니다.

위 내용은 소프트웨어 설계자로서 15년간의 경험 요약: ML 분야 초보자를 위한 5가지 함정의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 51cto.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제