어떤 레몬이 문제인지 찾기: ML로 비즈니스 가치를 평가하고 최적화하기
최근 MLOps 강의에서 영감을 받아, 이번에는 머신러닝으로 비즈니스 가치를 창출하는 방법을 더 깊이 살펴보려 합니다. 다만 많은 경우 처음부터 프로젝트의 실행 가능성을 평가하는 방법을 배우지 않은 채 시작한다는 점을 짚고 넘어가겠습니다.
이 글은 AI로 번역되었습니다. 가능한 오역은 댓글로 알려 주세요.
Created on September 15|Last edited on September 15
Comment
목차(클릭하여 펼치기)
배경
비즈니스 가치를 극대화하기 위해 ML 프로젝트를 평가하고 조정하는 능력은 대부분의 데이터 사이언스 교육 과정에 포함되어 있지 않습니다. 그러나 데이터 사이언티스트로서 경력 성공을 위해 꼭 필요한 핵심 역량이 될 수 있습니다. 사실, 우리는 이 주제를 다음에서 자세히 논의했습니다. Weights & Biases MLOps 코스의 레슨 3이 글에서는 가상의 프로젝트를 예로 들어 비즈니스 가치를 평가하는 과정을 구체적으로 살펴보겠습니다.
머신러닝 프로젝트가 비즈니스에 가치를 더하는 방식은 매우 다양합니다. 이러한 서로 다른 유형의 머신러닝 프로젝트는 비즈니스 가치를 평가하는 방법론도 각각 다릅니다. 제 경력에서 저는 주로 두 가지 유형의 프로젝트를 접했습니다:
1) 기존 비즈니스 프로세스 최적화이는 보통 사람들이 수작업으로 수행하던 프로세스를 최소한 부분적으로라도 자동화하는 것을 포함합니다. 사람의 개입이 없는 시스템의 효율을 높이도록 최적화하는 경우도 있습니다. 예시는 다음과 같습니다:
- 수요를 충족하면서 낭비를 줄이기 위해 판매를 예측하여 재고를 더 정확하게 배분하기
- 고객이 구매할 더 나은 제품을 추천하기
- 사기 의심 행위를 예측하여 사람이 검토하도록 표시하기
2) 머신러닝 이다 제품. 이는 모델의 출력물이 고객에게 직접 판매되거나, 머신러닝이 제품 범주를 완전히 새로운 것으로 바꾸어 놓을 것으로 기대되는 경우를 말합니다. 예시는 다음과 같습니다:
- DALL·E mini와 같은 도구로 자연어에서 예술 작품 생성하기.
- 자율주행 자동차
- GitHub Copilot처럼 더 나은 자동 완성으로 개발자의 코딩을 돕는 모델.
위에 나열한 것들 외에도 다양한 프로젝트 유형이 있다는 점을 먼저 밝혀 둡니다. 다만 실무에서 머신러닝을 적용하는 입장이라면, 여러분이 가장 자주 마주칠 범주는 이 두 가지라고 생각합니다. 이 글에서는 첫 번째 유형, 즉 기존 비즈니스 프로세스를 최적화하라는 요청을 받는 프로젝트의 사례를 함께 살펴보겠습니다.
가상의 시나리오다렉은 레몬 농장을 운영합니다. 품질 관리를 위해 다렉은 상당한 규모의 농산물 검사 인력을 고용하고 있습니다. 하지만 다렉을 늘 괴롭혀 온 한 가지 지속적인 품질 관리 문제가 있습니다. 바로 곰팡이입니다.
곰팡이가 핀 레몬은 제품 품질에 대한 고객의 신뢰를 떨어뜨릴 뿐만 아니라, 다렉이 레몬 가격과 관련 배송비를 환불해야 한다는 점에서도 큰 문제가 됩니다. 게다가 인력 부족과 기타 시장 상황 때문에 농산물 검사원을 구하는 일이 점점 더 어렵고 비용도 많이 들고 있습니다.
다행히 농장은 포장 공정 중 각 레몬에 대한 디지털 기록을 보관하고 있으며, 무작위로 검사된 레몬에 대한 라벨도 포함되어 있습니다. 이렇게 데이터가 모두 갖춰져 있으니, 다렉은 데이터 사이언티스트인 당신에게 이 과정의 일부를 자동화할 수 있는지 묻습니다.

이 레몬들에는 곰팡이가 하나도 없지만, 모두 Stable Diffusion으로 생성된 것입니다.
프로젝트 실행 가능성 평가
제 경험상 비즈니스 파트너들은 문제의 해답이 아닐 수도 있는데도 종종 머신러닝이 정답이라고 가정합니다. 그러다 보니 곧바로 ML 프로젝트에 뛰어들어 코드를 쓰고 싶어지는 유혹에 쉽게 빠질 수 있습니다. 게다가 ML에 대한 열의는 데이터 사이언티스트가 섣불리 프로젝트를 시작하게 만들기도 합니다. 비즈니스가 원하는 바로 그 해결사라는 말은 그들에게 정말 달콤하게 들리기 때문입니다.
하지만 현실은 이렇습니다. ���떤 프로젝트를 할지 올바르게 고르고, 사전에 비즈니스 가치를 평가하는 일은 데이터 사이언티스트나 ML 실무자로서 장기적인 커리어 성공에 결정적입니다.
제 조언은, 주변 사람들이 머신러닝에 아무리 열광하더라도 건강한 회의감을 유지하고 객관적으로 문제에 접근하라는 것입니다. 훌륭한 모음집은 다음에서 찾을 수 있습니다 데이터 사이언스 프로젝트를 시작하기 전에 방향을 잡기 위해 반드시 던져야 할 포괄적인 질문들 여기에서 확인하세요.
가상의 문제를 위해 제안된 프로젝트의 실행 가능성을 평가하는 데 도움이 될 데이터를 수집해야 합니다. 처음부터 문제를 비판적으로 따져보려 합니다:
1) 처음부터 곰팡이는 무엇 때문에 생기나요? 곰팡이를 완화하거나 줄일 수 있는 방법이 있나요?
- 시간에 따라 곰팡이 발생 빈도를 보여 주는 데이터가 있나요? 곰팡이의 원인을 짐작할 수 있는 계절성이나 기타 요인이 데이터에서 드러나나요?
- 다른 레몬 농장에서는 어느 정도의 부패율이 일반적인가요?
2) 현재 프로세스에 수반되는 모든 비용은 무엇인가요?
- 노동 비용(레몬 검사원) — 그리고 노동 비용을 얼마나 줄일 수 있을까요?
- 거짓 음성(곰팡이를 잡아내지 못함)에 따른 비용 — 그리고 현재 프로세스의 곰팡이 식별 정확도(정밀도, 재현율)는 어느 정도인가요?
- 거짓 양성 비용(곰팡이라고 판단했지만 실제로는 아니었을 때)
- 월평균 레몬 판매량은 얼마인가요?
- 대략 레몬의 몇 퍼센트가 곰팡이에 감염되나요?
3) 현재 프로세스 개선을 위한 합리적인 목표는 무엇인가요?
- 합리적인 정확도 지표가 어느 수준일지 시사하는 벤치마크, 연구, 또는 다른 가설이 있나요?
4) ML 접근 방식에 수반되는 비용은 무엇인가요?
- 데이터 사이언티스트, 도구, 인프라의 추가 비용.
- 비용이 다수의 프로젝트에 걸쳐 상각된다고 가정해도 될까요?
첫 번째 질문이 ML과 전혀 관련이 없다는 점에 주목하세요! 해결하려는 문제를 가능한 한 총체적으로 이해하는 것이 중요하며, 그 문제가 다른 방식으로도 해결 가능한지까지 포함해 파악해야 합니다.
데이터 역량을 바탕으로 하면, 다른 사람들과는 다른 방식으로 비즈니스 프로세스를 이해하고 문제를 발견할 수 있습니다. 제 경험상 상당히 많은 사례에서, 비즈니스 문제의 근본 원인을 찾아 ML이 필요 없도록 만든 적이 있습니다. 또 다른 경우에는, 문제를 깊이 이해하는 데 시간을 들인 덕분에 아무도 기대하지 않았던 추가적인 비즈니스 가치를 발굴할 수 있었습니다.
마지막으로, 이 연습을 수행하면 이해관계자와의 소통에 도움이 되고 더 나은 해결책을 구축하는 데 필요한 중요한 도메인 지식을 얻게 됩니다. 이 시나리오에서는 곰팡이를 실질적으로 줄일 수 있도록 변경할 수 있는 외부 프로세스가 없으며, 발생하는 곰팡이는 이 유형의 레몬 농장에서 일반적으로 나타나는 수준이라고 가정해 봅시다.
데이터 ��집하기
이제 관련 데이터를 수집할 시간입니다. 아래는 이 시나리오에서 우리가 수집한 데이터입니다. 실제로는 비즈니스 파트너와 함께 이 숫자들 중 일부를 합리적으로 추정해야 할 수도 있습니다. 이 과정에는 시간이 걸릴 수 있지만, 프로젝트의 타당성을 제대로 평가하기 위해 충분히 투자할 가치가 있습니다.
- 월별 레몬 판매량: 150만
- 인건비 비용: 월 $100,000
- 곰팡이가 있는 레몬의 비율: 15%
- 현재 거짓 음성률: 27%
- 목표 거짓 음성률: 20%
- 레몬 1개당 거짓 음성 비용: $1.50
- 레몬 1개당 거짓 양성 비용: $0.25
- 현재 거짓 양성률: 3%
- 데이터 사이언스 인력 및 인프라 비용: $15,000
이해관계자들은 위에서 필요한 지표를 수집할 수 있도록, 추정치나 관련 데이터를 확보하는 데 도움을 줄 수 있어야 합니다. 다만 한 가지 중요한 예외가 있습니다. 바로 마지막 항목인 데이터 사이언스 인력 및 인프라 비용입니다. 예를 들어, 필요한 데이터나 라벨, 툴링이 갖춰져 있지 않다면, 이를 확보하는 데 드는 시간과 인프라가 프로젝트를 실행 불가능하게 만들 수 있습니다. 또한 이 비용을 여러 향후 프로젝트에 걸쳐 분산(상각)할 수 있는지 등 해당 가정을 이해관계자들과 확인하는 것이 좋습니다.
모델 구축 및 평가
이 프로젝트가 실행 가능하다고 판단했고 비즈니스 이해관계자들과 가정을 검토했다면, 이제 모델 구축을 진행할 수 있습니다. 평가 데이터를 신중하게 분할하고, 모델 평가를 위한 적절한 지표를 선택해야 합니다. 또한 실제 데이터를 기반으로 오류 분석을 수행하여 접근 방식의 문제를 조기에 진단하고 발견해야 합니다.
비즈니스 가치를 위한 모델 튜닝
이제 모델이 준비되었으니, 다음 단계는 모델이 창출할 수 있는 잠재적 비즈니스 가치를 평가하고 이 모델을 의사결정에 어떻게 활용할지 보정하는 것입니다. 예를 들어, 어떤 예측 확률에서 레몬을 폐기할지 결정하시겠습니까? 거짓 양성과 거짓 음성의 비용 구조에 따라 임의로 임계값을 0.5로 두기보다는, 그에 맞춰 의사결정 임계값을 보정하는 편이 더 합리적일 수 있습니다.
이를 수행하는 간편한 방법 중 하나는 검증 세트에 대한 모델의 예측을 사용해, 모델이 얼마나 추가적인 가치를 창출할지 시뮬레이션하는 것입니다. 이러한 이유로, 빠르게 조회할 수 있도록 이 예측값들을 Weights & Biases에 로깅해 두면 편리합니다.
Weights & Biases에 예측값을 로깅할 때 사용할 수 있는 코드 예시는 다음과 같습니다:
inp,preds,targs,out = learn.get_preds(with_input=True, with_decoded=True)inp.shape, preds.shape, targs.shape, out.shapeimgs = [wandb.Image(t.permute(1,2,0)) for t in inp] # we need to put as channels last for wandb.Imagepred_proba = preds[:,1].numpy().tolist()targets = targs.numpy().tolist()predictions = out.numpy().tolist()preds_df = pd.DataFrame(list(zip(imgs, pred_proba, predictions, targets)),columns =['image', 'probability', 'prediction', 'target'])run.log({'predictions_table': wandb.Table(dataframe=preds_df)})run.finish()
마찬가지로, 예측값을 조회할 때 사용할 수 있는 코드 예시는 다음과 같습니다:
import wandbimport pandas as pdfrom fastcore.all import Pathdef val_pred_table(run_id, entity='wandb_course', proj='lemon-project'):"Get prediction table on the validation set for the lemon project."api = wandb.Api()path = api.artifact(f'{entity}/{proj}/run-{run_id}-predictions_table:v0').download()preds = (Path(path)/'predictions_table.table.json').read_json()return pd.DataFrame([{'pred':p, 'label':t} for _,p,_,t in preds['data']])if __name__ == '__main__':preds = val_pred_table('zxum4ef0')preds.to_excel(Path('Validtation_Predictions.xlsx')
다음 단계는 예측 결과를 스프레드시트에 불러오고, 타당성 검토 때와 마찬가지로 가정 값을 채워 넣는 것입니다. 이렇게 하면 서로 다른 의사결정 임계값을 적용해 시뮬레이션을 실행하고, 잠재적 비즈니스 가치를 평가하며, 최적의 의사결정 임계값을 선택할 수 있습니다.
이런 종류의 스프레드시트는 대략 다음과 같은 형태일 것입니다:

아래 영상에서 저는 이 스프레드시트 시뮬레이션을 단계별로 안내하고, 각 요소가 무엇을 의미하는지 설명합니다. 함께 따라 하시려면 다음 파일을 다운로드하세요. Excel 스프레드시트.
이익 곡선
의사결정 임계값을 보정할 때 유용한 시각화 중 하나가 이익 곡선입니다. 이익 곡선은 서로 다른 임계값에 대해 추정되는 추가 비즈니스 가치를 표시합니다. 아래는 레몬 사례에 대한 이익 곡선입니다.

의사결정 임계값을 너무 낮게 또는 높게 설정하면 비즈니스 가치가 음수가 된다는 것을 알 수 있습니다. 임계값이 너무 높으면 모든 레몬에 곰팡이가 있다고 판단하게 됩니다. 반대로 임계값이 너무 낮으면 어떤 레몬에도 곰팡이가 없다고 판단하게 됩니다. 이러한 극단적인 경우는 모두 비즈니스에 부정적인 영향을 줍니다. 이 사례에서는 최적의 임계값이 대략 0.3 정도이며, 이는 거짓 음성의 비용이 거짓 양성보다 훨씬 크기 때문입니다.
이익 곡선을 만드는 것은 시뮬레이션에서 오류를 찾아내는 디버깅 단계로도 유용합니다. 서로 다른 임계값에 대해 한계 비즈니스 가치를 플로팅하여 이익 곡선을 생성할 수 있습니다. 위의 예시에서는 시뮬레이션에서 임계값을 0.1 단위로 조정하여 수동으로 그래프를 만들었습니다. 코드나 다른 방법으로 이익 곡선을 구성할 수도 있지만, 빠르게 반복하기 위해 처음에는 스프레드시트로 시작할 것을 권합니다.
결론
이는 비즈니스 가치를 위해 ML 프로젝트를 평가하고 보정하는 과정이 어떻게 보일 수 있는지를 설명하기 위한 단순 예시임을 밝혀둡니다. 우리는 검증 데이터가 향후 마주하게 될 사례들을 대표한다고 가정합니다. 또한 비용이 안정적이라고도 가정합니다. 이는 매우 큰 가정들이며, 더 복잡한 시뮬레이션이나 재무 모델을 사용해 비즈니스 가치를 평가하는 것이 적절한지 판단해야 합니다.
그럼에도 가능하다면 일을 지나치게 복잡하게 만들지 말라고 조언하고 싶습니다. 이 과정을 밟는 연습 자체가 가치 있는 이유는, 도메인에 ���창해지도록 만들고 이해관계자와의 소통을 더 잘하게 해 주기 때문입니다. 더 나아가, 자신의 프로젝트가 창출하는 비즈니스 가치를 잘 표현하는 능력이 종종 주니어와 시니어 데이터 사이언티스트를 가르는 차별점이 된다는 사실을 저는 여러 번 확인했습니다. 더 배우고 싶다면, 이 강의의 3강을 꼭 확인해 보시길 권합니다.
Add a comment