새소식

딥러닝

머신러닝 프로젝트 Flow

  • -

OO홈쇼핑: 요즘 가장 핫 한 패션을 기반으로 다음 시즌에 잘 팔릴 패션을 예측하고 싶어요.

AI Engineer: ???

 

→ 모델 입출력 정의:

        - 입력: 현재 및 이전 두 시즌에서 핫 한 패션 데이터

        - 출력: 다음 시즌 핫 한 패션 데이터

→ 모델 정의:

       - 시간에 따른 입력 데이터의 경향성을 파악하여 미래를 예측

       - Predictive Problems: Classify, Forecast, Anomaly, Cluster, Time Series

→ 데이터 구축:

       - OO홈쇼핑 자체 데이터 구성 확인

       - 불충분할 시, 추가 데이터 확보 필요 ↦ 데이터 크롤링 기반 문제 해결

         (타 업체 명예훼손하지 않는 선에서 데이터 크롤링으로 해결 가능)

       - 데이터 구성은 어떻게 할지  

       - 모델에 맞는 데이터 구성 필요

       - 사용하는 모델에서 쓴 데이터의 구성에 맞게 가공

+  데이터 구축 팁

- Feature를 잘 학습할 수 있도록 합리적인 학습 데이터 수량 필요

- Outlier가 존재하지 않게 수집

- 데이터의 출처가 다양할 경우, format 통일 필요

- Image / text 데이터의 경우, 꼼꼼한 preprocessing을 통해 model이 각 데이터의 핵심 데이터를 학습할 수 있도록 준비

 

 

 


문제 정의

머신러닝, AI, 데이터 사이언스, 개발 등 대부분 업무에서 항상 문제 정의가 선행되어야 함

How보다 Why에 집중

 

풀려고 하는 문제가 명확하지 않으면 그 이후 무엇을 해야 할지 결정하기 어려워짐

머신러닝 알고리즘, 개발 능력도 중요하지만, 근본적인 사고 능력도 중요 문제를 충분히 정의하고 고민하는 습관을 만드는 것이 중요함

- 해결해야 하는 문제는 무엇이고 그 문제를 해결하면 무엇이 좋을까? 어떻게 해결하면 좋을까?

 

앞으로의 겪을 일의 대부분 문제로 정의될 수 있음

- 문제 정의 : 특정 현상을 파악 → 그 현상에 있는 문제(Problem)을 정의

- 문제를 잘 풀기(Solve) 위해선 문제 정의(Problem Definition)이 매우 중요

현상 파악

- 어떤 일이 발생하고 있는가?

- 해당 일에서 어려움은 무엇인가?

- 해당 일에서 해결하면 좋은 것은 무엇인가?

- 추가적으로 무엇을 해볼 수 있을까?

- 어떤 가설을 만들어 볼 수 있을까?

- 어떤 데이터가 있을까?

구체적인 문제 정의

- 무엇을 해결하고 싶은가?

- 무엇을 알고 싶은가?

 

앞선 현상을 더 구체적으로 명확한 용어로 정리해보기

처음 방문하는 손님들의 어려움을 확인하기 위해 데이터를 확인하고, 처음 방문하는 분들에게 인터뷰를 통해 질문

그 결과, 가게의 메뉴가 너무 다양하고 설명이 부족해서 메뉴를 선정하기 어려워서 만족도가 낮음

문제 상황 : 메뉴가 너무 다양해서 선정하기 어렵다

원인

- 메뉴가 다양하다

- 설명이 부족하다

 

해결 방안

- 메뉴를 줄인다? 비즈니스 상황에 따라 일시적으로 줄일 수는 있지만 궁극적인 해결일지는 반신반의

- 설명을 늘린다?  당장 수정할 수 있는 요소. 어떤 상황에 이 음식을 먹으면 좋은지 가이드를 줄 수 있음

 

당장 진행할 수 있는 설명을 늘리는 방식을 사용하고, 병렬로 손님의 취향에 기반한 음식을 추천할 수 있지 않을까? 설명을 늘리는 방식

= 룰 베이스(만약 이런 음식을 좋아한다면 이런 부분을 추천드려요)

 

데이터로 할 수 있는 일을 만들어서 진행하되, 무조건 알고리즘 접근이 최상은 아니라는 방법을 제시할 수 있어야 함(간단한 방법부터 점진적인 접근)

: 시간의 제약을 받고 있기 때문

결론

- 문제를 쪼개서 파악해보자

- 문제의 해결 방식은 다양하다

- 해결 방식 중에서 데이터로 해결할 수 있는 방법을 고민

- 점진적으로 실행하기

 

프로젝트 설계

문제 정의 후, 프로젝트의 설계를 최대한 구체적으로 하는 것이 좋다

 

문제 정의에 기반해서 프로젝트 설계

- 해결하려고 하는 문제 구체화

- 머신러닝 문제 타당성 확인

- 목표 설정, 지표 결정

- 제약 조건(Constraint & Risk)

- 베이스라인, 프로토타입

- 평가(Evaluation) 방법 설계

[머신러닝 문제 타당성 확인]

- 머신러닝 문제를 고려할 때는 얼마나 흥미로운지가 아니라 제품, 회사의 비즈니스에서 어떤 가치를 줄 수 있는지 고려해야 함

- 머신러닝 문제 타당성 평가하기 : 복잡도를 평가하는 방법은 필요한 데이터의 종류와 기존 모델이 있는지 확인

 

- 머신러닝 문제는 결국 데이터로부터 어떤 함수를 학습하는 것

- 머신러닝은 모든 문제를 해결할 수 있는 마법의 도구가 아님

- 머신러닝으로 해결할 수 있는 문제지만 머신러닝 솔루션이 최적이 아닐 수도 있음

머신러닝이 사용되면 좋은 경우 : 학습 패턴, 목적 함수, 복잡한 패턴, 데이터 존재, 반복 실행 문제

머신러닝이 사용되면 좋지 않은 경우 : 비윤리적 문제, 간단히 해결 가능한 문제, 데이터 X, 예측 오류가 치명적 결과를 발생시킬 때, 모든 결정이 설명 가능해야 할 때, 비용이 효율적이지 않을 때

[목표 설정]

프로젝트의 목표

- Goal : 프로젝트의 일반적인 목적, 큰 목적

- Objectives : 목적을 달성하기 위한 세부 단계의 목표(구체적인 목적)

예시)

Goal: 랭킹 시스템에서 고객의 참여(Engage)를 최대화하고 싶음

Objectives :

- NSFW(Not Safe For Work) 컨텐츠 필터링을 통해 사용자에게 불쾌감을 줄임

- 참여에 따른 게시물 랭킹 선정 : 사용자가 클릭할 가능성이 있는 게시물 추천

최적화 시에 윤리적 문제가 발생할 수 있음

: 극단적으로 클릭을 유도하기 위해 자극적 컨텐츠를 노출할 수 있음

새로운 Goal : 극단적인 견해와 잘못된 정보의 확산을 최소화하며 사용자의 참여 극대화를 목표

새로운 Objectives

- NSFW 컨텐츠 필터링

- 잘못된 정보 필터링

- 품질에 따른 게시물 랭킹 선정 : 좋은 품질인 게시물

- 참여에 따른 게시물 랭킹 선정 : 사용자가 클릭할 가능성이 있는 게시물

[제약 조건]

- 일정 : 프로젝트에 사용할 수 있는 시간

- 예산 : 사용할 수 있는 최대 예산은?

- 관련된 사람 : 이 프로젝트로 인해 영향을 받는 사람은?

- Privacy : Storage, 외부 솔루션, 클라우드 서비스 등에 대한 개인 정보 보호 요구

- 기술적 제약

- 기존에 운영하고 있던 환경 : 레거시 환경(인프라)가 머신러닝 적용할 때 큰 제약일 수 있음

- 윤리적 이슈 : 윤리적으로 어긋난 결과

- 성능

- Baseline : 새로 만든 모델을 무엇과 비교할 것인가? 기존에 사람이 진행하던 성능 or 간단한 회귀

- Threshold : 확률값이 0.5 이상일 경우, 0.7 이상일 경우로 정할 것인지?

- 해석 가능 여부 : 결과가 왜 발생했는지 해석이 필요할까? 해석이 필요한 사람은?

- Confidence Measurement : False Negative가 있어도 괜찮은지?

[베이스라인, 프로토타입]

- 모델이 더 좋아졌다고 판단할 수 있는 Baseline이 필요

- 꼭 모델일 필요는 없음

- 자신이 모델이라 생각하고 어떻게 분류할지 Rule Base 규칙 설계

- 간단한 모델부터 시작하는 이유

- 어떻게든 모델의 위험을 낮추는 것이 목표가 되어야 함

- 가장 좋은 방법은 최악의 성능을 알기 위해 허수아비 모델로 시작하는 것

- 초기엔 단순하게 사용자가 이전에 선택한 행동을 제안할 수도 있고, 추천 시스템에선 제일 많이 구매한 것을 추천할 수도 있음

- 유사한 문제를 해결하고 있는 SOTA 논문 파악해보기 -> 우리의 문제에선 어떤 시도를 해볼 수 있을까?

- 베이스라인 이후에 간단한 모델을 만들면 피드백을 들어보면 좋음

- 회사의 동료들에게 모델을 활용할 수 있는 환경 준비

→ 프로토타입을 만들어서 제공

    - Input을 입력하면 Output을 반환하는 웹페이지

    - 이왕이면 좋은 디자인을 가지면 좋지만, 여기선 모델의 동작이 더 중요

     - HTML에 집중하는 것보다, 모델에 집중하는 게 중요

    - 이를 위해 Voila, Streamlit, Gradio 등을 활용

[Metric Evaluation]

앞선 문제를 해결할 경우 어떤 지표가 좋아질까?를 고민해야 함

이 부분은 작게는 모델의 성능 지표(RMSE) 일 수 있고

크게는 비즈니스의 지표일 수 있음(고객의 재방문율, 매출 등)

지표를 잘 정의해야 우리의 Action이 기존보다 더 성과를 냈는지 아닌지를 파악할 수 있음

 

머신러닝 프로젝트는 궁극적으로 수익을 높이는 것이 목표

직접적으로 광고나 추천 시스템이 보여줘서 구매로 이어지는 경우

간접적으로 기업의 이익 극대화에 영향을 미칠 수 있음

- 전환율 증대 -> 매출 증대

- 반복 업무 자동화 => 내부 직원의 리소스 효율로 인한 비용 절감

- 간접적으로 더 높은 고객 만족도 창출, 웹사이트에서 보내는 시간 늘리기 등

- 개인화된 솔루션을 제공해 서비스를 더 많이 사용하도록 만들어 매출을 증가시킬 수 있음

[Action(모델 개발 후 배포 & 모니터링)]

앞서 정의한 지표가 어떻게 변하는지 파악

- 현재 만든 모델이 어떤 결과를 내고 있는가?

- 잘못 예측하고 있다면 어떤 부분이 문제일까?

- 어떤 부분을 기반으로 예측하고 있을까?

- Feature의 어떤 값을 사용할 때 특히 잘못 예측하고 있는가?

[비즈니스 모델]

회사에서 업무할 때 중요한 것이 무엇인지 알아야 함

즉, 비즈니스에 대한 이해도가 높을수록 문제 정의를 잘 할 가능성이 높음

1) 회사의 비즈니스 파악하기

2) 데이터를 활용할 수 있는 부분은 어디인가? (Input)

3) 모델을 활용한다고 하면 예측의 결과가 어떻게 활용되는가? (Output)

누군가 산업에 대해 정리해둔 Paper가 있는지 찾아보기

예) awesome mobility machine learning github

해당 산업 군에서 사용하는 기술

-> 해당 비즈니스에 어떻게 적용할 수 있을까

-> 추가 가치 발견

-> 머신러닝, AI가 비즈니스에 영향을 주는 과정을 이해

[비즈니스 모델 파악하기 비즈니스 모델]

1) 회사의 비즈니스 파악하기 : 회사가 어떤 서비스, 가치를 제공하고 있는가?

2) 데이터를 활용할 수 있는 부분은 어디인가? (Input)

- 데이터가 존재한다면 어떤 데이터가 존재하는가?

- 데이터로 무엇을 할 수 있을까?

- 해당 데이터는 신뢰할만한가? 데이터 정합성은 맞는가? 레이블이 잘 되어있는가? 계속 받을 수 있는가?

- 다양한 팀에 있는 분들과 직접 인터뷰하는 것도 좋은 방법

3) 모델을 활용한다고 하면 예측의 결과가 어떻게 활용되는가? (Output)

- 고객에게 바로 노출(추천, 얼굴 필터 등) -> 더 좋은 가치 제공 / 매출 증대

- 내부 인원이 수동으로 진행해야 하는 업무를 자동화할 수 있음

 

 

728x90
Contents