데이터 과학과 기계 학습이 점점 더 대중화되고 있습니다.
이 분야에 진출하는 사람들의 수가 나날이 늘어나고 있습니다.
이는 많은 데이터 과학자가 첫 번째 기계 학습 모델을 구축할 때 풍부한 경험이 없기 때문에 실수가 발생하기 쉽다는 것을 의미합니다.
다음은 기계 학습 솔루션에서 초보자가 저지르는 가장 흔한 실수 중 일부입니다.
필요한 곳에 데이터 정규화를 사용하지 않음
초심자에게는 모델에 특성을 추가하고 모델이 예측을 제공할 때까지 기다리는 것이 당연한 것처럼 보일 수 있습니다.
그러나 어떤 경우에는 매우 중요한 단계를 놓쳤기 때문에 결과가 실망스러울 수도 있습니다.
선형 회귀, 고전적인 신경망 등을 포함한 특정 유형의 모델에는 데이터 정규화가 필요합니다. 이러한 유형의 모델은 학습된 가중치를 곱한 특성 값을 사용합니다. 특성이 정규화되지 않으면 한 특성의 가능한 값 범위가 다른 특성의 가능한 값 범위와 매우 다른 경우가 발생할 수 있습니다.
한 특성의 값이 [0, 0.001] 범위에 있고 다른 특성의 값이 [100000, 200000] 범위에 있다고 가정해 보겠습니다. 두 가지 기능이 똑같이 중요한 모델의 경우 첫 번째 기능의 가중치는 두 번째 기능 가중치의 100,000,000배가 됩니다. 무게가 너무 크면 모델에 심각한 문제가 발생할 수 있습니다. 예를 들어, 몇 가지 이상값이 있습니다.
또한 가중치가 크다는 것은 해당 기능이 중요하다는 의미일 수도 있고 단순히 값이 작다는 의미일 수도 있기 때문에 다양한 기능의 중요도를 추정하는 것이 매우 어려울 수 있습니다.
정규화 후에는 모든 특성이 동일한 값 범위, 일반적으로 [0, 1] 또는 [-1, 1]에 있습니다. 이 경우 가중치는 비슷한 범위에 있으며 각 기능의 실제 중요성과 밀접하게 일치합니다.
전반적으로 필요한 곳에 데이터 정규화를 사용하면 더 좋고 더 정확한 예측이 생성됩니다.
어떤 사람들은 기능을 많이 추가할수록 모델이 자동으로 가장 좋은 기능을 선택해서 사용한다고 생각할 수도 있습니다.
실제로는 그렇지 않습니다. 대부분의 경우 신중하게 설계되고 선택된 기능을 갖춘 모델은 10배 더 많은 기능을 갖춘 유사한 모델보다 훨씬 뛰어난 성능을 발휘합니다.
모델에 기능이 많을수록 과적합 위험이 커집니다. 완전히 무작위인 데이터에서도 모델은 때로는 약하고 때로는 강한 일부 신호를 찾을 수 있습니다.
물론 랜덤 노이즈에는 실제 신호가 없습니다. 그러나 노이즈 열이 충분하면 모델이 감지된 오류 신호를 기반으로 일부를 사용할 수 있습니다. 이런 일이 발생하면 부분적으로 무작위 노이즈를 기반으로 하기 때문에 모델 예측의 품질이 저하됩니다.
이 경우 도움이 될 수 있는 특징 선택을 위한 다양한 기술이 존재한다는 것은 사실입니다. 그러나 이 기사에서는 이에 대해 논의하지 않습니다.
가장 중요한 점은 보유한 모든 기능을 설명하고 이 기능이 모델에 도움이 되는 이유를 이해할 수 있어야 한다는 것입니다.
나무 모델이 인기 있는 주된 이유는 강도뿐 아니라 사용하기 쉽기 때문입니다.
그러나 이것이 항상 시도되고 사실인 것은 아닙니다. 어떤 경우에는 트리 기반 모델을 사용하는 것이 실수일 수도 있습니다.
트리 모델에는 추론 기능이 없습니다. 이러한 모델은 훈련 데이터에서 볼 수 있는 최대값보다 큰 예측값을 제공하지 않습니다. 또한 훈련 시 최소값보다 작은 예측을 출력하지 않습니다.
그러나 일부 작업에서는 외삽 능력이 중요한 역할을 할 수 있습니다. 예를 들어, 이 모델을 사용하여 주가를 예측한다면 미래의 주가는 이전보다 더 높아질 가능성이 있습니다. 따라서 이 경우 트리 기반 모델은 예측이 사상 최고 가격에 가까운 수준으로 제한되므로 더 이상 적합하지 않습니다.
이 문제를 해결하는 방법은 무엇입니까?
사실 모든 길은 로마로 통해요!
한 가지 옵션은 값을 직접 예측하는 대신 변화나 차이를 예측하는 것입니다.
또 다른 솔루션은 선형 회귀 또는 외삽이 가능한 신경망과 같은 작업에 다른 모델 유형을 사용하는 것입니다.
모든 사람은 데이터 정규화의 중요성을 잘 알고 있어야 합니다. 그러나 작업마다 다른 정규화 방법이 필요합니다. 잘못된 유형을 누르면 얻는 것보다 잃는 것이 더 많습니다!
트리 기반 모델에는 특성 원시 값이 승수로 사용되지 않고 이상값이 영향을 주지 않기 때문에 데이터 정규화가 필요하지 않습니다.
신경망에는 정규화가 필요하지 않을 수도 있습니다. 예를 들어 네트워크에 내부적으로 정규화를 처리하는 레이어(예: Keras 라이브러리의 BatchNormalization)가 이미 포함되어 있는 경우입니다.
어떤 경우에는 선형 회귀에 데이터 정규화가 필요하지 않을 수도 있습니다. 이는 모든 특성이 비슷한 값 범위 내에 있고 동일한 의미를 갖는다는 것을 의미합니다. 예를 들어 모델이 시계열 데이터에 적용되고 모든 기능이 동일한 매개변수의 과거 값인 경우입니다.
실제로 불필요한 데이터 정규화를 적용한다고 해서 모델이 반드시 손상되는 것은 아닙니다. 대부분의 경우 이러한 경우의 결과는 건너뛴 정규화와 매우 유사합니다. 그러나 불필요한 데이터 변환을 추가로 수행하면 솔루션이 복잡해지고 일부 오류가 발생할 위험이 높아집니다.
그래서 사용하든 말든 연습을 통해 진실을 알 수 있습니다!
데이터 유출은 생각보다 쉽습니다.
다음 코드 조각을 참조하세요.
사실 "sum_feature"와 "diff_feature" 기능 모두 올바르지 않습니다.
학습/테스트 세트로 분할된 후 학습 데이터가 있는 부분에 테스트 행의 정보 중 일부가 포함되므로 정보가 "유출"됩니다. 이렇게 하면 더 나은 검증 결과를 얻을 수 있지만 실제 데이터 모델에 적용하면 성능이 급락합니다.
올바른 접근 방식은 학습/테스트 분할을 먼저 수행하는 것입니다. 그래야만 특징 생성 기능이 적용됩니다. 일반적으로 훈련 세트와 테스트 세트를 별도로 처리하는 것은 좋은 기능 엔지니어링 패턴입니다.
어떤 경우에는 둘 사이에 일부 정보가 전달되어야 합니다. 예를 들어 훈련 세트에 사용되어 훈련된 것과 동일한 StandardScaler를 테스트 세트에서 사용하기를 원할 수 있습니다. 하지만 이는 개별 사례일 뿐이므로 구체적인 문제를 자세히 분석해야 합니다!
실수로부터 배우는 것이 좋습니다. 하지만 다른 사람의 실수로부터 배우는 것이 가장 좋습니다. 이 기사에 제공된 실수의 예가 도움이 되기를 바랍니다.
위 내용은 머신러닝은 하늘이 내린 축복입니다! 데이터 과학자 및 Kaggle 마스터가 'ML 함정 방지 가이드' 출시의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!