STUDY/DevCourse

[데브코스][데이터 분석] 데이터 기반 제품 개선

_알파카 2024. 2. 21. 16:43
728x90

< 2주차 데이터 분석 소개(3) >

머신러닝을 기반으로 한 제품 개선이 무엇인지 알아보자!

3-1. 데이터 기반 제품 개선(Product Science)이란?

: 머신러닝 기술을 사용해 제품/서비스의 기능을 개선하는 것에 대해 살펴보자.

 

데이터 과학자의 역할(Product Science)

- 머신러닝 형태로 사용자들의 경험을 개선

: 중요한 문제를 정의(가설 정의) -> 데이터 수집(머신러닝 모델에 따라 수집방법이 달라짐) -> 예측 모델 생성 -> 테스트

(테스트는 훈련데이터의 일부를 사용 / A.B 테스트를 수행하는 것이 좋음)

(짧은 사이클로 단순하게 시작해서 고도화하는 것이 좋음 -> 에자일 방법론)

 

데이터 과학자에게 필요한 스킬셋

: ML/DL에 대한 깊은 지식과 경험

: 코딩 능력(파이썬, SQL)

: 통계 지식, 수학 지식 -> 있으면 좋지만 필수는 아님!  

: 끈기와 열정 (박사 학위가 도움이 되는 이유 중 하나)

: 다양한 경험 (여러가지 경험을 해 본 사람들이 오히려 경험을 통해 새로운 인사이트를 뽑아낼 수 있음! )

: 현실적인 접근 방법 -> 애자일 기반의 모델링(워터풀 모델링 X ), 딥러닝이 모든 문제의 해답은 아님! 

: 과학적인 접근 방법 -> 지표기반 접근, 모델의 목표와 측정 방법

 

=> 제일 중요한 것은 모델링을 위한 데이터! -> 데이터 보유량이 새로운 빈부격차를 보임

 

 

모델 개발 전체 과정(애자일 방법론)

문제정의(가설 정의)

-> 훈련용 데이터 수집 -> 모델 빌딩 및 테스트 -> 모델 배포 -> 모델 A/B 테스트 -> A/B 테스트 결과 분석

-> 모델 개선 -> 전체 론칭

 

 

3-2. 머신 러닝이란?

머신러닝 모델링 예 - 개인화된 추천 엔진

: "유데미" 회사에서는 추천 시스템을 규칙 기반에서 머신 러닝 기반으로 전환. 

-> 머신러닝 모델 도입 전에는 마케터들이 규칙 기반 추천 ->마케터들의 의욕이 떨어질까봐..  A/B 테스트를 통해 그 장점을 실제로 테스트해서 보임

 

머신러닝 모델링 예 - 사기 결제 감지

강의를 살 때 사기 결제 케이스가 발생함

-> 훈련 데이터를 수집하는 두 가지 방법

1) 실제 사례 수집(신용카드 회사와 협업)

2) 이상값 탐지를 실행하고 사람에게 검토 요청(휴먼 인더 루프)

 

=> 패턴을 찾아 사기 결제 감지

(만약 훈련데이터가 잘못 수집되었다면.. 머신러닝이 편향성을 가져 윤리적인 문제가 발생할 수 있음

/ ex. 제약회사에서 인종 및 나이등의 훈련데이터에 편향이 있어 제대로 모델 개발을 못하면 다양한 윤리적 문제 생길 수 있음)

 

머신러닝 모델링 예 - 환자 이상 징후 예측

- 원격 환자 모니터링에 많이 사용됨

- 환자의 다양한 측정 데이터를 기반으로 환자의 상태가 혹시라도 치료를 필요로 하는지 예측

-> 환자의 문제가 커지기 전에 환자의 병원 입원이나 응급실 방문을 막는 것! 100% 정확할 필요 없이 50% 정도만 정확해도 좋음

 

머신러닝 모델링 예 - 농업용 자율 트랙터

- 존디어는 ML을 사용하여 자율 트랙터 개발

-> 밭을 탐색하고 사람보다 더 효율적으로 심기 및 수확과 같은 작업을 수행

 

의료 이미지 (Medical Imaging) 분석

: 기존에는 사람이 분석하여 시간이 매우 오래걸림. 

- 로봇 방사선 기술자의 대두

- VoxelMorph라는 오픈소스 프레임웍은 딥러닝을 이용해 몇 초만에 MRI 분석

-> 시간 축소 및 정확도 향상

- 초음파 사진 기반의 심장병 진단 기술

 

그러나, 잘못된 진단의 경우 누구 책임인가? 

따라서, 사람이 한 번 더 확인필요 -> 머신러닝 모델이 사람의 일 완전 대체가 아닌 정확성을 높이는 수단임. 

 

 

3-3. ML 모델 개발시 고려할 점

: 머신러닝이 무엇이고 어떤 종류가 있을까?

 

머신 러닝(Machine Learning)의 정의

: 구체적으로 프로그래밍을 하지 않고 배울 수 있는 능력을 컴퓨터에게 주는 분야의 연구

"배움이 가능한 기계의 개발"

- 결국 데이터의 패턴을 보고 흉내내는 방식 (imitation)

- 컴퓨터가 학습할 수 있도록 하는 알고리즘과 기술을 개발하는 분야 (지도학습 / 비지도학습)

- 딥러닝(인공신경망)은 이 중의 일부 -> 컴퓨팅 자원을 많이 사용. 클라우드 개념이 나오며 발전함

- AI는 머신러닝을 포괄하는 개념

 

 

머신 러닝 모델이란?

- 머신러닝 학습을 통해 최종적으로 만드는 것이 머신러닝모델

-> 특정 방식의 예측을 해주는 블랙박스(알고리즘의 내부가 어려줌. 디버깅이 쉽지 않음)

-> 입력 데이터를 주면 그를 기반으로 예측

(정확히 얘기하자면 Supervised ML (지도기계학습) )

 

- 모델 트레이닝 / 빌딩

" 만들어진 모델을 실제 서비스에 배포하기 위해 API 형태로 만드는 사람 = MLOps "

 

 

머신 러닝의 종류

- 지도 기계 학습

: 정답이 존재하는 학습 방법

-> 분류 지도 학습 : 이진 분류 / 다중 분류 (분류할 것이 정해져있음)

-> 회귀 지도 학습 : 예측 대상이 연속적인 숫자 (가격 예측 등)

 

과정

: 트레이닝 셋(X(입력데이터), Y(예측값)) -> 학습 알고리즘 -> 머신러닝모델 생성 -> 배포

 

예시) 타이타익 승객 생존 여부 예측

- 이진분류문제

- 탑승 승객별로 승객 정보와 최종 생존 여부가 트레이닝 셋으로 제공됨

- 기존 필드로부터 새로운 필드를 뽑아내는 것이 일반적 : Feature Engineering

 

예시) 스팸 웹 페이지 분류기

- 문자열 데이터는 머신러닝 모델로 활용 불가 -> 수치형 데이터로 변경 필요

-> 명사/조사/목적어 등... 의 조합 / 명사만의 조합

-> 두 가지 웹페이지의 차이를 수치형 데이터로 바꾸어 형태소 분석을 통해 조사/명사의 비율을 찾고

스팸 웹 페이지 분류기 가능 -> 피처 엔지니어링의 중요성! 

 

- 비지도 기계 학습

: 데이터를 주면 특정 기준을 기준으로 그룹핑함. 

: 클러스터링 혹은 뉴스 그룹핑처럼 주어진 데이터를 몇 개의 그룹으로 분리

: GPT 같은 언어 모델의 훈련도 여기에 속함

 

예시) Language Model (초거대 언어 모델 : Large Language Model (LLM))

- ChatGPT 와 같은 언어 모델

- 문장의 일부를 보고 비어있는 단어를 확률적으로 맞추는 모델

- 언어 모델은 어떤 문장을 주었을 때 다음에 나오는 단어 예측 가능

 

- 강화학습

: 알파고 혹은 자율주행

 

 

3-4. ML 모델 개발 시 고려할 점

: 머신러닝 개발에서는 모델 빌딩 뿐만 아니라 실제 서비스 배포까지도 중요. 그 사이 과정이 매우 중요함

 

모델 개발 시 데이터 과학자 & 엔지니어들의 일반적인 생각

데이터 과학자 -> 주어진 문제를 잘 풀기 위한 머신러닝 모델만을 개발! 

-> 이 모델을 받은 엔지니어의 입장 : 모델이 어떤 형태인가, 어떻게 적용할 것인가가 중요한 포인트임. 

-> 데이터 과학자가 주로 서비스 배포와 운영에 관해 신경쓰지 않음

-> 파이썬 모델 주로 사용(R로 만든 모델은 백엔드에서 배포&사용하기 어렵기 때문)

 

엔지니어 -> 머신러닝 모델을 받긴 했는데 어떻게 배포하지?

-> 모델 배포하는 과정이 어려움 (논쟁 발생)

 

마찰이 생기는 지점 - 개발된 모델의 이양 관련

- 많은 수의 데이터 과학자들은 R을 비롯한 다양한 툴로 모델 개발

- 하지만 실제 프로덕션 환경은 R로 만든 다양한 모델들을 지원하지 못함

: 개발/검증된 모델의 프로덕션 환경 론치시 시간이 걸리고 오류 가능성이 존재

: 심한 경우 모델 관련 개발을 다시 해야함 (피쳐 계산과 모델 실행 관련)

=> R 대신 Python으로 머신러닝 모델 개발!! 

 

 

모델 개발 시 꼭 기억할 포인트

- 모델 개발부터 최종 런칭까지 책임질 사람 필요

: 모델 개발은 시작일 뿐이고 성공적인 프로덕션 론치가 최종적인 목표

-> 런칭이 아닌 운영을 통해 점진적인 개선을 이뤄내는 것이 중요

: 이 일에 참여하는 사람들이 같이 크레딧을 받아야 협업이 더 쉬워짐

-> 최종 론치하는 엔지니어들과 소통하는 것이 중요

 

- 모델 개발 초기부터 개발/론치 과정을 구체화하고 소통

: 모델 개발시 모델을 어떻게 검증할 것인지?

: 모델을 어떤 형태로 엔지니어들에게 넘길 것인지?

-> 피쳐 계산을 어떻게 하는지? 모델 자체는 어떤 포맷인지?

: 모델을 프로덕션에서 A/B 테스트할 것인지?

-> 한다면 최종 성공판단 지표가 무엇인지?

 

- 개발된 모델이 바로 프로덕션에 론치가능한 프로세스/프레임웍이 필요

: 예를 들어 R로 개발된 모델은 바로 프로덕션 론치가 불가능

 

: 트위터: 데이터 과학자들에게 특정 파이썬 라이브러리로 모델개발 정책화

-> 툴을 하나로 통일하면 제반 개발과 론치 관련 프레임웍의 개발이 쉬워짐

 

: 머신러닝 전반 개발/배포 프레임웍의 등장

-> 머신러닝 모델 개발, 검증, 배포를 하나의 프레임웍에서 수행

 

-> AWS SageMaker가 대표적인 프레임웍

--> 검증된 모델을 버큰 클릭 하나로 API 형태로 론치 가능!

--> AutoPilot이란 AutoML 기능도 제공 (자동으로 ML 모델 생성. 기초 모델을 생성해 발전하면 좋음)

 

-> Google Cloud와 Azure도 비슷한 프레임웍 지원

-> 우버/리프트/넷플릭스 등의 IT 기업도 자체 머신러닝 개발/배포 프레임웍을 개발

 

- 피드백 루프가 필요

: 운영에서 생기는 데이터, 인사이트를 가지고 개선점 찾기

: 주기적으로 모델을 재빌딩하고 배포 (이 과정을 반복)

==> 이를 자동화하는 것이 필요 (Continous Model Update and Monitoring)

===> 이로 인해 탄생한 직군이 MLOps

 

 

3-5. MLOps란?

: 머신러닝 모델 빌드, 배포, 모니터링 전체 프로세스를 자동화하는 직군!

-> 머신러닝 모델이 한 번 만들어지면, 시간이 지날수록 성능이 떨어지게 됨. 

-> 데이터가 계속해서 변화하기 때문에. 

 

Data Drift로 인한 모델 성능 저하

: ML 모델에서 가장 중요한 것은 훈련 데이터

: 시간이 지나면서 훈련에 사용한 데이터와 실제 환경의 데이터가 다르게 변화함 (시간이 지날수록 모델의 성능이 떨어짐)

-> 이를 Data drift라고 부르며 이를 모니터링하는 것이 중요

: 즉 주기적으로 ML 모델을 다시 빌딩해주는 일이 필요 => 이 일을 하는 직군이 MLOps

 

<MLOps vs. DevOps>

DevOps가 하는 일은?

 

- Deliver software faster and more reliably in automated fashion

- 개발자가 만든 코드를 시스템에 반영하는 프로세스 (CI/CD)

- 시스템이 제대로 동작하는지 모니터링 그리고 이슈 감지시 escalation 프로세스 수행. 

개발을 직접 하지는 않지만 모든 서비스를 알아야함

-> On-call 프로세스 (밤 혹은 주말에도 on-call 필요)

: 개발자들이 만든 코드를 동작하고, 배포를 할 수 있는 형태로 변경, 모니터링, 이슈 해결

 

MLOps가 하는 일은?

- Deliver ML models faster and more reliably in automated fashion

- 앞의 DevOps가 하는 일과 동일. 차이점은 개발자 코드가 아니라 ML 모델이 대상이 된다는 점

- 모델을 계속적으로 빌딩하고 배포하고 성능을 모니터링

-> ML모델 빌딩과 프로덕션 배포를 자동화할 수 있을까? 계속적인 모델 빌딩(CT)과 배포!

: 모델 서빙 환경과 모델의 성능 저하를 모니터링하고 필요시 escalation 프로세스 진행

-> Latency의 중요성 (실행시간의 중요성, 모델이 얼마나 빨리 결과를 return 하는가)

-> Data drift 측정 (피처별 어떤 형태로 분포가 이루어지는지  .. )

 

 

< CI & CD & CT >

CI (Continuous Integration )

 

- Developers frequently merge code changes into a central repo

- Building and testing are automated

: 개발자가 코드를 변경할 때마다 테스트를 돌려 새로 체크인된 코드의 문제가 없음을 확인

 

CD (Continuous Delivery or Deployment)

- Passing builds (packages) are deployed directly to the production environment

: CI의 발전. CI가 문제없이 끝난 코드를 자동으로 프로덕션에 배포

: 실패없이 실행이 끝나면 자동으로 사용자 서비스에 배포됨 -> 짧은 수정을 짧은 시간안에 배포

 

CT (Continuous Train)

: 계속해서 자동으로 훈련데이터를 수집하여 모델을 빌딩 & 테스트 & 배포하는 단계를 자동화

-> 실수의 가능성 최소화

(CI/CD의 역할을 데이터과학자가 만든 모델에 적용한 것이 CT)

 

 

MLOps 엔지니어가 알아야하는 기술

: 데이터과학자, DevOps 엔지니어, 머신러닝 엔지니어의 교차점! 

 

- 데이터 엔지니어가 알아야 하는 기술

: 파이썬/스칼라/자바

: 데이터 파이프라인과 데이터 웨어하우스

 

- DevOps 엔지니어가 알아야 하는 기술

: CI/CD, 서비스 모니터링, …

: 컨테이너 기술 (K8S, 도커)

: 클라우드 (AWS, GCP, Azure)

: Infrastructure As Code (Configuration As Code)

 

- 머신러닝 관련 경험/지식

: 머신러닝 모델 빌딩과 배포

: ML 모델 빌딩 프레임웍 경험

-> SageMaker, Kubeflow, MLflow

 

 

3-6. 머신러닝 사용 시 고려할 점

: 머신러닝(AI)을 제대로 사용하는 것은 쉽지 않다. 어떤 고려할 점이 있을까?

 

데이터 윤리와 주의할 점, MLOps

: 데이터로부터 패턴을 찾아 학습

-> 데이터의 품질, 크기가 중요

-> 데이터로 인한 왜곡 발생 가능 ==> AI 윤리 문제

-> 내부동작 설명 가능 여부 중요 ==> ML Explainability

-> 데이터 권리도 중요한 문제

 

 

데이터 기반 AI는 완벽한가?

- 트레이닝셋의 품질은 어떤가?

: 트레이닝셋의 품질이 데이터기반 AI의 성능을 결정짓는 요소 (데이터 양도 중요하지만 품질도 중요, Garbage In Barbage Out)

: 미국 EMR이 아주 좋은 예 - 환자에 대한 의료정보를 나타내는 데이터. 그러나, 시스템의 용도가 법적인 제재를 받지 위해 기록해 둔 데이터이기 때문에 환자의 건강상태, 병력 등을 예측하기 위한 데이터가 아님

==> 좋은 데이터인듯 하지만 용도가 맞지 않는 데이터. 신뢰도 작업을 통해 판단 후 사용 필요

 

- AI 도입 시 가능한 문제들을 어떻게 해결할 것인가?

: 왜 어떤 결과가 나왔는지 설명이 가능한가?

: 알고리즘 자체에 인종이나 특정 편향성이 있지는 않은가?

 

- 많은 시도와 실패가 필요 -> 혁신을 만들어 낼 생태계와 법률이 필요

: 이러한 모든 것들이 처음부터 잘 되지는 않으므로, 다양한 시도 필요! 

 

- EU의 관련 법규는 많은 시사점을 줌: Trustworthly AI

-> AI와 머신러닝의 발전으로 인해 생기는 이슈들을 해결할 법을 만들 때 사용할 수 있는 가이드라인!

  • 감독 (human agency and oversight)
    • 관리감독없이 모델 개발을 맡기면 어떤 일이 일어날지 모름! 
  • 견고성과 안전성 (robustness and safety)
  • 개인 정보 보호 및 데이터 거버넌스 (privacy and data governance)
    • 모델에서 사용한 데이터 중 개인정보가 있는지 확인 필요
  • 투명성 (Transparency)
    • 모델이 어떻게 동작하는지 투명하게 보이면 좋음
  • 다양성과 비차별성과 공정성 (Diversity, nondiscrimination and fairness)
    • 데이터 수집에 있어 차별이 있으면 안되고 다양성을 존중해야함
  • 사회/환경 친화적 (Societal and environmental well-being)
    • AI가 사회/환경에 친화적이여야함. 많은 전기, 열을 소비하면 지구온난화의 주범이 됨
  • 문제 발생시 책임 소재(Accountability) 
    • 모델을 통해 결정했을 때 문제에 책임 필요

 

 

 

잘못된 개인정보 보존으로 인한 페널티

HIPAA (Health Insurance Portability and Accountability Act)

: 개인 의료 정보 보호를 목적으로 하며1996년부터 효력 발표

: 다음과 같은 전자 의료 정보를 보호하려는 목적: ePHI (electronic Protected Health Information)

: 개인을 식별할 수 있는 정보로 대략 18개가 존재

-> 이름, 주소, 생년월일, 전화번호, 이메일 주소, 주민등록번호, 라이센스 번호, IP 주소 등등

-> MRN (Medical Record Number), 계좌 정보, 바이오메트릭 정보 (지문 등)

--> 개인 식별 정보를 잘 조합하면 개인을 식별할 수 있음 -> 노출 시 법적 제재 필요

 

GDPR/CCPA

: 각각 유럽연합과 미국 캘리포니아 주의 온라인 상에서 개인정보 보호에 관한 법률

-> 불필요하게 데이터를 저장하면 안된다! 

: 꼭 필요할 시 데이터 암호화!

-> 예를 들면 데이터 저장시 암호화, 데이터 송수신시 암호화 (암호화 프로토콜 사용)

+ 기업만의 정보가 아니기에 개인이 원하면 언제든 정보를 삭제해야함. 

 

 

집단 이기주의: 의료분야 예

- 한국에서는 왜 비디오 진료가 안 될까?

: 1999년에 이미 서울대 병원과 분당 KT가 원격 진료 연결 시범 사업을 했음

: 코로나로 한시 허용된 원격의료, 의사 반발에 또 표류: 의료법이 여전히 개정되지 못함

-> 미국은 50개주 모두 일정 부분 원격 진료 허용 (Telehealth Parity Law)

: 원격진료는 과연 의사들에게 나쁜 영향을 줄까? -> 새로운 시대의 발전에 맞는 개방적인 발전이 필요함

 

- AI 발전에 영향받는 분야의 교육 방향에 대한 시사점

: AI 시대에 의사의 역할은 무엇인가? 진료시간 확대와 공감 능력을 더 중요시?

: 기존 교육 시스템의 점검 뿐만 아니라 재교육 필요성 증대

-> 일이 없어진다기 보다는 바뀐다는 점이 강조되어야 함 (일을 없애는 것이 아닌 일을 바꾼다는 것에 강조!)

 

- 세상의 변화를 거스르기 보다는 새로운 역할을 찾는 것이 더 건강하지 않을까?

 

AI의 발전과 미래 직업의 변화: 예) 의사의 역할

- AI는 의사를 대체하기 보다는 의사의 효율성과 진단/치료의 정확성을 높이는 보조적 역할

: 현재 의사는 다른 잡무로 인해 환자와 충분한 시간을 보내지 못함

: 아무리 경험이 많은 의사라 해도 실수를 할 수 있고 의사마다 굉장히 다른 진료결과를 냄

-> AI는 진단 절차를 체계적으로 만들고 작업을 빠르고 정확하게 하는데 사용가능

--> 일종의 의사결정트리 (Decision Tree) (AI 보조 시스템)

 

- 중단기적으로 의사의 역할에 대해 재고가 필요

: 그에 따라 교육 시스템도 변경이 필요

: 데이터 관련 교육 (Data Literacy)이 절대적으로 필요

: 환자와의 진료/대화 (공감)에 더 많은 시간을 쏟아야 한다는 새로운 교육 필요! 

-> Compassionomics(책 제목)에 따르면 공감을 더 잘하는 의사에게 진료를 받은 환자가 더 좋은 의학적 결과가 보였고 공감을 더 잘하는 의사들이 일을 더 재미있게 하고 번아웃이 덜 되었다고 함

 

 

미래의 의사 모습은 어떨까?

- 현대 비행기의 기장 역할이 좋은 예

: 현대 비행기 조종사는 비행 소프트웨어가 보여주는 각종 정보를 대시보드를 통해 제공받음

-> 대부분 운행은 직접 조종하는 것보다 기계의 도움을 받아 비행기를 조종함. 

 

: 조종사들은 소프트웨어가 주는 정보를 따라하는데 거부감이 없음

: 또한 조종사들은 매번 비행마다 안전을 보장하기 위해 반드시 체크해야하는 리스트가 존재

 

 

- 미래의 의사도 비슷하지 않을까?

: 인공지능 기반의 각종 진단과 치료 정보를 제공받고 그걸 기반으로 의료 서비스를 제공

-> 이를 통해 효율적이고 오진이 적은 의료 서비스 제공

: 의사들의 진료전 체크리스트

-> 병원에서 발생하는 많은 이차감염은 의사/간호사들의 비위생적인 행동으로 발생

--> 예를 들면 수술전에 손을 씻지 않음

-> 이렇게 간단하지만 필수적인 행동들을 체크리스트로 관리하고 시행

 

 

3-7. 실습: 지표 정의하고 차트 만들어보기

Simple ML for Sheets

- 구글 스프레드시트의 무료 확장판

- 시트 상의 데이터를 훈련 데이터로 사용하여 간단한 모델을 만들 수 있음

(컬럼 중 하나를 label or field로 사용 가능! )

 

* 아래 글에 실습 부분을 정리해두었습니다. 

2024.02.21 - [EXCEL] - [Google Sheets] Simple ML for Sheets 사용 방법 및 예제 실습

 

[Google Sheets] Simple ML for Sheets 사용 방법 및 예제 실습

Google Sheet를 이용해 지표를 정의하고 차트를 만들어보자! Google Sheet란? - 구글의 스프레드시트를 의미한다. Microsoft Excel에 대응하여 구글에 만든 웹 기반 서비스로, 인터넷 연결만으로도 사용할

yeonnys.tistory.com

 

728x90