파이썬(Python)/머신러닝 공부

머신러닝(Machine Learning) - 개요 / 시작

BlueNoa 2023. 12. 14. 15:37
728x90
반응형

<목차>


• 머신러닝이란?

머신러닝은 컴퓨터 시스템이 데이터를 학습하며 학습 과정의 내용을 기반으로 판단, 예측, 결정을 내리는 인공 지능(AI)의 한 분야다. 이는 명시적(쉽게 관찰되거나, 명확한)인 프로그래밍 없이컴퓨터가 경험을 통해 학습하고 새로운 데이터에 대한 판단을 수행할 수 있도록 하는 기술이다.


반응형

• 머신러닝의 작동 원리

머신러닝은 과거의 경험(데이터)을 기반으로 예측을 하는 데 주로 사용된다. 과거 우리 조상들은 관측 도구(측우기 등)를 통해 매일매일 날씨를 기록하여 "내년 7월 20일엔 비가 올 확률이 높다." 같은 기록 예측을 하였다. 현대에는 '스팸 메일 필터링'이나 '상품 추천 서비스' 등이 대량의 과거 데이터를 기반으로 예측을 수행하는 원리와 비슷하다.

 

이렇게 과거의 데이터를 통해 예측하는 머신러닝의 대표적인 예로는 '지도학습(Supervised Learning)'이다.

각 자료를 이용하여 도출된 결과(모델*)로 예측을 수행하는 데 여기서 입력되는 데이터로는 이미지의 RGB 값들이나 기온이나 속도 등의 수치(벡터화한 것)들이 있다. 출력 데이터는 수치 또는 유형이 될 수 있다.

더보기

- 모델이란?

주어진 입력에서 출력을 예측하는 데 사용되는 수학적인 관계를 수식이나 규칙을 통해 표현한 것

모델은 훈련 데이터로 학습되며, 이를 기반으로 새로운 데이터에 대한 예측을 수행한다.

주로 매개변수와 특징(알고리즘)으로 구성된다.

 

- 모델의 종류

1. 회귀 모델(Regression Model)

출력이 연속적인 값을 가지는 경우 사용. 예를 들어 주택 가격과 같은 문제에 사용된다.

 

2. 분류 모델(Classification Model)

출력이 이산적인 클래스 또는 레이블을 가지는 경우 사용. 스팸 여부 판별, 이미지 분류 등에 해당된다.

 

3 .신경망(Neural Network)

인공 신경망은 머신러닝에서 널리 사용되는 모델 중 하나로, 생물학적 뉴런의 작동을 모방한 구조를 갖고 있다.

 

4. 결정 트리(Decision Tree)

의사 결정 규칙을 트리 구조로 표현한 모델로, 해석이 쉽고 설명력이 높다.

 

작동 과정은 학습 단계와 예측 단계로 이뤄진다.

학습 단계와 에측 단계의 과정

▶ 학습 단계(Training)

더보기

1. 데이터 수집

모델 학습을 위한 레이블이 지정된 훈련 데이터를 수집하며, 데이터는 특징(feature)과 그에 대응하는 정답(label or target)으로 이루어져 있다.

 

2. 특징 추출

훈련 데이터에서 모델이 학습할 수 있는 특징을 추출한다.

 

3. 모델 선택

적절한 머신 러닝 알고리즘과 모델 아키텍처를 선택한다. 예측해야 되는 데이터의 성격과 특성을 고려해야 한다.

 

4. 손실 함수(평균 제곱 오차 MSE 등)와 최적화

모델의 성능을 측정하기 위해 손실 함수를 정의하고, 함수를 최소화하도록 모델을 학습시키는 최적화 알고리즘을 사용한다.

 

5. 모델 학습

훈련 데이터를 사용하여 모델의 가중치(Weight)와 편향(Bias)을 조정하여 손실 함수를 최소화하는 방향으로 학습

▶ 예측 단계(Inference or Prediction)

더보기

1. 새로운 데이터 입력

학습된 모델로부터 새로운 즉, 이전에는 입력하지 않은 데이터를 제공한다.

 

2. 특징 추출

새로운 데이터에서도 모델이 학습한 것과 유사한 특징을 추출한다.

 

3. 모델 예측

추출된 특징을 사용하여 모델은 새로운 입력에 대한 예측을 수행한다.

 

4. 평가

모델이 새로운 데이터에서 얼마나 정확한 예측을 했는지 평가한다. 지표로는 정확도, 정밀도, 재현율 등이 포함된다.

728x90

• 프로젝트 생성 과정

머신러닝 프로젝트는 일련의 과정을 거쳐야 한다.

더보기

1. 문제 정의 및 이해

프로젝트의 목표를 명확히 이해하고 정의해야 한다. 어떤 문제를 해결하려고 하는지, 어떤 유형의 모델을 필요로 하는지 등을 결정해야 하며, 해당 문제가 비즈니스나 실제 응용 분야와 어떻게 연결되는지 이해해야 한다.

 

2. 머신러닝을 사용하는 방법이 적절한지 검토하기

머신러닝에 대한 글을 작성하는 데 머신러닝을 사용하지 않아야 하는 경우를 생각해야 한다는 것이 아이러니 하지만 모든 문제에 대해 머신러닝 기술을 사용하면 또 다른 문제가 발생할 수 있기 때문이다. 예를 들어 다음과 같다.

2-1. 확률적인 부분이 존재하여 테스트가 어려운 경우
2-2. 오랜 시간 사용하면 사용자의 의견이 바뀌어서 데이터에 영향이 가는 경우
2-3. 처리 파이프라인이 복잡해지는 경우
2-4. 데이터 의존관계가 복잡한 경우
2-5. 실험 코드 또는 파라미터가 포함되는 경우
2-6. 개발 시스템과 운영 시스템 간의 언어 또는 프레임워크가 다른 경우

 

3. 시스템 설계

시스템 설계는 예측 결과를 어떤 방법으로 사용할 것인지를 결정하는 단계다.

예를 들어 RDB(관계형 데이터베이스)를 통해 배포하는 방법, 웹서비스나 애플리케이션에서 사용자 액션마다 비동기적으로 예측하는 방법 등이 있다. 또 필연적으로 존재하는 오류를 어떻게 대처할 것인지를 고려해야 한다.

이런 설계 기간의 목표 "일정 기간 안에 정확도 90%를 달성한다." 등을 구성해두는 것이 좋다.

 

4. 데이터 수집과 전처리

문제 해결에 필요한 데이터를 수집하고, 데이터의 양과 품질은 모델의 성능에 큰 영향을 미친다.

수집한 데이터는 시각화하여 데이터 특성을 이해하거나 이상치 또는 패턴발견하여 데이터 전처리를 해야 한다.

 

데이터 전처리는 불필요한 정보를 제외하고, 데이터를 머신러닝에 사용할 수 있는 형태로 바꾸는 과정이다.

(1) 결측치 처리 : 수치 데이터의 누락값이나 정상 범위를 벗어난 이상값을 처리한다.

(2) 특징 공학 : 모델에 사용할 수 있는 적절한 특징을 추출하거나 변형한다. 여기서 특징은 모델에 입력될 정보를 뜻한다. 범주형 데이터인 경우 더미 변수를 사용하여 수치화한다. 

(3) 정규화 및 표준화 : 텍스트 데이터는 단어별 빈도를 세어 빈도가 낮은 단어를 제거하는 등의 조치를 취한다.

 

5. 모델 선택(알고리즘 선택)

(1) 모델 선택 : 과거에 비슷한 유형의 자료를 어떻게 풀었는지 조사해서 적합한 회귀, 분류, 클러스터링 등의 모델 또는 스캐터플롯 매트릭스로 시각화하여 모델을 선택한다.

(2) 학습 데이터 분할 : 전체 데이터를 학습 데이터와 테스트 데이터로 나누어 모델을 훈련하고 검증한다.

(3) 모델 훈련 : 선택한 모델을 학습 데이터에 맞게 훈련시킨다. 손실 함수를 최소화하도록 매개변수를 조정한다.

 

6. 모델 평가

테스트 데이터 평가 : 모델을 테스트 데이터에 적용하여 성능을 평가한다. 정확도, 정밀도, 재현율 등의 지표를 사용하여 모델의 성능을 측정한다.

결과 해석 : 모델의 결과를 해석하고, 비즈니스 요구 사항과 얼마나 일치하는지 확인한다.

 

7. 모델 개선(파라미터 튜닝)

예측 모델에서 99.9%와 같이 아주 높은 성능이 나온다면 의심을 해야 한다. 이런 경우 테스트 데이터에서만 성능이 좋고 처음 보는 데이터에서는 예측을 못하는 '과적합'이거나 테스트 데이터가 일부 섞여 발생하는 '데이터 유출'이 생긴 것이다.

 

과적합을 방지하기 위해선 '교차검증(Cross Validation)'을 사용하여 평균 성능이 높은 하이퍼파라미터를 선택한다.

하이퍼파라미터신경망의 은닉층 개수로지스틱 회귀의 문턱값처럼 모델의 성능을 좌우할 수 있는 값이다.

https://bluenoa.tistory.com/55

 

교차 검증(Cross Validation)

· 교차검증(Cross Validation) 일반적으로 데이터를 사용할 때 dataset에는 Train과 Test로 나눌 데이터(독립변수 또는 Feature)와 Label(종속변수 또는 결과)로 구성되어 있다. ※ 참고로 scikit learn에선 default

bluenoa.tistory.com

https://bluenoa.tistory.com/46

 

회귀분석의 과적합(Overfitting)

· 과적합(Overfitting) 과적합이란 데이터 분석을 진행함에 있어 모델 학습을 과하게 한 경우를 말한다. 학습 데이터에 대한 분석을 과하게 해서 실제 데이터에 대한 적중률이 떨어져서 오차가 증

bluenoa.tistory.com

 

또는 규제화를 사용하거나 학습곡선으로 시각화하여 살펴보는 방법이 존재한다.

 

8. 배포 및 유지보수

모델 배포 : 최종 모델을 실제 운영 환경에 배포한다.

모니터링 및 유지보수 : 모델의 성능을 모니터링하고 필요에 따라 업데이트와 유지보수를 한다.


• 머신러닝 적용 문제 대처

바로 위에서 설명한 프로젝트 생성 과정의 2번(표 참고)에서 머신러닝을 적용하기 적절한지 검토해야 되는 경우에 대해 정리했었다.

해당 문제에 대해 대응하는 방법을 정리하려고 한다.

 

1. 황금 기준을 적용하여 모니터링한다.(2-1, 2-2, 2-4)

확률적인 문제, 응답자의 의견이 바뀌는 경우, 데이터 간의 의존관계가 존재할 때 황금 기준을 적용하여 사람이 모니터링을 해야 한다. 여기서 '황금 기준'이란 모델의 성능을 평가하고 비교하는 데 사용되는 기준을 의미한다.

이는 모델이 얼마나 효과적으로 작동하는지 측정하고 다른 모델이나 방법과 비교할 때 사용된다.

다양한 문제와 모델에 따라 사용되는 황금 기준도 다르기 때문에 이를 적절히 잘 검토해야 한다.

대표적인 황금 기준의 예시는 다음과 같다.

(1) 정확도(Accuracy)
가장 기본적이고 널리 사용되는 평가 기준이기도 하다. 전체 샘플 중에 올바르게 예측한 비율을 나타낸다.

(2) 정밀도(Precision)와 재현율(Recall)
이진 분류 문제에서 사용되며, 양성 클래스(관심을 가지고 예측하려는 대상)의 대한 정확성과 해당 클래스의 실제 존재율을 측정한다. 미세 조정이 필요한 상황에서 황금 기준으로 사용된다.

(3) F1 스코어
정밀도와 재현율의 조화 평균(역수들의 산순 평균)으로, 두 지표 사이의 균형을 나타낸다.

(4) 평균 제곱 오차(MSE, Mean Squared Error) 또는 평균 절댓값 오차(MAE, Mean Absolute Error)
회귀 문제에서 사용되며, 예측 값의 실제 값 간의 차이를 나타낸다.

(5) ROC-AUC(Receiver Operating Characteristic - Area Under the Curve)
이진 분류 문제에서 모데르이 성능을 시각화하고 측정하는 데 사용되는 방법 중 하나다.

(6) 특정 도메인에 따른 특별한 메트릭
특정 응용 분야에서는 특별한 메트릭이 필요할 수 있다. 예를 들어 의료 영역에서는 모델의 예측이 얼마나 정확하게 이루어지는지에 대한 특화된 메트릭이 필요할 수 있다.

 

2. 예측 모델의 알고리즘에 대한 A/B 테스트를 실시한다.(2-2)

과거 응답자의 응답과 시간이 지나 동일한 응답자의 응답 결과가 바뀌는 경우가 존재하거나 모듈의 개선 전/후 등이 있다.

그렇기 때문에 'A/B 테스트'를 사용하는 데 A/B 테스트란 두 가지 또는 그 이상의 변형을 비교하여 어떤 변형이 더 효과적이었는지를 판단하는 실험적인 방법이다. 이를 모듈화한 알고리즘에 대입해서 보면 여러 모델을 두고 병렬로 A/B 테스트를 진행할 수 있다. 

 

A/B 테스트로는 랜덤화(참가자들을 랜덤으로 할당),

변형(Variations : A그룹과 B그룹으로 전/후 비교),

목표 지표(Metric : 실험 목적에 따라 성과 지표를 선택하고 측정한다. 대표적으로 크릭률, 구매율, 이용자 유입 등),

통계적 검정(실험이 통계적으로 유의미한지 확인),

실시간 모니터링(실험 중에는 지속적으로 결과를 모니터링하고, 언제든지 중간에 실험을 중단하거나 수정하는 것) 등이 있다.

 

3. 모델을 버전 관리하여 언제든 원하는 시점으로 롤백(2-4, 2-5)

데이터 사이의 의존 관계 또는 코드나 파라미터 등의 수정 또는 데이터 형식 변경, 처리 과정 중 문제 발생으로 인해 예측 성능이 떨어지거나 예측 불가한 상황이 올 수 있다.

그렇기 때문에 이전 버전의 모델로 언제든지 롤백할 수 있도록 해야만 한다. 소스 코드, 모델, 데이터 전부 버전별로 관리하는 것이 좋다.

 

4. 데이터 처리 파이프라인 저장(2-3, 2-5)

데이터 처리 파이프라인이란 데이터를 수집하고, 정제, 저장, 분석하는 일련의 작업 단계를 의미한다.

각 과정을 저장하기 때문에 하이퍼 파라미터, 전처리 과정, 예측 모델 구축 등 파라미터의 수가 많아지고 데이터가 복잡해지는 경우 저장한 파이프라인을 조정하여 사용할 수 있다..

이는 데이터를 비즈니스나 분석 목적에 맞게 효과적으로 처리하고 활용하기 위한 구조적인 체계를 제공한다.

사이킷런(파이썬 머신 러닝 라이브러리)이 추상화가 잘 되어 있어 데이터 처리를 파이프라인으로 만들기 수월하다. 또 이에 영향을 받은 스파크 등의 라이브러리 역시 파이프라인을 통해 재사용이 가능하다. 

 

※ 파이프라인 과정

더보기

1. 데이터 수집(Data Collection)

- 원천 데이터 수집 : 외부 소스, 로그 파일, 센서 등에서 원천 데이터를 수집한다.

- 이벤트 추적 : 웹사이트 또는 응용 프로그램에서 발생하는 이벤트를 추적하고 수집한다.

- API 호출 : 외부 서비스나 데이터베이스에서 데이터를 가져오기 위해 API를 호출한다.

 

2. 데이터 전처리(Data Preprecessing)

- 데이터 정제 : 불완전하거나 오류가 있는 데이터를 정제하고 처리한다.

- 변환 및 통합 : 데이터를 필요한 형식으로 변환하고 여러 소스의 데이터를 통합한다.

- 데이터 샘플링 : 대규모 데이터셋에서 불필요한 부분만을 추출하여 처리한다.

 

3. 데이터 저장(Data Storage)

- 데이터베이스 저장 : 구조화된 데이터를 DB에 저장하여 검색과 분석을 용이하게 한다.

- 분산 저장 시스템 : 대용량의 데이터를 효과적으로 저장하기 위해 분산 저장 시스템을 활용한다.

- 클라우드 스토리지 : 클라우드 기반의 스토리지 서비스를 사용하여 저장한다.

 

4. 데이터 처리(Data Processing)

- 배치 처리 : 주기적으로 일관적으로 데이터를 처리하는 방식으로 대용량 데이터를 처리한다.

- 스트리밍 처리 : 실시간으로 데이터를 처리하고 분석하여 실시간 통찰력을 제공한다.

- 머신 러닝 모델 적용 : 데이터를 기반으로 머신 러닝 모델을 훈련하고 적용하여 예측, 분류 작업을 수행한다.

 

5. 결과 제공 및 시각화(Result Delivery & Visualization)

- 대시보드 및 리포트 : 데이터의 요약된 정보를 제공하는 대시보드 및 리포트를 생성한다.

- 시각화 도구 활용 : 데이터를 시각적으로 표현하여 이해하기 쉽고 의사 결정에 도움이 되는 시각화를 제공한다.

 

6. 모니터링 및 유지보수(Monitoring & Maintenance)

- 성능 모니터링 : 데이터 처리 파이프라인의 성능을 지속적으로 모니터링하고 병목 현상을 확인한다.

- 오류 처리 : 데이터 품질이나 파이프라인 실행 중 발생하는 오류를 식별하고 처리한다.

- 유지보수 : 변경된 데이터 소스, 새로운 요구 사항 등에 대응하기 위해 파이프라인을 유지보수한다.

 

데이터 처리 파이프라인

 

5. 개발 시스템과 운영 시스템 간의 언어/프레임워크 일치(2-6)

예측 모델을 파이썬 또는 R을 이용해서 제작했지만 배포를 위한 애플리케이션은 자바로 해야 되는 경우를 생각해보면 해당 문제의 상황을 이해하기 쉽다. 기존의 모델 개발에 사용한 알고리즘을 변경해야 되므로 비용과 시간이 소요되고 최악의 경우 구현할 수 없는 상황이 발생할 수 있다.

 

예측 모델을 만드는 데에는 여러 번의 실험을 거쳐야 하고 코드도 정리되지 않은 경우가 상당수다.

그렇기 때문에 처음부터 별도의 API 서버를 통해 머신러닝 학습을 수행하는 방법도 좋다.


• 머신러닝 프로젝트 역할군

머신러닝 프로젝트를 진행하기 위해서는 참여자들이 맡는 각각의 역할이 매우 중요하다.

웹 서비스처럼 개발 주기를 자주 가질 수 없는 데이터 형태도 있기 때문에 길게는 수개월이 걸리는 프로젝트가 있을 수 있다. 다음은 범주별로 구성한 역할이다.

 

1. 도메인 전문가(Domain Expert)
2. 통계 및 머신러닝 전문가(Statistics and Machine Learning experts)
3. 엔지니어(Engineer)
4. 책임자 또는 관리자(Director or Administrator)

 

1. 도메인 전문가(Domain Expert)

캐글을 통해서 올라오는 머신러닝 자료들을 보면 전문적인 문제 해결 능력을 요구로 하는 자료들이 올라온다. 그렇기 때문에 해당 분야의 전문가는 빼놓을 수 없는 필수요소다. 전반적인 프로젝트의 방향을 결정하고, 비즈니스 프로세스, 기술적 측면의 폭넓은 지식(문제 해결을 위한 전문 분야 지식)을 기반으로 도메인 전문가의 통찰력은 프로젝트의 길잡이라고 볼 수 있다.

 

2. 통계 및 머신러닝 전문가(Statistics and Machine Learning experts)

도메인 전문가가 전문 지식을 소유한 프로젝트 매니저라는 느낌이면 통계와 머신러닝을 다루는 전문가는 데이터 과학자라고 보면 된다. 데이터를 탐색하고 모델을 개발하여 비즈니스 문제를 해결하는 주체이자 통계, 머신러닝, 딥러닝 등의 기술을 활용하여 모델을 구축하는 역할을 한다.

 

3. 엔지니어(Engineer)

엔지니어는 간단히 말해서 인프라를 구축하는 역할이다. 데이터 수집, 저장, 전처리 등의 관련된 기술적인 부분을 담당하는 데이터 엔지니어, 머신러닝 기술을 실제 서비스에 통합하는 소프트웨어 엔지니어, 클라우드 기술을 이용한 클라우드 엔지니어, 품질 보증을 위한 QA 엔지니어, 보안 등의 관리를 전반적으로 맡는 역할을 한다.

 

4. 책임자 또는 관리자(Director or Administrator)

프로젝트 전반을 책임을 담당하는 사람이다. 머신 러닝 프로젝트의 실패 확률을 책임지고 성공을 해야 하기 때문에 머신 러닝과 데이터 분석 경험이 풍부한 사람이 해당 역할을 맡아 위험 요소들을 잘 파악하여 팀원들을 이끌어 나갈 수 있는 사람이어야 한다.


• 머신러닝 프로젝트와 일반적인 프로젝트의 유사점과 차이점

머신러닝 프로젝트와 일반적인 프로젝트(회사에서 진행하는 프로젝트 등) 관리에는 유사한 점과 차이점이 존재한다.

 

유사점

더보기

각 프로젝트의 수명 주기가 존재하며 목표 달성과 품질 향상을 위해 팀 단위의 프로젝트가 진쟁된다.

 

차이점

더보기

1. 데이터 중심

머신 러닝 프로젝트는 데이터에 중점을 둔다. 데이터의 품질, 양, 다양성이 모델의 성능에 크게 영향을 주며 일반적인 프로젝트는 데이터가 중요하긴 하나 머신러닝 프로젝트만큼 중점적이진 않다.

 

2. 모델 구축과 평가

머신러닝 프로젝트는 모델의 구축과 평가가 핵심 단계이다. 적절한 알고리즘과 모델 아키텍처 선택, 학습 데이터를 기반으로 한 모델 훈련, 평가 지표를 통한 성능 평가 등이 중요한 요소이다.

 

3. 불확실성과 실험

머신러닝에서는 불확실성이 상대적으로 더 높다. 예측 모델이나 분류 모델은 항상 일정 수준의 불확실성을 포함하고 있으며, 실험과 검증을 통해 모델의 예측 불확실성을 평가한다. 일반적인 프로젝트에서는 보기 힘든 특징이다.

 

4. 커뮤니케이션의 중요성

머신러닝 프로젝트에서는 결과의 해석과 모델의 의미를 이해하기 위한 커뮤니케이션이 특히 중요하다.

도메인 전문가, 비전문가 간의 원활한 소통이 필요하다. 일반적인 프로젝트도 커뮤니케이션이 중요하지만, 머신러닝은 모델의 작동 방식, 예측의 근거 등을 이해하고 설명해야 하는 경우가 많다.

 

 

 

 

 

[참고 책] - 머신러닝 실무 프로젝트

 

 

728x90
반응형