🐣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
머신러닝 시스템 구축 과정
- 머신러닝을 이용한 시스템은 문제 정의, 데이터 이해 및 준비, 모델링, 평가를 통해 솔루션을 구현

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

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

- 데이터 준비
- 데이터 전처리(라벨인코딩)
- 데이터 결합
- 특성 선택 및 스케일 조정
- 차원 축소, 샘플링
- 학습데이타와 테스트데이터 분할
- 모델링(학습 알고리즘)
- 학습모델 정의
- 모델 학습 및 교차 검증
- 성능 지표
- 하이퍼파라미터 최적화
- 모델 평가
- 테스트(최종) 데이터 예측
- 고객 솔루션 제시
- 머신 러닝 개발 환경
- scikit-learn
- numpy : 동일한 자료의 자료 구성,백터 연산이 쉽다
- pandas : 각각의 자료구성
- scipy
- matplotlib
- seaborn
Scikit-Learn 기초
- 사이킷런(Scikit-learn) : https://scikit-learn.org
- 머신러닝 알고리즘을 구현한 오픈소스 라이브러리 중 가장 유명한 라이브러리
- 회귀 분석을 비롯하여 다양하고 간다하며 배우기 쉬운 알고리즘 제공
- 다양한 평가 지표 제공
- 일관되고 간결한 API가 강점이며, 문서화가 잘 되 어 있다.
- 아나콘다를 설치하면 자동적으로 설치
- 사이킷런 API 활용 프로세스 데이터 → 모델 훈련 → 평가/예측
- 데이터 수집 및 탐색
- 데이터 전처리
- 훈련데이터/ 테스트 데이터 분리
- 모델 객체 생성, 학습 : 훈련 데이터로 모델을 학습
- 평가, 예측 : 새로운 데이터(테스트 데이터)로 예측
- 사이킷런 모듈
분류 | 모듈명 | 설명 |
예제 데이터 | 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
- array : 데이터 셋
- test_size : 전체 데이터 중 테스트 데이터셋 비중(0~1, 기본값 : 0.25)
- random_state : 호출할 때마다 동일한 학습/테스트 데이터셋을 생성하기 위해 주는 난수값
- shuffle : 데이터를 분리하기 전에 미리 섞을지를 결정함(기본값 : True)
- Scikit-Learn 실습 - 모델 평가
- 모델 평가
- 생성된 객체 또는 학습이 수행된 분석 결과에 대하여 적합한 성능 평가 지표를 도출
- 테스트와 검증
- 모델을 평가하고 새로운 샘플에 실제로 적용해보며 필요에 따라 튜닝하는 과정
- 테스트 데이터 세트를 미리 분리시켜 놓고 학습이 끝난 모델을 검증
- 데이터셋 크기에 따라 비율이 다름
- 훈련(학습)세트를 사용해 모델을 훈련하고 테스트 세트를 사용해 모델을 테스트
- 일반화 오차(외부 샘플 오차) : 시스템이 가지고 있지 않은 외부의 새로운 샘플에 대한 오류
- 테스트 세트에서 모델을 평가함으로써 이 오차에 대한 추정값, 이전에 본 적이 없는 새로운 샘플에 모델이 얼마나 잘 작동하는지 예측
- 훈련 오차가 낮지만(즉, 훈련 세트에서 모델의 오차가 적음) 일반화 오차가 높다면 이는 모델이 훈련 데이터에 과대적합
- 하이퍼파라미터 튜닝과 모델 선택
- 홀드아웃 검증
- 교차 검증
- 모델 튜닝
- 모델의 성능을 개선하기 위해 하이퍼파라미터를 조정해가는 과정
- GridSearchCV - 알고리즘에 사용되는 하이퍼 파라미터를 순차적으로 입력해가면서 편리하게 최적의 파라미터 조합을 찾아가는 방법 제공
- 머신러닝의 주요 도전 과제
- “나쁜 데이터”
- 충분하지 않은 양의 훈련 데이터
- 대표성 없는 훈련 데이터
- 낮은 품질의 데이터
- 관련 없는 특성
- “나쁜 알고리즘”
- 훈련 데이터 과대적합
- 훈련 데이터 과소 적합
