알 수 없는 환경에서 기계 학습 모델이 일반화되도록 하기 위한 한 가지 시도는 데이터를 분할하는 것입니다. 이는 3방향(학습, 테스트, 평가) 분할부터 교차 검증된 k-분할까지 다양한 방법으로 달성할 수 있습니다. 기본 원칙은 데이터 하위 집합에 대해 기계 학습 모델을 훈련하고 이를 알 수 없는 데이터에 대해 평가함으로써 훈련 중에 모델이 과소적합되었는지 과대적합되었는지 더 잘 추론할 수 있다는 것입니다.
대부분의 작업에서는 간단한 3방향이면 충분합니다. 실제 생산에서 분할 방법에는 일반화 문제를 보장하기 위해 더 복잡한 방법이 필요한 경우가 많습니다. 이러한 분할은 일반적인 분할 방법의 기반이 되는 데이터 구조가 아닌 실제 데이터에서 파생되기 때문에 더 복잡합니다. 이 기사에서는 기계 학습 개발에서 데이터를 분할하는 몇 가지 색다른 방법과 그 이유를 설명하려고 합니다.
단순화를 위해 표 형식을 사용하여 간단한 다변량 시계열 데이터세트를 표현하겠습니다. 데이터는 숫자 특성 3개, 범주형 특성 1개, 타임스탬프 특성 1개로 구성됩니다. 시각화는 다음과 같습니다.
이러한 유형의 데이터 세트는 기계 학습에 대한 많은 사용 사례와 업계에서 일반적입니다. 구체적인 예는 공장 현장의 여러 센서에서 전송되는 시간 스트리밍 데이터입니다. 범주형 변수는 기계의 ID이고, 숫자 특징은 센서가 기록하는 정보(예: 압력, 온도 등)이며, 타임스탬프는 데이터가 전송되어 데이터베이스에 기록된 시간입니다.
당신이 데이터 엔지니어링 부서로부터 csv 파일 형태로 이 데이터 세트를 받았고 분류 또는 회귀 모델을 작성하는 임무를 받았다고 가정해 보겠습니다. 이 경우 레이블은 모든 기능 또는 추가 열이 될 수 있습니다. 가장 먼저 해야 할 일은 데이터를 의미 있는 하위 집합으로 분할하는 것입니다.
편의상 간단히 훈련 세트와 테스트 세트로 나눌 수 있습니다. 즉시 문제가 발생합니다. 여기서는 데이터의 간단한 분할이 작동하지 않습니다. 데이터는 시간별로 인덱싱된 여러 센서 데이터 스트림으로 구성됩니다. 그렇다면 순서가 유지되고 후속 기계 학습 모델이 잘 일반화되도록 데이터를 분할하는 방법은 무엇입니까?
우리가 할 수 있는 가장 간단한 변환은 범주형 클래스에 대한 각 데이터를 표현하는 것입니다(실행 중). 예를 들어 각 머신의 데이터 시각화). 그러면 다음과 같은 결과가 나옵니다.
수평 분할
그룹화를 사용하면 분할 문제가 좀 더 쉬워지며 가정에 따라 많은 것이 달라집니다. 다음과 같이 질문할 수 있습니다. 한 그룹에서 훈련된 기계 학습 모델이 다른 그룹에 어떻게 일반화됩니까? 즉, class_1, class_2 및 class_3 시간 흐름에서 훈련된 경우 모델은 class_4 및 class_5 시간 흐름에서 어떻게 수행됩니까? 다음은 이 분할을 시각화한 것입니다.
위의 분할 방법은 제가 수평 분할이라고 부르는 것입니다. 대부분의 기계 학습 라이브러리에서 이러한 분할은 단순히 범주형 기능별로 그룹화하고 범주에 따라 분할함으로써 쉽게 달성됩니다. 이 분할을 통해 훈련함으로써 모델은 알려지지 않은 그룹에 걸쳐 일반화되는 정보를 수집했습니다.
분할은 시간을 분할 자체의 기준으로 사용하지 않는다는 점에 주목할 가치가 있습니다. 그러나 데이터에서 이러한 관계를 유지하기 위해 각 시간 스트림을 시간 순서로 분할할 수도 있다고 가정할 수 있습니다. 이는 다음 분할로 이어집니다.
하지만 시간 자체를 확장하려면 어떻게 해야 할까요? 대부분의 시계열 모델링에서 데이터를 분할하는 일반적인 방법은 과거와 미래입니다. 즉, 훈련 세트의 과거 데이터와 평가 세트의 데이터를 비교합니다. 이 경우의 가설은 다음과 같습니다. 과거 데이터의 각 그룹에 대해 훈련된 기계 학습 모델이 미래 데이터의 각 그룹에 어떻게 일반화됩니까? 이 질문은 수직 분할이라는 항목으로 답할 수 있습니다.
이 분할은 성공적인 훈련입니다. 모델이 본 시간 흐름에서 패턴을 추출하고 미래 행동에 대해 정확하게 예측할 수 있음을 보여줍니다. 그러나 이것이 그 자체로 모델이 다른 그룹의 다른 시간 흐름에 잘 일반화된다는 것을 나타내지는 않습니다.
물론 이제 여러 시간 스트림을 개별적으로 정렬해야 하므로 여전히 그룹화해야 합니다. 하지만 이번에는 그룹을 교차하는 대신 과거의 각 그룹에서 샘플을 추출하여 훈련에 넣고 그에 따라 미래 그룹을 평가에 넣습니다. 이 이상적인 예에서 모든 시간 스트림은 동일한 길이를 갖습니다. 즉, 각 시간 스트림은 정확히 동일한 수의 데이터 포인트를 갖습니다. 그러나 실제 세계에서는 그렇지 않을 수 있습니다. 따라서 분할을 위해 각 그룹을 색인화하는 시스템이 필요합니다.
수평 분할과 수직 분할의 제약 조건 하에서 일반화할 수 있는 모델을 생성할 수 있는지 궁금할 것입니다. 이 경우 가설은 다음과 같습니다. 일부 과거 데이터 그룹에 대해 훈련된 기계 학습 모델이 이러한 그룹의 미래 데이터와 다른 그룹의 모든 데이터에 어떻게 일반화됩니까? 이 하이브리드 분할의 시각화는 다음과 같습니다.
물론, 모델 훈련이 성공한다면 이 모델은 확실히 다른 모델보다 현실 세계에서 더 강력할 것입니다. 일부 그룹의 학습 패턴을 확인했음을 보여줄 수 있을 뿐만 아니라 그룹 전체에 일반화되는 정보를 획득했음을 보여줄 수도 있습니다. 이는 향후 공장에 유사한 기계를 더 추가할 경우 유용할 수 있습니다.
수평 분할과 수직 분할의 개념은 여러 차원으로 일반화될 수 있습니다. 예를 들어, 데이터에서 하위 그룹을 더 분리하고 하위 그룹별로 정렬하기 위해 하나가 아닌 두 개의 범주형 기능을 기반으로 그룹화할 수 있습니다. 중간에 샘플 크기가 작은 그룹을 필터링하는 복잡한 로직과 도메인과 관련된 기타 비즈니스 수준 로직이 있을 수도 있습니다.
이 가상의 예는 생성할 수 있는 다양한 기계 학습 분할의 무한한 가능성을 보여줍니다. 모델을 평가할 때 기계 학습의 공정성을 보장하는 것이 중요한 것처럼 데이터 세트 분할과 다운스트림 모델 편향에 대한 결과를 고려하는 데 충분한 시간을 투자하는 것도 똑같이 중요합니다.
위 내용은 시계열 머신러닝 데이터 세트를 위한 색다른 분할 기술의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!