나는 제목이 자명 한 희망이다. Kaggle에서 대부분의 승자는 수백 가지 기본 모델과 함께 스태킹을 사용하여 MSE의 몇 가지 추가 비율을 줄이고 정확도를 높입니다 ... 일반적으로 경험상 스태킹과 같은 멋진 모델링은 단순히 더 많은 데이터와 더 많은 기능을 수집하는 것보다 중요합니다 데이터를 위해?
나는 제목이 자명 한 희망이다. Kaggle에서 대부분의 승자는 수백 가지 기본 모델과 함께 스태킹을 사용하여 MSE의 몇 가지 추가 비율을 줄이고 정확도를 높입니다 ... 일반적으로 경험상 스태킹과 같은 멋진 모델링은 단순히 더 많은 데이터와 더 많은 기능을 수집하는 것보다 중요합니다 데이터를 위해?
답변:
배경으로, 나는 12 년 동안 소매 판매를위한 예측 상점 SKU 시계열을하고 있습니다. 수백 또는 수천 개의 매장에 걸친 수만 개의 시계열. 용어가 대중화되기 전부터 빅 데이터를 해왔다고 말하고 싶습니다.
가장 중요한 것은 데이터 를 이해하는 것입니다 . 부활절이나 판촉과 같은 주요 동인을 이해하지 못하면 파산하게됩니다. 종종 이것은 올바른 질문을하고 알 수없는 미지의 미지의 알 수없는 특정 비즈니스 를 이해하는 데 도움 이됩니다 .
데이터를 이해하면 깨끗한 데이터 를 얻기 위해 노력해야합니다 . 나는 많은 수의 후배들과 인턴들을 감독했고, 그들이 그들의 통계와 데이터 과학 수업에서 경험하지 못한 한 가지는 당신이 가진 데이터에 얼마나 많은 쓰레기가있을 수 있는지였습니다. 그런 다음 소스로 돌아가서 올바른 데이터를 가져 오거나 정리하려고하거나 일부를 버려야합니다. 더 나은 데이터를 얻기 위해 실행중인 시스템을 변경하는 것은 놀라 울 정도로 어려운 일입니다.
데이터를 이해하고 실제로 데이터가 다소 깨끗해지면 데이터를 다루기 시작할 수 있습니다. 불행히도, 지금까지 나는 종종 시간과 자원이 부족하다는 것을 알았습니다.
나는 개인적으로 최소한 추상적 인 관점에서 , 모델 기능 ( "스태킹")의 팬이며, 멋진 기능 공학에서는 그다지 능숙 하지 않습니다. 더 복잡한 모델을 사용하면 실제 예측이 더 나빠지는 경우가 종종 있습니다. 이것은 내 사업 분야에서 거래를 중단시키는 사람입니다. 하나의 정말 나쁜 예측은 전체 시스템의 신뢰를 완전히 파괴 할 수 있으므로 우선 순위 목록에서 견고성이 매우 높습니다. 귀하의 마일리지가 다를 수 있습니다.
내 경험에 따르면, 그렇습니다. 모델 조합은 정확도를 향상시킬 수 있습니다. 그러나 데이터를 이해하고 데이터를 정리하거나 처음부터 데이터를 정리하는 첫 두 단계를 통해 실제로 큰 이점을 얻을 수 있습니다.
업계 전체에 대해 말할 수는 없지만 업계에서 일하고 Kaggle에서 경쟁하여 POV를 공유 할 것입니다.
첫째, Kaggle이 업계에서 사람들이하는 일과 정확히 일치하지 않는다고 의심 할 수 있습니다. 그것은 게임이며 많은 미친 제한이있는 게임 기술에 따라 다릅니다. 예를 들어, 현재 진행중인 산탄데르 경쟁에서 :
누군가가 직장에서 이와 같은 데이터 세트를 제공 한 경우, 즉시 기능 엔지니어링에 대해 그들과 함께 작업하여 더 유용한 기능을 얻을 수 있도록 제안 할 것입니다. 도메인 지식을 사용하여 상호 작용 항, 임계 값, 범주 형 변수 코딩 전략 등을 결정할 것을 제안합니다. 이런 방식으로 문제에 접근하는 것은 ML 훈련.
또한 특정 숫자 열이 숫자가 아니라 우편 번호라는 사실을 알면 미국 인구 조사와 같은 타사 데이터 소스에서 데이터를 가져 와서 데이터를 보강 할 수 있습니다. 또는 날짜가있는 경우 해당 날짜의 S & P 500 마감 가격을 포함시킬 수 있습니다. 이러한 외부 확대 전략은 특정 데이터 세트에 대한 자세한 지식과 중요한 도메인 지식이 필요하지만 일반적으로 순수한 알고리즘 개선보다 훨씬 큰 보상을받습니다.
따라서 산업과 Kaggle의 첫 번째 큰 차이점은 산업에서 기능 (입력 데이터의 의미)이 협상 가능하다는 것입니다.
두 번째 차이점은 성능입니다. 종종 모델은 두 가지 방법 중 하나를 사용하여 프로덕션에 배포됩니다. 실시간으로 반환 된 예측이 필요합니다. 두 사용 사례 모두 좋은 성능을 요구합니다. 이러한 이유로 K-Nearest-Neighbors 또는 Extra Random Forests와 같이 엄청난 양의 메모리를 예측하거나 사용하는 데 시간이 오래 걸리는 모델은 종종 보이지 않습니다. 반면에 로지스틱 회귀 또는 신경망은 몇 개의 행렬 곱셈으로 일련의 레코드를 채점 할 수 있으며, 올바른 라이브러리로 행렬 곱셈을 고도로 최적화 할 수 있습니다 .다른 비모수 적 모델을 쌓아도 AUC +0.001을 얻을 수는 있지만 예측 처리량과 대기 시간이 너무 줄어들 기 때문은 아닙니다.
뿐만 아니라이에 대한 신뢰성 차원있다 - 네 가지 최첨단 타사 라이브러리를 적재가 말 LightGBM , xgboost , catboost 및 Tensorflow (에 GPU를 물론이) 당신 MSE에서 0.01의 감소가 될 수있는 위치 Kaggle 경쟁에서 승리하지만 문제가 발생하면 설치, 배포 및 디버그하는 라이브러리는 4 가지입니다. 랩톱에서 모든 작업을 수행 할 수 있다면 좋겠지 만 AWS에서 실행되는 Docker 컨테이너 내에서 실행하는 것은 완전히 다른 이야기입니다. 대부분의 회사는 이러한 종류의 배포 문제를 처리하기 위해 소규모 devops 팀을 이끄는 것을 원하지 않습니다.
즉, 스택 자체가 반드시 큰 것은 아닙니다. 실제로, 모두 똑같이 잘 수행하지만 결정 경계가 매우 다른 몇 가지 다른 모델을 쌓는 것은 AUC에서 작은 충돌과 견고성에서 큰 충돌을 얻는 가장 좋은 방법입니다. 너무 많은 주방 싱크대를 이기종 앙상블에 던져서 배포 문제가 발생하기 시작하지 마십시오.
내 경험에 비추어 볼 때 가장 탁월하고 가장 많이 쌓이고 조정 된 모델보다 더 많은 데이터와 기능이 더 중요합니다.
발생한 온라인 광고 경쟁을보십시오. 승리 한 모델은 너무 복잡하여 훈련하는 데 1 주일이 걸렸습니다 (업계 표준에 비해 매우 작은 데이터 집합). 게다가 스택 모델의 예측은 단순한 선형 모델보다 길다. 같은 주제에서 Netflix는 엔지니어링 비용으로 인해 1M $ 알고리즘을 사용한 적이 없다는 것을 기억하십시오 .
온라인 데이터 과학 경연 대회는 회사가 수집 한 데이터를 사용하여 "어떤 시점에서 달성 할 수있는 최고 정확도 (또는 성능 지표)"를 알 수있는 좋은 방법이라고 말합니다. 이것은 실제로 해결되는 어려운 문제입니다! 그러나 업계에서는 현장 지식, 하드웨어 및 비즈니스 제약으로 인해 "팬시 모델링"을 사용하지 않는 것이 일반적입니다.
스태킹은 복잡성을 크게 증가시키고 해석 가능성을 줄입니다. 그것을 정당화하기 위해 이익은 일반적으로 상대적으로 작습니다. 따라서 어셈블 링은 널리 사용되지만 (예 : XGBoost) 업계에서는 스태킹이 상대적으로 드물다고 생각합니다.
내 경험상 좋은 데이터와 기능을 수집하는 것이 훨씬 중요합니다.
우리가 작업 한 클라이언트는 대개 많은 데이터를 가지고 있으며, 쉽게 내보내거나 작업하기 쉬운 형식의 데이터는 아닙니다. 데이터의 첫 번째 배치는 일반적으로별로 유용하지 않습니다. 모델을보다 유용하게 만드는 데 필요한 데이터를 파악하기 위해 클라이언트와 협력하는 것이 우리의 임무입니다. 이것은 매우 반복적 인 과정입니다.
많은 실험이 진행 중이며 다음과 같은 모델이 필요합니다.
포인트 3)은 해석하기 쉬운 모델이 고객과 의사 소통하기 쉽고 우리가 잘못한 것을 포착하는 것이 더 쉽기 때문에 특히 중요합니다.
Kaggle에서 많이 나오지 않는 것이 있습니다.
더 위험은 해당 모델의 수명 기간 동안 직면하게 될 것이다. 시간은 일반적으로 Kaggle 대회에서 동결되거나 테스트 세트 값이 나오는 짧은 미래 시간 창이 있습니다. 업계에서는이 모델이 몇 년 동안 실행될 수 있습니다. 그리고 하나의 변수가 완벽하게 구축 되었더라도 전체 모델이 지옥에 빠지기 위해 하나의 변수를 사용하는 것입니다. 나는 경쟁 업체가 위험과 모델 복잡성을 신중하게 균형 잡는 경쟁을 보길 원치 않지만, 업무를 수행하는 중에는 담당 모델에 문제가 생기면 비즈니스와 삶의 질이 떨어질 것입니다. 매우 똑똑한 사람들조차도 면역성이 없습니다. 예를 들어 Google 독감 트렌드 예측 실패를 생각해보십시오 . 세상은 변했고 그들은 세상을 보지 못했습니다.
OP의 질문에 따르면, " 일반적으로 경험상 스태킹과 단순히 더 많은 데이터와 더 많은 기능을 수집하는 것과 같은 멋진 모델링이 얼마나 중요합니까? "저는 공식적으로 나이가 들었습니다. 실제로 강력한 모델링 인프라 의 경우 입력-출력 관계가 비교적 간단한 최소 변수 세트를 사용하여 간단한 모델을 사용하는 것이 좋습니다. 변수가 손실 메트릭을 거의 개선하지 않으면 그대로 두십시오. 그것이 직업이라는 것을 기억하십시오. "큰 규모로 가거나 집으로 가십시오"인센티브가있는 Kaggle 공모전에서 직장 밖에서 킥을 얻으십시오.
비즈니스 상황이 특정 수준의 모델 성능을 요구 한 경우 (예 : 회사가 경쟁 우위의 성과를 달성하거나 이겨서 일부 이점 (아마도 마케팅)을 확보해야하는 경우)는 예외입니다. 그러나 모델의 성능과 비즈니스 이득 사이에 선형 관계가있을 때, 복잡성의 증가는 일반적으로 금전적 인 이득을 정당화하지 않는다 ( "를 참조 넷플릭스 인해 엔지니어링 비용은 $ 100 만 알고리즘을 사용하지 않습니다 "- @ RUser4512에 사과를 같은를 인용에 대해 조). 그러나 Kaggle 경쟁에서 인근 솔루션을 통과하면 추가 이득으로 인해 수백 가지 순위로 이동할 수 있습니다.
Gary Kasparov의 저서 Deep Thinking에서 인용 한 짧은 답변
우수한 지식과 우수한 기술을 능가하는 영리한 프로세스
나는 주로 시계열 재무 데이터, 데이터 수집, 정리, 처리 및 문제 소유자와 협력하여 실제로 원하는 것을 파악한 다음 시도하고 다루는 기능과 모델을 구축하는 프로세스를 사용합니다. 문제를 해결하고 마지막으로 다음 번에 개선 할 프로세스를 후 향적으로 조사합니다.
이 전체 과정은 부분의 합보다 큽니다. 선형 / 로지스틱 회귀 분석을 통해 '허용 가능한'일반화 성능을 얻고 도메인 전문가와 대화하여 기능을 생성하고, 모델에 맞는 데이터에 모델을 과도하게 맞추는 것보다 시간을 더 잘 보냅니다.