🐣python

머신 러닝(Machine Learning)

category
🐣python
URL
date
Feb 6, 2023
slug
machine-learning-scikit-learn
author
status
Public
tags
Playdata_deep-learning & machine-learning
summary
머신 러닝 개발 환경과 구현 프로세스-scikit-learn
type
Post
thumbnail
updatedAt
Mar 2, 2023 03:00 AM

머신러닝 시스템 구축 과정

  • 머신러닝을 이용한 시스템은 문제 정의, 데이터 이해 및 준비, 모델링, 평가를 통해 솔루션을 구현
notion image
 

머신러닝 전단계 : 탐색적 데이터 분석

  • 탐색적 데이터 분석
    • 데이터 구조
    • 기초 통계
    • 결측값 확인
    • 시각화로 살펴보기(종속변소 → 독립변수)
    • 단일 변수마다 살펴보기(히스토그램)
    • 변수간 상관관계
    • 단일변수 vs 타겟 변
notion image
 

머신러닝 프로젝트 : 베이스라인(Baselin) 모델

notion image
  • 데이터 준비
      1. 데이터 전처리(라벨인코딩)
      1. 데이터 결합
      1. 특성 선택 및 스케일 조정
      1. 차원 축소, 샘플링
      1. 학습데이타와 테스트데이터 분할
  • 모델링(학습 알고리즘)
      1. 학습모델 정의
      1. 모델 학습 및 교차 검증
      1. 성능 지표
      1. 하이퍼파라미터 최적화
  • 모델 평가
      1. 테스트(최종) 데이터 예측
      1. 고객 솔루션 제시
 
 
  • 머신 러닝 개발 환경
    • scikit-learn
    • numpy : 동일한 자료의 자료 구성,백터 연산이 쉽다
    • pandas : 각각의 자료구성
    • scipy
    • matplotlib
    • seaborn

Scikit-Learn 기초

  • 사이킷런(Scikit-learn) : https://scikit-learn.org
    • 머신러닝 알고리즘을 구현한 오픈소스 라이브러리 중 가장 유명한 라이브러리
    • 회귀 분석을 비롯하여 다양하고 간다하며 배우기 쉬운 알고리즘 제공
    • 다양한 평가 지표 제공
    • 일관되고 간결한 API가 강점이며, 문서화가 잘 되 어 있다.
    • 아나콘다를 설치하면 자동적으로 설치
 
  • 사이킷런 API 활용 프로세스 데이터 → 모델 훈련 → 평가/예측
      1. 데이터 수집 및 탐색
      1. 데이터 전처리
      1. 훈련데이터/ 테스트 데이터 분리
      1. 모델 객체 생성, 학습 : 훈련 데이터로 모델을 학습
      1. 평가, 예측 : 새로운 데이터(테스트 데이터)로 예측
 
  • 사이킷런 모듈
분류
모듈명
설명
예제 데이터
sklearn.datasets
내장된 예제 데이터셋
데이터 전처리
sklearn,preprocessing
데이터 전처리에 필요한 다양한 기능(encoding, 정규화, 스케일링)
데이터 분리, 검증, 파라미터 튜닝
sklearm.model_selection
학습, 검증을 위한 데이터 분리, 파라미터 튜닝(Grid Search)
성능 평가
sklearm.metrics
각종 머신 러닝 알고리즘(희귀, 분류, 군집 등) 별 성능 측정 함수 제공(r2_score, mean, square error, accuracy, precision, etc.)
머신러닝 알고리즘
sklearm.linear_model sklearm.svm sklearm.tree sklearm.ensemble
회귀분석(선형,릿지,라쏘,로지스틱 회귀) 서포트 벡터 머신 분류 의사 결정 트리 알고리즘 앙상블 알고리즘(Random Forest, AdaBoost,Gradient boosting etc) 군집화 알고리즘(K-means, DBScan etc)
지원 기능
sklearm.pipeline
피쳐 변환(transform)과 학습(fit), 예측(predict)등을 묶어 행
 
  • Scikit-Learn의 데이터 표현 방식
    • 특성 행렬(Feature Martrix)
      • 표본(sample) : 데이터셋이 설명하는 개별 객체를 나타내고 행렬의 행
      • 특성(feature) : 각 표본을 연속적인 수치, 부울값, 이산값으로 표현하는 개별 관측치
      • 학습의 결과를 결정하는 데 영향을 미치는 입력 데이터
      • 행의 개수 : n_samples
      • 열의 개수 : m_features
      • 관례적으로 특성 행렬은 X에 저장
      • 2차원의 배열 구조를 사용 : 주로 Numpy 2차원 배열, Pandas DataFrame, SciPy 희소행렬을 사용
      • 독립변수, 입력변수라고도 함.
    • 대상 벡터(Target Vector)
      • 연속적인 수치값, 이산 클래스/레이블을 가짐
      • 길이 : n_samples
      •  
  • Scikit-Learn 실습
    • 파일 : 100.0 머신러닝의 이해1_머신러닝의 소개
    •  
  • Scikit-Learn 실습 - 데이터 분할
    • 데이터 전처리 및 데이터 분할
    • sklearn.model_selection.train_test_split
    • train_test_split(arrays,test_size,random_state,shuffle)
      • array : 데이터 셋
      • test_size : 전체 데이터 중 테스트 데이터셋 비중(0~1, 기본값 : 0.25)
      • random_state : 호출할 때마다 동일한 학습/테스트 데이터셋을 생성하기 위해 주는 난수값
      • shuffle : 데이터를 분리하기 전에 미리 섞을지를 결정함(기본값 : True)
    • 학습 데이터 (훈련데이터) : 피라미터 추정에 사용되는 데이터
    • 테스트데이터 : 일반화 오차를 평가하기 위해 학습에 사용되지 않고 남겨둔 데이터
    •  
  • Scikit-Learn 실습 - 모델 평가
    • 모델 평가
      • 생성된 객체 또는 학습이 수행된 분석 결과에 대하여 적합한 성능 평가 지표를 도출
 
  • 테스트와 검증
    • 모델을 평가하고 새로운 샘플에 실제로 적용해보며 필요에 따라 튜닝하는 과정
    • 테스트 데이터 세트를 미리 분리시켜 놓고 학습이 끝난 모델을 검증
      • 데이터셋 크기에 따라 비율이 다름
      • 훈련(학습)세트를 사용해 모델을 훈련하고 테스트 세트를 사용해 모델을 테스트
        • 일반화 오차(외부 샘플 오차) : 시스템이 가지고 있지 않은 외부의 새로운 샘플에 대한 오류
        • 테스트 세트에서 모델을 평가함으로써 이 오차에 대한 추정값, 이전에 본 적이 없는 새로운 샘플에 모델이 얼마나 잘 작동하는지 예측
        • 훈련 오차가 낮지만(즉, 훈련 세트에서 모델의 오차가 적음) 일반화 오차가 높다면 이는 모델이 훈련 데이터에 과대적합
    • 하이퍼파라미터 튜닝과 모델 선택
      • 홀드아웃 검증
      • 교차 검증
       
  • 모델 튜닝
    • 모델의 성능을 개선하기 위해 하이퍼파라미터를 조정해가는 과정
    • GridSearchCV - 알고리즘에 사용되는 하이퍼 파라미터를 순차적으로 입력해가면서 편리하게 최적의 파라미터 조합을 찾아가는 방법 제공
    •  
  • 머신러닝의 주요 도전 과제
    • “나쁜 데이터”
      • 충분하지 않은 양의 훈련 데이터
      • 대표성 없는 훈련 데이터
      • 낮은 품질의 데이터
      • 관련 없는 특성
    • “나쁜 알고리즘”
      • 훈련 데이터 과대적합
      • 훈련 데이터 과소 적합
      •  
notion image