Over-Engineering in Data Science

Jinhwan Kim
7 min readOct 27, 2020

ML에서 model의 performance가 훈련용 데이터에만 잘 들어 맞고
실제 데이터에는 맞지 않는 현상을 overfit 혹은 과적합이라고 하는데

이는 일반적으로 훈련용 데이터에 있는 Outlier 에 영향을 많이 받아서 general 한 부분예측에 상대적으로 약해지는 것과 연관이 있다고 알려져있다.

이는 결국 기껏 만든 model이 방구석 여포가 되어버린다는 말이기 때문에, 아마 수많은 ML engineer나 Kaggler들이 이 문제를 해결하기 위해서 어떻게 model을 깎아야 좋은 결과가 나올까를 고민할 것이다.

그런데 2주전 (10/14일), 재미있는 글의 제목을 읽은 적이 있다. Overengineering in ML — business life is not a kaggle competition

제목만 봤을때는
현실에서는 overfit 이 없으니 주어진 데이터를 전부 싹싹 분석해라.
그런 내용을 말하지 않을까 싶었지만 시간이 없어서 읽기 리스트에만 넣어뒀다가 오늘 아침에 읽었다.

overfit과 overengineering을 혼동한 내 잘못이었다.

OverEngineering이란 제품에 필수적으로 필요한 기능은 아닌데도 불구하고 꾸역꾸역 넣어두는 일을 말한다. 굳이 한국어로 번역하자면 공밀레가 맞는것 같다. (과공학은 좀…)

이를 위한 예시가 뭐가 있을까 고민하다가, 역시 이 분야 원탑은 LG가 아닐까 생각했다. 상용 휴대폰이 50m에서 떨어져도 안터진다니

정의와는 다르겠지만 기능을 기껏 만들어놓고도 홍보를 하지 않는다면 그 또한 overengineering 이 아닐까 생각도 들었다. under-marketing인가

아무튼 읽고 이해한대로 내용을 간단히 정리하면

We may create ( Machine learning models that perform too well )

We may create ( Machine learning models that perform ) too well

이었다.

model 만들때 제대로 잘 좀 만들어라 라는 이야기.

그렇다면 잘 만들어진 model은 무엇일까.

모든 feature 와 데이터, 그리고 data scientist들을 갈아서 만든 Full Edition model이 아닌 base 부터 천천히 “애자일 방식”으로 최소한씩만 추가해가며 만든 model이다. ( occam’s razor 를 생각하면 좋다 )

복잡한 모델이 좋은 경우도 있지만 매번 그렇지는 않고 오히려 이는 앞서 말했던 과적합 이슈가 생길 수도 있다.

이에 조금 더 더해서 무엇보다

현실에서의 business decision making은
단순히 kaggle처럼 어떤 feature가 좋다 나쁘다 영향이 있다 없다를 넘어선
수많은 사람, 요인들의 이해관계가 얽혀 있기 때문에,
아무리 설명이 잘되는 model을 만들어도 적용이 불가능하다면
이는 좋은 model이 아닌 use-less 한 model이 될 것이라고 생각한다.

가령 우리나라의 정부 재정지출을 효율적으로 줄이기 위해서 분석을 했고,
가장 지출 대비 효과가 작은 분야에 대해서 지출을 줄인다 라는 결론이 나왔다고 하자.

그래서 더 분석을 해봤더니 교육이라는 분야는 예산에 관계 없이 사교육시장이 있기 때문에 지출에 관계 없이 효과는 일정 정도가 기대 된다 라는 인사이트를 바탕으로 교육 관련 예산안을 줄였다라면 ( 물론 내 뇌피셜이다 )

여기까지는 꽤 그럴싸한 model 과 desicion making 이라고 할 수 있을 것이다 (여전히 뇌피셜이다)

하지만 실제로 이를 근거로 공교육에 대한 예산을 줄인다면 점점 더 사교육 의존이 늘어나고 동시에 사교육의 영향을 받지 못하는 사람과 그렇지 않은 사람들의 격차가 커질 것이다.

그렇다면 단순한 model 일수록 잘 만들어진 model이다? 라는 생각을 할 수 있었는데 나는 동의 하지 않는다.

예를 들어 CodeStates 에서 의사 결정자가
과연 수강생들의 만족도를 높이려면 어떻게 해야할까?
라는 질문을 가지고 데이터 기반 의사결정을 했다고 하자.

이에 대해서
수강생들 데이터를 바탕으로 분석을 했더니 아주 단순한 model, 즉
성적과 만족도과 크게 연관이 있다
는 인사이트를 얻었다.

그래서 이를 바탕으로
수강생들의 성적을 기본점수도 좀 주고, over-rate해서 평가를 하면 만족도가 아주 하늘을 찍을 것이다
라는 인사이트를 냈다.

아 좋다 그럼 이제 CodeStates의 Data Scientist들은 발닦고 꿀잠 잘 준비하고 이 인사이트를 발표한 뒤 보너스를 기대 할 수 있을까?

아니다. 정말 아니다.

그 이유는 이미 해당 인사이트는 현장의 모두가 알고 있는 인사이트 이기 때문이기도 하고 문제의 본질을 호도 할 수 있는 인사이트 이기 때문이다.

성적이 인플레 된다면 당장 기분은 좋을 수 있겠지만 취업에는 결과적으로 좋은 영향보다 나쁜 영향을 미칠테고 이는 만족도의 하락으로 연결되기 때문이다.

개인적인 생각이지만 Data Scientist의 역할은

  1. 데이터를 기반으로 현장의 인사이트를 검증
  2. 데이터를 기반으로 현장에 없는 인사이트를 발견

이 두가지라고 생각한다. 그렇게 말하고 다니기도 했고

사실 요즘 한가지 더 추가로, 이러한 경험들을 외부로 공유하는 것도 필요하다고 생각한다.

아무튼 앞의 인사이트는 결국 이미 모두가 다 알고 있는걸 다시 한번 확인 한것이고, 이를 만든 model은 simple 이라는 조건은 만족했지만 good and fresh라는 조건은 만족하지 못했다. 즉 좋은 모델이라곤 보기 곤란하다.

내가 참조했던 블로그 글에 추가로 내 생각을 더해서 정리하자면
좋은 model의 두번째 조건은 말그대로 “OverEngineering”을 통해
기존의 굴러가던 model의 필수적인 인사이트외에도 필수적이지 않아 보이는 feature들도 model 자체가 너무 복잡해지지 않는 선에서 ( 계산시간이 뭐 한달 이렇게 걸린다면 대부분 할 필요가 없다고 생각한다 ) 추가된 model이라고 생각한다.

가령, 성적 외에도 수강생들의 urclass ( CodeStates 자체 LMS ) 접속시간이라는 추가 feature도 영향이 있다는 결론을 (당연히 성적보다는 feature importance가 떨어질것이다) 바탕으로 같이 Decision making을 할 수 있게 제공하고.

그렇다면 이제 이를 바탕으로 decision maker들은 이를 비즈니스 입장에서 해석해서
urclass 도 수강생들에게 좋게 평가 되는 요소이니 컨텐츠 뿐만 아니라 해당 시스템의 UI/UX 또한 개선해야겠다
라는 판단을 할 수 있는 것이다.

이를 위해서는 당연히 물리, 비용적으로 허용 가능한 수준에서 최대한 많은 인사이트들을 (그것이 쓸모있는지 아닌지는 DS의 판단을 넘어선다) 뽑아내야 하는 것이다.

잘못된 문제와 데이터 이해에 기반한 엉터리 의사결정의 예시

개인적인 생각을 설명하기 위해 끊임없는 뇌피셜들을 가정했는데 여전히 말도 안되는 것들이 너무 많다. 이래서 “현명한” 의사결정자의 수요가 항상 높은 것 같다.

--

--

No responses yet