초기 추정치(휴리스틱)를 예측 모델(머신러닝)에 통합하기저는 Blend Search라는 도구를 개발 중입니다. 현재는 잘 작동하지만, 개선할 부분이 있는데 기술적으로 어떻게 구현해야 할지 아직 모르겠습니다.
Blend Search의 기능:
입력은 속성을 가진 구성 요소들의 모음입니다.
>> 구성 행렬 생성
>> 혼합물의 특성을 계산하기 위한 휴리스틱(단순 모델)의 적용
>> 보다 복잡한 모델(현재는 부스팅 트리)을 적용했습니다. 이 모델의 예측 변수는 휴리스틱으로 추정한 블렌드의 속성이며, 출력값 또한 블렌드의 속성입니다.
부스팅 트리의 시각화 자료를 만들었습니다(첨부된 영상 참조).
예측 변수 중 하나(예측 변수 3)는 이미 목표 속성에 대한 초기 추정치(예측값)를 제공합니다. 처음 구상에서는 나머지 두 예측 변수를 이 초기 추정치를 더욱 정밀하게 다듬는 데 사용할 예정이었습니다. 현재 모델은 일관된 예측값을 제공하며, 예측 범위에서 벗어나는 경우는 거의 없습니다.
하지만 실제로는 초기 추정치를 수정하는 것이 아니라, 훈련 세트의 Y 값 평균(부스팅 트리의 기본 절편)을 수정하는 것입니다. 블렌드 서치의 규모를 확장하려면 이 접근 방식은 더 이상 충분히 견고하지 않게 됩니다.
초기 추정치를 수정하여 예측을 할 수 있으면 좋겠습니다. 예를 들어, 부스팅 트리에서 변수 절편 유형을 사용할 수 있으면 정말 좋겠습니다. 어떤 방법이 좋을지 정확히 떠오르지 않지만, 이미 비슷한 기술이 있을 거라고 생각합니다. 좋은 아이디어가 있으시면 알려주시면 감사하겠습니다.
예측 모델링 및 머신 러닝제목: 초기 추정치(휴리스틱)를 예측 모델(머신러닝)에 통합하기안녕하세요 @RikkiTikkiTavi 님 ,
알고리즘 모델링 과정을 완전히 이해했는지는 모르겠지만, 몇 가지 아이디어를 제시해 드릴 수 있을 것 같습니다. 예측 성능을 향상시키는 데에는 두 가지 접근 방식이 있습니다. 하나는 부스팅 기법(예측 편향 감소)이고, 다른 하나는 배깅/모델 평균화 기법(예측 분산 감소)입니다.
- 부스팅 접근법: 목표 속성에 대한 예측 정확도를 향상시키고 편향(예측 평균 응답과 측정 평균 응답 간의 차이)을 수정하는 것이 목표라면, 원자료 및/또는 추정 데이터, 그리고 목표 속성 예측값을 이용하여 해당 목표 속성의 잔차를 예측하는 머신러닝 모델을 학습시킬 수 있습니다. (원래 변수와 예측값을 기반으로 오류를 모델링하기 위함입니다.) 이렇게 하면 부스팅 트리의 오류를 예측하고 부스팅 트리의 예측값에 잔차 예측값을 더하거나 빼는 방식으로 부스팅 트리의 오류를 보정하는 모델을 얻을 수 있습니다.
저는 이 접근 방식을 여러 번 사용해 봤는데, 성능 향상이 상당히 컸습니다. 예측에 사용한 모델과 오류 모델링에 다른 유형의 모델(예: 귀하의 경우 부스팅 트리가 아닌 다른 모델)을 사용하는 것이 좋을 수 있습니다. 또한, 적절한 검증 전략(부스팅 트리 모델 단독과의 비교용)과 테스트 전략(실제 환경에서의 성능 평가용)을 사용하여 과적합을 방지하고 이 새로운 모델을 철저히 검증해야 합니다. 오류 모델링에는 예측 시점에 사용 가능한 데이터(예측 변수와 목표 속성의 예측값)만 사용하여 데이터 유출 위험을 방지하십시오.
- 배깅/모델 평균화 접근법: 예측값의 분산을 줄이는 또 다른 방법은 부스팅 트리 모델 외에 여러 모델을 병렬로 학습시키고, 그 예측값들의 평균 또는 중앙값을 사용하는 것입니다. 하지만 이 접근법에서는 적절한 검증 및 테스트 전략을 수립하는 것이 매우 중요합니다.
이러한 옵션 중 어떤 것을 선택할지는 초기 부스팅 트리 모델의 성능과 데이터의 노이즈 정도에 따라 달라집니다. 부스팅 트리가 과적합되는 경향이 있거나 사용된 데이터에 노이즈가 많은 경우, 배깅 방식이 권장됩니다. 부스팅 트리의 성능이 저조하고 편향이 높은 경우(특정 매개변수를 사용하지 않는 한 모델의 동작으로 볼 때 가능성은 낮아 보이지만), 부스팅 방식이 더 효과적일 것입니다. 저는 이미 부스팅 방식의 예측 모델(부스팅 트리)을 사용하고 있으므로 배깅 방식의 앙상블 접근법을 우선적으로 테스트해 볼 것 같습니다.
이러한 선택지들이 여러분에게 영감을 주기를 바랍니다.
제목: 초기 추정치(휴리스틱)를 예측 모델(머신러닝)에 통합하기안녕하세요 @Victor_G 님 ,
저는 이미 잔차(목표 속성의 실제 값과 초기 추정값의 차이)를 예측하는 방법을 시도해 봤습니다. 훈련 세트에서는 약간의 개선을 얻었지만, 테스트 세트에서는 실패했습니다(RMSE가 두 배로 증가했습니다). 제 테스트 세트는 제가 목표로 하는 규모 확장을 나타냅니다. 이는 매우 다양한 조성의 혼합물로 구성된 부분집합이지만, 이러한 혼합물의 속성은 훈련 세트의 속성과 거의 유사한 범위에 있습니다. 현재 제 부스팅 트리 모델은 테스트 세트에서 상당히 좋은 예측 성능을 보여줍니다.
모델 평균화라는 아이디어는 흥미롭네요. 이 접근 방식을 테스트하려면 오류가 충분히 다른 모델들을 찾아야 할까요? 일단 배깅부터 시도해 봐야겠어요. 제 데이터는 노이즈가 많고, 이런 유형의 모델이 2개, 3개, 4개...의 서로 다른 모델들을 사용하는 것보다 블렌드 서치 도구에 통합하기 더 쉬울 것 같거든요.
좋은 아이디어 주셔서 정말 감사합니다.
제목: 초기 추정치(휴리스틱)를 예측 모델(머신러닝)에 통합하기안녕하세요 @RikkiTikkiTavi 님 ,
네, 이 접근 방식의 어려움은 과적합(훈련 데이터셋에서는 성능이 향상되지만 검증 데이터셋에서는 성능이 안정적이거나 오히려 악화되는 현상)을 방지하기 위한 올바른 검증 전략을 세우는 데 있습니다.
테스트 데이터에 대한 설명으로 미루어 볼 때, 도메인 시프트가 발생할 가능성이 있어 약간 우려됩니다. 모델이 학습 과정에서 입력과 출력 간의 관계를 학습하는 방식과 테스트 데이터에서 학습하는 방식이 다를 수 있기 때문입니다. 이러한 도메인 시프트를 방지하기 위해 학습/검증/테스트 데이터를 혼합/ 분류하는 방법(테스트 데이터에만 스케일업 데이터를 포함)은 어떨까요? 이렇게 하면 모델이 스케일업에 대한 정보도 활용할 수 있게 됩니다. 예를 들어, 학습 과정에서 새로운 변수(experiment_type: R&D / scale-up / Prod)를 사용하여 스케일업 여부를 나타낼 수 있습니다. (각 단계별로 다른 절편이 필요한지에 따라 변수의 필요성이 달라질 수 있습니다.)
나머지 절차에 대해서는 다음과 같은 의견/아이디어를 드립니다.
- 먼저 훈련/검증/테스트 전략을 설정하십시오. 가능하다면 변수에 따라 계층적 분할을 수행하여 각 데이터 세트에서 전체 실험 공간을 확인할 수 있도록 하십시오(관련성 있는 훈련과 우수한 일반화 성능을 보장하기 위해).
- 부스팅 트리(또는 다른 모델)를 학습시키기 전에 비교 모델을 설정하세요. 다른 모델들과 비교하여 검증에서 더 나은 성능을 보여줄 벤치마크 모델( 랜덤 포레스트를 추천합니다)과, 테스트 모델의 성능 하한을 평가할 모델을 준비합니다. 예를 들어, 모든 데이터셋(검증 및 테스트)에서 훈련 데이터셋의 평균 반응만을 "예측"하는 단순 모델을 사용할 수 있습니다. 다른 모델들이 이 단순 모델보다 성능이 떨어지거나 비슷한 경우(예: RMSE가 단순 모델과 비슷하거나 높은 경우), 이는 데이터에 신호 대비 과도한 노이즈가 있거나, 요인으로부터 충분한 정보가 제공되지 않거나, 반응의 변동성이 부족함을 나타낼 수 있습니다.
- 또한, 모델 스크리닝 플랫폼과 같은 도구를 사용하여 훈련 데이터셋에 대해서만 교차 검증을 수행함으로써 다양한 모델을 테스트해 보는 것을 추천합니다. 이를 통해 가장 유망한 모델을 선택하고 다음 단계로 진행할 수 있습니다.
- 모델 성능에 따라 훈련 데이터셋을 사용하여 재학습을 수행하고, 검증 데이터셋에서의 성능을 비교하여 최적의 모델을 선택할 수 있습니다. 동시에, 이전 교차 검증을 통해 이미 학습된 모델들을 활용하여 모델 비교 플랫폼을 통해 모델 평균화를 수행할 수 있습니다. 모델 평균화의 핵심은 Boosted Tree, Random Forest, XGBoost 와 같은 트리 기반 모델과 같은 다양한 "구성 유형"(귀납적 편향)을 가진 모델들을, 성능에 따라 다변량 회귀, SVM, 가우시안 프로세스, 소규모 신경망과 같은 다른 모델들과 결합하는 것입니다. 이러한 모델들은 각각 우수한 개별 성능(데이터의 신호를 잘 포착해야 함)을 보여야 하며, 이상적으로는 오류율이 약간씩 달라야 합니다(일부는 특정 관측값을 과대평가하고 다른 일부는 과소평가함). 이렇게 구성된 매크로 모델과 훈련 데이터셋으로 재학습된 개별 모델들의 성능 결과를 동일한 모델 비교 플랫폼에서 검증 데이터셋을 통해 비교 분석할 수 있습니다.
- 최적의 옵션(매크로 모델 또는 개별 모델)이 선택되면, 테스트 세트에서 성능을 추정하여 모델 배포 후 동작을 평가합니다.
랜덤 포레스트의 자연스러운 배깅 외에도 다른 머신 러닝 모델에 부트스트래핑을 적용하여 학습 과정에서 모델의 견고성을 향상시킬 수 있습니다.
이러한 제안들이 도움이 되기를 바랍니다.