데이터분석
47-(1). 지도학습과 대표 알고리즘
장수우
2024. 2. 2. 17:51
학습 주제
- 지도학습 알아보기
- 대표 알고리즘
주요 학습 내용
- Scikit-learn
- '사이킷런'은 다양한 머신러닝 알고리즘이 구현되어 있는 오픈 소스 패키지
- 내부 작동 과정을 하나하나 확인할 수 있다. - 데이터 처리, 파이프라인, 여러 학습 알고리즘, 전/후처리 등 다양한 기능을 제공한다.
- 현업이나 학계에서도 널리 사용된다. - 타 파이썬 패키지와 과학 분석 목적 패키지와 연동이 좋다.
- 제공하는 머신러닝 모델 및 알고리즘은 아래 객체의 메서드를 전부 혹은 일부를 사용한다.
- 통일된 API 호출 시스템을 구성해 사용자가 손쉽게 사용할 수 있는 인터페이스를 제공하기 위함이다.
- Estimator (추정기)
- fit() 메서드를 활용하여 학습을 진행
- 데이터로부터 패턴을 학습하고 결과로 모델 내부 파라미터를 조정 - Predictor (예측기)
- predict() 메서드를 활용
- 학습된 모델을 사용해 새로운 데이터에 대한 예측을 수행한다. - Transformer (변환기)
- 데이터를 새로운 형태로 변환하기 위해 transform()메서드 활용
- 군집화, PCA 차원 축소 등의 과정을 위해 fit_transform() 메서드를 활용 - Model (모델)
- 모델의 학습 적합도를 확인할 수 있다록 score()메서드를 제공
- 학습된 모델의 성능을 평가할 수 있다.
- '사이킷런'은 다양한 머신러닝 알고리즘이 구현되어 있는 오픈 소스 패키지
- 파이프라인, Pipeline
- 머신러닝 워크플로우의 여러 단계를 하나의 수준으로 연결하는 작업
- 데이터 전처리부터 모델 학습과 예측까지 원하는 범위의 작업을 하나로 묶을 수 있다.
- 효율적으로 코드를 작성하고 관리할 수 있다.
- Pipeline은 이름과 추정기 객체가 (key, value) 쌍으로 구성되어야 한다.
- Pipeline 구성을 손쉬게 하려면 make_pipeline 함수를 활용
https://scikit-learn.org/stable/modules/generated/sklearn.pipeline.make_pipeline.html - Pipeline의 가장 마지막을 제외하고는 모두 변환기여야 한다
- 다음 과정으로 데이터를 넘겨줘야 하기 때문 - 마지막은 추정기, 예측기, 변환기가 올 수 있다.
- 추정기나 예측기가 온다면 fit()과 predict()를 사용해 모델 학습과 추론을 진행할 수 있다.
- 변환기가 온다면 단순 전처리기 정도로 사용할 수 있다. - 마지막 단계의 컴포넌트는 파이프라인의 최종 메서드에 영향을 미친다.
- 만약 마지막 컴포넌트가 변환기라면 fit()과 predict()메서드를 사용할 수 없다.
- Numpy
- Python에서 다차원 배열 연산, 행렬 연산, 고수준의 수학 함수, 난수 생성과 같은 과학적인 계산을 위한 패키지
- 데이터분석, 머신러닝의 기반이 되는 필수 라이브러리
- scikit-learn에서 사용하는 기본 데이터 구조가 Numpy의 배열
- Pandas
- Python에서 사용하는 패키지로 데이터 분석 기능을 제공하는 패키지
- 엑셀, CSV, 데이터베이스와 같은 다양한 파일에서 데이터를 읽어 들일 수 있는 기능을 제공한다.
- DataFrame이라는 데이터 구조를 기반으로 SQL 처럼 테이블에 Query 명령을 수행할 수 있다.
- Matplotlib
- Python에서 사용하는 과학 계산용 그래프 시각화 오픈소스 라이브러리
- 데이털르 바탕으로 선 그래프, 히스토그램, 산점도 등의 다양한 그래프를 시각화
- Colab과 같이 웹 상황에서 matplotlib을 사용하려면 '%matplotlib inline' 매직 명령어를 사용해야한다.
- 지도 학습, Supervised Learning
- 정답 레이블 정보를 활용해 알고리즘을 학습하는 학습 방법론
- 데이터와 정답인 레이블 사이의 관계를 파악하는 목적
- 정답이 존재하므로 모델이 풀어야하는 문제가 비교적 쉽고 잘 학습된다.
- 명확한 평가 수치가 존재하며 학습된 모델의 성능을 쉽게 측정할 수 있다.
- 정답이 필요하므로 이를 위해 추가적인 시간, 노동, 비용이 필요하다.
- 정답을 매기는 행위에 필요한 전문 인력과 같은 추가 비용이 발생한다.
- 회귀 문제와 분류 문제
- 문제 (Task)
- 머신 러닝 기법을 활용해 해결하고자 하는 대상
- 데이터를 통해 얻고자 하는 특정 목표나 결과를 의미 - 지도 학습에서 흔히 다루는 대표적인 두 문제
- 회귀 문제 (Regression problem) : 주어진 입력 데이터에 대해 연속적인 숫자값을 예측하는 문제
- 분류 문제 (Classification problem) : 주어진 입력 데이터가 어떤 범주(클래스)에 속하는지 판별
- 문제 (Task)
- 회귀 문제, Regression Problem
- 주관식 문제와 비슷하다.
- 입력 데이터를 바탕으로 정확한 숫자 형태의 결과를 예측하는 문제
- 정확한 숫자는 정수 혹은 실수 범위의 수
- ex) 내일 주식 가격?, 5년뒤 나의 몸구게? - 정확한 숫자 값을 찾는 문제에 적합
- 분류 문제, Classification Problem
- 5지선다형 객관식 문제와 비슷
- 입력으로 주어지는 데이터를 정해진 보기 중 하나로 분류하는 문제
- 분류 문제의 세분화 : 모델이 여러 클래스를 내보내야 하는 경우
- 이진 분류 문제 : 주어지는 클래스가 2개인 경
- 다중 클래스 문제 : 모델이 여러 클래스를 내보내야 하는 경우 - 보기 중 선택의 문제에 적
- 학습 데이터 (Train data)
- 순수하게 학습을 하는 과정에서 사용하는 데이터
- 갖고 있는 전체 데이터 중 가장 많은 비율을 차지한다.
- 정해진 정답은 없지만 전체 데이터의 약 80% 정도를 사용한다.
- 이 분류에 속한 데이터가 많으면 많을수록 성능이 좋아질 가능성이 커진다.
- 검증 데이터 (Validation data)
- 머신 러닝 모델이 어느 정도 학습 되었는지를 주기적으로 확인하는데 사용하는 데이터
- 검증 과정은 학습 중간에 진행되는 평가라고 생각할 수 있다.
- 학습의 정도를 판단 할 수 있다.
- 전체 데이터의 약 10% 할당
- 평가 데이터 (Test data)
- 학습의 과정과는 별도의 과정
- 최후의 머신 러닝 모델이 생성된 후, 학습한 모델의 최종 선능을 평가하기 위해 사용되는 데이터
- 학습 과정에서는 절대 사용되지 않는다.
- 완성된 머신 러닝 모델이 서비스 혹은 제품과 같이 실제 사용 시나리오 과정에서 볼게 될 데이터라는 가정으로
만들어진다. - 전체 데이터 중 약 10% 할당
- 과적합, Overfitting
- 머신 러닝 모델이 특정 훈련 데이터에 지나치게 학습된 것
- 새로운 데이터나 테스트 데이터에서 잘 작동하지 않는 상태를 의미한다.
- 일반화 능력(Generalization)이 떨어진 상태로 표현
- 학습 데이터에 포함된 특정 패턴이나 디테일 그리고 작은 노이즈까지 학습
- 단순히 데이터를 외워버린 경우다. - 머신 러닝 모델이 경계해야하는 현상
- 이를 위해 아래와 같은 방법들이 존재한다.
- 데이터 양 늘리기
- 머신 러닝 모델의 복잡도를 줄이기
- 규제와 같은 정규화 기법 사용하기 등
- 손실 함수(Loss Function)
- 머신 러닝 모델이 얼마나 잘 하고 있는지 또는 못하고 있는지를 수치화한 손실을 구하는 함수
- 모델의 예측값과 실제 정답 사이의 차이를 측정하는 지표
- 일반적으로, 손실이 작을 수록 모델의 성능이 좋다고 볼 수 있다.
- 머신 러닝 모델을 학습하는 과정은 손실(Loss)을 줄이는 과정으로 진행 된다.
- 손실 함수의 종류는 해결하고자 하는 문제의 유형에 따라 다르다
- 회귀 문제 : 평균 제곱 오차 (Mean Squared Error)
- 분류 문제 : 교차 엔트로피 (Cross Entropy)
- 이진 분류 문제 : 로그 손실 (Log Loss)
- 파라미터(Parameter)와 최적화 (Optimization)
- 파라미터 : 모델이 내부적으로 갖고있는 변수
- 모델이 데이터로부터 학습하는 패턴 관계를 표현, 모델의 예측 성능에 직접적인 영향을 미친다.
- 파라미터의 구조와 조합은 모델마다 다양하며 이 변수의 값은 학습의 과정으로 찾아야 한다.
- 성능이 좋은 모델은 적잘한 구조의 파라미터로 구성돤다.
- 파라미터의 구체적인 값은 데이터를 이용한 학습으로 찾게 된다. - 최적화 : 머신 러닝에서 모델의 성능을 최대화하거나, 오류를 최소화하기 위해 모델의 파라미터를 조절하는 과정
- Loss 값이 최소과 되는 파라미터를 찾는 것을 목표로한다.
- 최적화 적용 과정은 머신 러닝 모델에 따라 상이할 수 있다.
- 최적의 해를 한번에 구하는 경우
- 점진적으로 반복적으로 해를 구하는 경우
- 분류 문제 대표 알고리즘
- 로지스틱 회귀(Logistic Regression)
- 이진 분류 문제에 적합한 구조
- 확률을 직접 예측하는 확률 추정 접근으로 결과를 예측 - 결정 트리 분류기 (Decision Tree Classifier)
- 데이터를 잘 분할하는 결정 트리를 사용하여 분류를 수행
- 직관적이고 이해가 쉽다. - 랜덤 포레스트 (Random Forest)
- 여러 결정 트리의 결합으로 앙상블 기법에 해당한다.
- 높은 정확도를 보이면서도 과적합 문제를 방지한다. - 서포트 벡터 머신 (Support vector Machine, SVM)
- 데이터를 최적으로 분리하는 결정 경계를 찾는데 강력한 알고리즘
- 어려운 형태의 데이터라도 비선형 계산이 가능한 다양한 커널 트릭이 있어 해를 구할 수 있다.
- 로지스틱 회귀(Logistic Regression)
- 회귀 문제 대표 알고리즘
- 선형 회귀(Linear Regression)
- 기본적이고 널리 사용되는 회귀 알고리즘
- 독립 변수와 종속 변수 간의 선형 관계를 모델링 한다. - 라쏘 회귀 혹은 릿지 회귀 (Lasso & Ridge Regression)
- 규제 기법을 이용해 과적합을 방지하고 일반화 성능이 향상된 선형 모델 - 결정 트리 회귀 (Decision Tree Regreesion)
- 결정 트리를 이용해 회귀 문제에 적용 - 서포트 벡터 회귀 (Support Vector Regression, SVR)
- 분류 모델인 SVM을 회귀에 적용한 알고리즘 - K-최근접 이웃 회귀 (K-Nearest Neighbors Regression)
- 주어진 데이터 포인트에서 가장 가까운 K개의 이웃 데이터의 평균으로 예측값을 결정
- 간단하면서도 데이터 자체만을 활용한 추정(비모수적 추적)이 가능
- 선형 회귀(Linear Regression)
반응형