데이터 마이닝이나 AI/ML 알고리즘을 활용할 때 기억해야 할 점
통계, 데이터 마이닝, 머신러닝 등의 분야에서는 데이터를 분석하고 해석하는 능력이 굉장히 중요합니다. 그리고 잘 훈련된 분석가/개발자라면 웬만한 알고리즘들을 적재적소에 활용할 수 있고 해석할 수 있을 것입니다. 그런데 일반적으로 경험이 적은 분석가라면 데이터가 말해주는 결과를 그대로 믿는 경우가 많습니다. 배운 대로 하는 것이죠. 하지만 데이터가 말해 주는 결과를 해석할 때는 주의가 필요합니다. 이와 관련된 다양한 사례가 있지만, 한 가지 사례를 살펴봅시다.
예전에 삼프로TV라는 유명 경제 유튜브의 영상을 보다가, 어떤 경제분야 교수님이 호주 달러 - 스위스 프랑의 환율이 코스피 지수와 상관관계가 굉장히 높다고 말하는 것을 보았습니다. (여기 보면 누가 그 내용도 정리해 놓았네요) 원인은 모르지만 correlation 이 높았다는 내용인데, 뭐 맞을 수도 있지만 저는 그 내용에 동의하지 않습니다. 제가 보기엔 그 교수님이 경제 분야 전문가일 뿐 통계나 기술과 관련해서는 잘 모르기 때문에 발생한 실수라고 생각됩니다.
제 생각을 말하자면, 호주달러-스위스프랑 환율과 코스피 지수의 상관관계가 가장 높다고 한 것은 그냥 우연의 일치입니다. 사실 환율은 주가와 떨어뜨려 생각할 수 없고 그 자체의 상관관계가 굉장히 높기 때문에, 다양한 환율과 거시경제 변수 중 해당 내용을 들고온 것을 보면 backtesting을 과연 제대로 한것인지도 의심이 갑니다. backtesting 실험 환경 세팅도 확인해 보면 결점이 있지 않을까 싶네요. 그리고, 위와 같은 내용은 많은 feature set을 넣고 조합하면 훨씬 더 correlation 높은 것을 만들어 낼 수 있을 것입니다. 즉, 환율과 주가가 상관관계 높은 것은 맞지만, 위의 내용이 투자에 도움되는 정보는 아닌 것입니다.
이와 관련된 재미있는 일화가 있습니다. Alpha Architect 라는 회사의 창업자 Wesley Gray 박사가 쓴 유명한 책인 Quantitative Value라는 책 (번역서도 있습니다) 을 보면 David Leinweber 박사의 일화가 나옵니다.
라인웨버는 수 많은 지표들을 넣어서 어떠한 지표가 S&P 500 지수를 가장 잘 예측하는지를 조사했습니다. 그 결과 방글라데시의 버터 생산량 관계가 가장 높다고 나왔죠. 무려 75% 의 정확도로 예측했다고 합니다. 놀랍지 않나요? S&P 500은 전 세계 주식시장의 반 이상을 차지하는 미국 경제의 가장 핵심 지수인데, 이걸 그렇게 높은 정확도로 예측한다는 것은 떼돈을 벌 수 있다는 이야기죠. 주식시장에서는 51% 정확도만 예측할 수 있어도 떼돈을 벌 수 있습니다. 그래서 박사는 추가로 조사를 했고, 미국의 치즈 생산량을 추가하니 무려 95% 까지 정확도가 올랐다고 합니다. 거기에 미국과 방글라데시의 양 개체수까지 추가하니 무려 99% 까지 예측 정확도가 올라갔다고 합니다. 정말 어마어마하지 않나요? 이 정보를 기자들이 열심히 얻어서 기사를 쓰기까지 했다고 합니다.
근데 이것은 사실 라인웨버 박사가 데이터 마이닝의 위험성을 경고하기 위해서 일부러 만든 결과입니다. 물론, 방글라데시 버터 생산량이나 양의 개체수와 관련도가 높게 나온 것은 맞고 결과를 조작한 것은 아닙니다만, 이 결과를 투자에 사용할 수는 없습니다. 이러한 실험은 실험 세팅에 따라서 달라질 수도 있으며 수 많은 feature set을 넣으면 그 중에 한두가지는 정답과 상관관계가 높게 나올 수 밖에 없습니다.
데이터를 분석할 때, 그리고 머신러닝 알고리즘을 활용해서 학습을 할 때 수 많은 feature set을 가지고 실험을 합니다. 이러다 보면 우연히 정답과 correlation이 과하게 높은 feature 가 나오는 경우도 많습니다. 그리고 통계적 알고리즘이나 머신러닝 알고리즘 모두 그러한 feature 에 overfitting 되는 경우가 꽤 많습니다. overfitting을 줄이기 위해 다양한 regularization 방법도 사용하곤 하는데, 위의 사례와 같은 문제는 그걸로 해결되지는 않는 경우가 많습니다. 잘 기억은 안나는데 예전에 꽤 유명한 NLP 알고리즘도 이러한 문제가 있었습니다.
그리고 사실 이러한 케이스가 꽤 많은데요, 유명한 모델의 경우 다양한 분석을 하다 보니 문제가 있다는 게 밝혀지기도 하지만 많은 연구들이 제대로 분석되지 않아서 그냥 넘어가는 경우가 많습니다. (그래서 성능이 좋은 뭔가가 나왔다고 해도 교차 검증이 이뤄지지 않는다면 그냥 쉽게 믿어서는 안됩니다. 결과는 얼마든지 장난칠 수 있습니다.)
만일 상식적으로 생각 해 봤을 때, 뭔가 말이 안되는 것 같고 이상하다면 반드시 의심해 볼 필요가 있습니다. 직관이나 상식은 사실 굉장히 중요한 요소입니다. (그렇기 때문에 뉴스기사에 나오는 통계는 엉망인 경우가 많습니다. 특히나 통계는 목적이나 의도에 맞게 얼마든지 마사지 할 수 있습니다.)
예전 글에서 다룬 것 처럼 이쪽 업계는 머신러닝 알고리즘만 잘 쓰면 다 해결된다고 생각하는 경우가 꽤 많은데, 실제로는 전혀 그렇지 않습니다. 통계학이나 AI/ML 와 관련된 분야를 하는 사람들이라면, 실제 세상의 문제에 기술을 접목할 때 이렇게 데이터 마이닝과 관련된 실수를 할 가능성이 높기 때문에 그 결과를 주의 깊게 살펴 볼 필요가 있습니다. 현업에서 본 결과 숙련된 Data Scientist 라도 이러한 실수를 하는 경우가 있었습니다. 그렇기 때문에 다양한 경험이 중요하며, 도메인 지식 또한 중요한 것입니다. Data Scientist 신입과 숙련자의 알고리즘 등에 대한 이해는 크게 차이나지 않을 수 있습니다. 하지만 이러한 직관이나 도메인 지식 등에서 그 차이가 많이 날 수가 있는 것입니다.
물론 이에 대한 예외로 제임스 사이먼 교수의 Rentec 같은 투자회사를 예로 들 수도 있습니다. Rentec은 투자 전문가가 아닌 수학/과학/기술 전문가만을 채용하는걸로 유명하지요. 근데 이는 공개를 안 해서 그렇지 내부적으로 분명 알고리즘을 투자 분야에 적용하기 위해 다양한 도메인 지식과 직관을 활용할 것이고 추가적인 안전장치도 있을 것입니다. 기술만을 맹신하다가는 문제가 될 수 있기 때문에 이와 관련된 리스크 관리가 분명 이뤄져 있을 것입니다.
투자라는 큰 돈이 몰리는 분야에서도 이러한 실수들이 나오는데, 사람의 생명을 다루는 의학분야와 같은 데서는 오죽할까요. 의학에서도 통계학이 굉장히 중요한 요소인데요, 의학 분야의 경우 데이터가 한정적이다 보니 이러한 실수들이 굉장히 많이 발생합니다. 그래서 의학 저널의 내용들이 서로 상충되는 것 처럼 보이는 결과들이 굉장히 많이 나옵니다.
AI/ML 분야에서도 그냥 우연히 or 별 의미 없이 모델을 조금 수정하거나 튜닝했을 때 특정 데이터셋에 좀 더 좋은 결과를 내서 SOTA를 달성했다고 주장하는 경우가 굉장히 많습니다. 요즘 많은 연구결과들이 쏟아져 나오지면 SOTA를 달성했다고 주장하는 결과들에 피로감을 느끼는 것은 이 때문입니다. 이와 비슷하게 Kaggle competition 같은 경우에도, 실력을 쌓기 좋은 플랫폼인 것은 맞지만 이러한 문제와 관련된 결과들이 종종 발생합니다.
사실 이러한 것들은 feature set이 많아질수록, 데이터셋이 그리 크지 않을수록 발생하기 쉽습니다. 이론적으로는 다양한 방법론들이 많지만 실제 현업에서 overfitting 문제를 해결하는 것이 그리 간단한 문제는 아닌 것이죠. 그렇기 때문에 알고리즘이 내 놓은 결과를 해석할 때 항상 주의깊게 살펴 볼 필요가 있고, 기술 활용시에는 해당 분야와 관련된 도메인 지식이나 직관 등을 중요한 요소로 활용하는 것이 좋습니다.
물론, 이와 같은 것들이 요즘 같은 속도가 가장 중요한 기업 환경에서는 쉽지 않은 것들이지만, 정말 중요한 곳에 사용되는 모델이라면 반드시 교차검증과 깊이 있는 분석과정을 거칠 필요가 있습니다. 상식적으로 잘 이해되지 않지만 잘 동작하는 모델이 있다면 특성이 좀 다른 데이터셋을 더 보강해서 검증을 해야 합니다.
딥러닝 같은 representation learning 알고리즘이 대세가 되면서 feature engineering이나 feature 분석, 데이터셋 분석에 대한 관심이 줄어들었는데, feature set 분석하는 것은 여전히 중요합니다. 특히나 요즘에는 데이터의 중요성이 더 커지고 있습니다. 제가 보기에는 앞으로 더 중요해질 것 같습니다.
여기서 다룬것은 단순한 한 가지 사례일 뿐이고, 현업에서는 다양하게 해석을 잘못하는 사례들이 많습니다. 그렇기 때문에 분석가나 개발자라면 데이터 분석을 소홀히 해서는 안될 것입니다. 그리고 이와 관련된 일을 하지 않는 사람들이더라도, 상식적으로 이상한 결과라면 쉽게 믿어서는 안되고 한번쯤 의심을 해 볼 필요가 있습니다. 세상에는 사기꾼도 너무 많고, 의도하지 않았더라도 잘못된 데이터들이 너무 많기 때문입니다.