산업 대 카글 도전. 멋진 모델링보다 더 많은 관측치를 수집하고 더 많은 변수에 액세스하는 것이 더 중요합니까?


56

나는 제목이 자명 한 희망이다. Kaggle에서 대부분의 승자는 수백 가지 기본 모델과 함께 스태킹을 사용하여 MSE의 몇 가지 추가 비율을 줄이고 정확도를 높입니다 ... 일반적으로 경험상 스태킹과 같은 멋진 모델링은 단순히 더 많은 데이터와 더 많은 기능을 수집하는 것보다 중요합니다 데이터를 위해?


4
이는 신속하게 재교육 (또는 새로운 데이터 세트 또는 새로운 기능으로 재 타겟팅) 할 수있는 유용한 일반화 가능한 흐름을 원하는지 아니면 특정 Kaggle 경쟁 (특정 정적 데이터 세트에서 누수 악용, '매직 기능'및 모두). 전자의 경우 훈련 시간이 훨씬 짧고 데이터 집합이 작을수록 동일한 야구장 정확도를 얻는 알고리즘이 더 좋습니다. Kaggle이 과도한 계산 / 메모리 요구 사항 또는 교육 시간을 처벌하기 시작했거나 제출 점수의 일부로 고려했다고 상상해보십시오 (이미 제안해야 함).
smci

2
에서 촬영 "실제 세계의 문제에 깊은 학습을 적용" 라스무스 ROTHE으로 "[...] 실제 시나리오에, 당신의 새로운 알고리즘이 다른 방법에 비해 성능이 추가로 1 %를 좋다고 보여주는에 대한 작은 대신은. "필요한 작업을 충분한 정확도로 해결하는 강력한 시스템을 구축하는 것입니다."
beatngu13

답변:


77

배경으로, 나는 12 년 동안 소매 판매를위한 예측 상점 SKU 시계열을하고 있습니다. 수백 또는 수천 개의 매장에 걸친 수만 개의 시계열. 용어가 대중화되기 전부터 빅 데이터를 해왔다고 말하고 싶습니다.×

가장 중요한 것은 데이터이해하는 것입니다 . 부활절이나 판촉과 같은 주요 동인을 이해하지 못하면 파산하게됩니다. 종종 이것은 올바른 질문을하고 알 수없는 미지의 미지의 알 수없는 특정 비즈니스이해하는 데 도움 이됩니다 .

데이터를 이해하면 깨끗한 데이터 를 얻기 위해 노력해야합니다 . 나는 많은 수의 후배들과 인턴들을 감독했고, 그들이 그들의 통계와 데이터 과학 수업에서 경험하지 못한 한 가지는 당신이 가진 데이터에 얼마나 많은 쓰레기가있을 수 있는지였습니다. 그런 다음 소스로 돌아가서 올바른 데이터를 가져 오거나 정리하려고하거나 일부를 버려야합니다. 더 나은 데이터를 얻기 위해 실행중인 시스템을 변경하는 것은 놀라 울 정도로 어려운 일입니다.

데이터를 이해하고 실제로 데이터가 다소 깨끗해지면 데이터를 다루기 시작할 수 있습니다. 불행히도, 지금까지 나는 종종 시간과 자원이 부족하다는 것을 알았습니다.

나는 개인적으로 최소한 추상적 인 관점에서 , 모델 기능 ( "스태킹")의 팬이며, 멋진 기능 공학에서는 그다지 하지 않습니다. 더 복잡한 모델을 사용하면 실제 예측이 더 나빠지는 경우가 종종 있습니다. 이것은 내 사업 분야에서 거래를 중단시키는 사람입니다. 하나의 정말 나쁜 예측은 전체 시스템의 신뢰를 완전히 파괴 할 수 있으므로 우선 순위 목록에서 견고성이 매우 높습니다. 귀하의 마일리지가 다를 수 있습니다.

내 경험에 따르면, 그렇습니다. 모델 조합은 정확도를 향상시킬 수 있습니다. 그러나 데이터를 이해하고 데이터를 정리하거나 처음부터 데이터를 정리하는 첫 두 단계를 통해 실제로 큰 이점을 얻을 수 있습니다.


4
@bendl, YMMV는 마일리지가 다를 수 있음을 의미 합니다. 이 전에 문장의 진술은 다른 상황에서 다소 사실 일 수도 있고 아닐 수도 있습니다.
Orphevs

2
또한 ~ 시계열에 대해 SKU / 위치 수준 예측을 수행하는 소매점에서 일하고 있습니다. :-). 그러나 우리가하는 일이 "빅 데이터"로 간주되는지 궁금합니다. 전체 데이터 세트가 빅 데이터 범위에 있지만 예측 모델은 일반적으로 소규모 데이터 그룹화 (계층 적 예측 방법을 사용한 후에도) 및 실제 빅 데이터 처리에 필요한 기술 (예 : MapReduce, 데이터 해싱 등)에 적용됩니다. .)는 요구되지 않습니다. 아마존의 DeepAR은 진정한 빅 데이터 인 것 같습니다. 과학만큼이나 과장된 것 같습니다. 106
Skander H.

2
교실 만의 경험은 신경 쓰지 마십시오. 이미지 인식과 같은 높은 신호 대 잡음비 컨텍스트를 주로 경험하고 신병을 위해 모집과 같은 시끄러운 사회 과정에 동일한 방법을 적용하려고 시도하는 업계 종사자들이 많이 있습니다.
충돌 평형

2
@Orphevs 다른 말로하면,이 말은 내 상황에 비해 지나치게 적합하고 일반화되지 않을 수 있습니다. : P
JAD

2
(+1) 신선한 졸업생의 데이터 정리 문제와 관련하여 공식 교육 과정에서 데이터 정리가 나쁜 것으로 생각하기 쉽다는 점도 주목할 가치가 있습니다. 즉, 데이터 정리 유형 I 오류율 (특히 정리 프로세스에 편향이있는 경우)에 큰 영향을 줄 있으므로 데이터 정리의 위험에 대해 배웠습니다. 이러한 교훈은 틀리지 않았지만 공식 교육이 특히 예측 모델링의 경우 데이터 정리의 이점을 강조했다고 생각하지 않습니다.
Cliff AB

42

업계 전체에 대해 말할 수는 없지만 업계에서 일하고 Kaggle에서 경쟁하여 POV를 공유 할 것입니다.

첫째, Kaggle이 업계에서 사람들이하는 일과 정확히 일치하지 않는다고 의심 할 수 있습니다. 그것은 게임이며 많은 미친 제한이있는 게임 기술에 따라 다릅니다. 예를 들어, 현재 진행중인 산탄데르 경쟁에서 :

  1. 기능 이름은 인위적으로 해시되어 의미를 숨겼습니다.
  2. "훈련"세트는 인위적으로 열보다 행 수가 적도록 제한되었으므로 기능 선택, 견고성 및 정규화 기술이 성공에 없어서는 안 될 요소입니다.
  3. 소위 "테스트"세트는 트레이닝 세트와 현저하게 다른 분포를 가지며 두 개는 동일한 모집단의 무작위 표본이 아닙니다 .

누군가가 직장에서 이와 같은 데이터 세트를 제공 한 경우, 즉시 기능 엔지니어링에 대해 그들과 함께 작업하여 더 유용한 기능을 얻을 수 있도록 제안 할 것입니다. 도메인 지식을 사용하여 상호 작용 항, 임계 값, 범주 형 변수 코딩 전략 등을 결정할 것을 제안합니다. 이런 방식으로 문제에 접근하는 것은 ML 훈련.

또한 특정 숫자 열이 숫자가 아니라 우편 번호라는 사실을 알면 미국 인구 조사와 같은 타사 데이터 소스에서 데이터를 가져 와서 데이터를 보강 할 수 있습니다. 또는 날짜가있는 경우 해당 날짜의 S & P 500 마감 가격을 포함시킬 수 있습니다. 이러한 외부 확대 전략은 특정 데이터 세트에 대한 자세한 지식과 중요한 도메인 지식이 필요하지만 일반적으로 순수한 알고리즘 개선보다 훨씬 큰 보상을받습니다.

따라서 산업과 Kaggle의 첫 번째 큰 차이점은 산업에서 기능 (입력 데이터의 의미)이 협상 가능하다는 것입니다.

두 번째 차이점은 성능입니다. 종종 모델은 두 가지 방법 중 하나를 사용하여 프로덕션에 배포됩니다. 실시간으로 반환 된 예측이 필요합니다. 두 사용 사례 모두 좋은 성능을 요구합니다. 이러한 이유로 K-Nearest-Neighbors 또는 Extra Random Forests와 같이 엄청난 양의 메모리를 예측하거나 사용하는 데 시간이 오래 걸리는 모델은 종종 보이지 않습니다. 반면에 로지스틱 회귀 또는 신경망은 몇 개의 행렬 곱셈으로 일련의 레코드를 채점 할 수 있으며, 올바른 라이브러리로 행렬 곱셈을 고도로 최적화 할 수 있습니다 .다른 비모수 적 모델을 쌓아도 AUC +0.001을 얻을 수는 있지만 예측 처리량과 대기 시간이 너무 줄어들 기 때문은 아닙니다.

뿐만 아니라이에 대한 신뢰성 차원있다 - 네 가지 최첨단 타사 라이브러리를 적재가 말 LightGBM , xgboost , catboostTensorflow (에 GPU를 물론이) 당신 MSE에서 0.01의 감소가 될 수있는 위치 Kaggle 경쟁에서 승리하지만 문제가 발생하면 설치, 배포 및 디버그하는 라이브러리는 4 가지입니다. 랩톱에서 모든 작업을 수행 할 수 있다면 좋겠지 만 AWS에서 실행되는 Docker 컨테이너 내에서 실행하는 것은 완전히 다른 이야기입니다. 대부분의 회사는 이러한 종류의 배포 문제를 처리하기 위해 소규모 devops 팀을 이끄는 것을 원하지 않습니다.

즉, 스택 자체가 반드시 큰 것은 아닙니다. 실제로, 모두 똑같이 잘 수행하지만 결정 경계가 매우 다른 몇 가지 다른 모델을 쌓는 것은 AUC에서 작은 충돌과 견고성에서 큰 충돌을 얻는 가장 좋은 방법입니다. 너무 많은 주방 싱크대를 이기종 앙상블에 던져서 배포 문제가 발생하기 시작하지 마십시오.


사소한 점, 귀하의 글 머리 기호 # 2가 문장의 끝이 누락되었다고 생각합니까?
mbrig

20

내 경험에 비추어 볼 때 가장 탁월하고 가장 많이 쌓이고 조정 된 모델보다 더 많은 데이터와 기능이 더 중요합니다.

발생한 온라인 광고 경쟁을보십시오. 승리 한 모델은 너무 복잡하여 훈련하는 데 1 주일이 걸렸습니다 (업계 표준에 비해 매우 작은 데이터 집합). 게다가 스택 모델의 예측은 단순한 선형 모델보다 길다. 같은 주제에서 Netflix는 엔지니어링 비용으로 인해 1M $ 알고리즘을 사용한 적이 없다는 것을 기억하십시오 .

온라인 데이터 과학 경연 대회는 회사가 수집 한 데이터를 사용하여 "어떤 시점에서 달성 할 수있는 최고 정확도 (또는 성능 지표)"를 알 수있는 좋은 방법이라고 말합니다. 이것은 실제로 해결되는 어려운 문제입니다! 그러나 업계에서는 현장 지식, 하드웨어 및 비즈니스 제약으로 인해 "팬시 모델링"을 사용하지 않는 것이 일반적입니다.


2
데이터 수집 프로세스가 항상 발전하고있는 경우도 있습니다. 이는 현재 사용되는 알고리즘이 오래되었음을 의미합니다 (지시 한 엔지니어링 비용 또는 교육 시간 외에). 따라서 더 간단하고 빠르고 유연한 알고리즘이 필요합니다.
Tom

4
이 글의 주요 요점 중 하나는 "좋은 변수 선택은 항상 좋은 모델 선택보다 우선합니다"
aginensky

14

스태킹은 복잡성을 크게 증가시키고 해석 가능성을 줄입니다. 그것을 정당화하기 위해 이익은 일반적으로 상대적으로 작습니다. 따라서 어셈블 링은 널리 사용되지만 (예 : XGBoost) 업계에서는 스태킹이 상대적으로 드물다고 생각합니다.


1
좋은 지적. 내 응용 프로그램에서 통역 성은 매우 중요합니다 (상점 관리자 는 예측이 왜 그런지 이해 하려고 합니다). 해석하기 어려운 모델에는 문제가 있습니다.
S. Kolassa-복원 Monica Monica

개인 통찰력 Stephan에 감사드립니다. 모델 복잡성이 증가함에 따라 해석 성이 저하되거나 사라진다고 생각했지만 회사에서 더 시급한 시간 제약은 생각하지 않았습니다. 팬시 모델링은 아마도 (정확도 획득) / (소비 시간)의 최악의 비율을 가질 것입니다.
Tom

8

내 경험상 좋은 데이터와 기능을 수집하는 것이 훨씬 중요합니다.

우리가 작업 한 클라이언트는 대개 많은 데이터를 가지고 있으며, 쉽게 내보내거나 작업하기 쉬운 형식의 데이터는 아닙니다. 데이터의 첫 번째 배치는 일반적으로별로 유용하지 않습니다. 모델을보다 유용하게 만드는 데 필요한 데이터를 파악하기 위해 클라이언트와 협력하는 것이 우리의 임무입니다. 이것은 매우 반복적 인 과정입니다.

많은 실험이 진행 중이며 다음과 같은 모델이 필요합니다.

  1. 빨리 훈련
  2. 빠른 예측 (또한 종종 비즈니스 요구 사항 임)
  3. 해석하기 쉽다

포인트 3)은 해석하기 쉬운 모델이 고객과 의사 소통하기 쉽고 우리가 잘못한 것을 포착하는 것이 더 쉽기 때문에 특히 중요합니다.


7

Kaggle에서 많이 나오지 않는 것이 있습니다.

  • 모델에 더 많은 변수가 있고
  • 변수와 결과 사이의 관계가 복잡할수록

더 위험은 해당 모델의 수명 기간 동안 직면하게 될 것이다. 시간은 일반적으로 Kaggle 대회에서 동결되거나 테스트 세트 값이 나오는 짧은 미래 시간 창이 있습니다. 업계에서는이 모델이 몇 년 동안 실행될 수 있습니다. 그리고 하나의 변수가 완벽하게 구축 되었더라도 전체 모델이 지옥에 빠지기 위해 하나의 변수를 사용하는 것입니다. 나는 경쟁 업체가 위험과 모델 복잡성을 신중하게 균형 잡는 경쟁을 보길 원치 않지만, 업무를 수행하는 중에는 담당 모델에 문제가 생기면 비즈니스와 삶의 질이 떨어질 것입니다. 매우 똑똑한 사람들조차도 면역성이 없습니다. 예를 들어 Google 독감 트렌드 예측 실패를 생각해보십시오 . 세상은 변했고 그들은 세상을 보지 못했습니다.

OP의 질문에 따르면, " 일반적으로 경험상 스태킹과 단순히 더 많은 데이터와 더 많은 기능을 수집하는 것과 같은 멋진 모델링이 얼마나 중요합니까? "저는 공식적으로 나이가 들었습니다. 실제로 강력한 모델링 인프라 의 경우 입력-출력 관계가 비교적 간단한 최소 변수 세트를 사용하여 간단한 모델을 사용하는 것이 좋습니다. 변수가 손실 메트릭을 거의 개선하지 않으면 그대로 두십시오. 그것이 직업이라는 것을 기억하십시오. "큰 규모로 가거나 집으로 가십시오"인센티브가있는 Kaggle 공모전에서 직장 밖에서 킥을 얻으십시오.

비즈니스 상황이 특정 수준의 모델 성능을 요구 한 경우 (예 : 회사가 경쟁 우위의 성과를 달성하거나 이겨서 일부 이점 (아마도 마케팅)을 확보해야하는 경우)는 예외입니다. 그러나 모델의 성능과 비즈니스 이득 사이에 선형 관계가있을 때, 복잡성의 증가는 일반적으로 금전적 인 이득을 정당화하지 않는다 ( "를 참조 넷플릭스 인해 엔지니어링 비용은 $ 100 만 알고리즘을 사용하지 않습니다 "- @ RUser4512에 사과를 같은를 인용에 대해 조). 그러나 Kaggle 경쟁에서 인근 솔루션을 통과하면 추가 이득으로 인해 수백 가지 순위로 이동할 수 있습니다.


3

Gary Kasparov의 저서 Deep Thinking에서 인용 한 짧은 답변

우수한 지식과 우수한 기술을 능가하는 영리한 프로세스

나는 주로 시계열 재무 데이터, 데이터 수집, 정리, 처리 및 문제 소유자와 협력하여 실제로 원하는 것을 파악한 다음 시도하고 다루는 기능과 모델을 구축하는 프로세스를 사용합니다. 문제를 해결하고 마지막으로 다음 번에 개선 할 프로세스를 후 향적으로 조사합니다.

이 전체 과정은 부분의 합보다 큽니다. 선형 / 로지스틱 회귀 분석을 통해 '허용 가능한'일반화 성능을 얻고 도메인 전문가와 대화하여 기능을 생성하고, 모델에 맞는 데이터에 모델을 과도하게 맞추는 것보다 시간을 더 잘 보냅니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.