머신러닝 개요
인공지능 (AI - Artificial Intelligence)
- 지능: 어떤 문제를 해결하기 위한 지적 활동 능력
- 인공지능
- 기계가 사람의 지능을 모방하게 하는 기술
- 규칙기반, 데이터 학습 기반
머신러닝(Machine Learning)
- 데이터 학습 기반의 인공 지능 분야
- 기계에게 어떻게 동작할지 일일이 코드로 명시하지 않고 데이터를 이용해 학습할 수 있도록 하는 알고리즘과 기술을 개발하는 인공지능의 한분야
딥러닝 (Deep Learning)
- 인공신경망 알고리즘을 기반으로 하는 머신러닝의 한 분야. 대용량 데이터 학습에 뛰어난 성능을 나타낸다.
머신러닝은 역사가 70 ~ 80년 가까이 연구된 분야지만 최근 10여년 사이에 활성화 되었다.
- 이유
- 데이터의 증가
- 컴퓨터 하드웨어의 발전
- 알고리즘의 발견
머신러닝 모델(알고리즘, 모형)
- 모델이란 데이터의 패턴을 수식화 한 함수를 말한다.
- 그러나 처음에는 방대한 데이터의 패턴을 알 수 없기 때문에 "이 데이터는 이런 패턴을 가졌을 것"이라고 가정한 함수를 정한뒤 데이터를 학습시켜 데이터 패턴을 잘 표현하는 함수를 만든다.
모델을 만드는 과정
- 모델을 정하여 수식화 한다.
- 모델을 데이터를 이용해 학습(Train) 시킨다.
- 모델을 데이터의 패턴에 맞춘다. (fit)
- 학습된 모델이 얼마나 데이터 패턴을 잘 표현하는지 평가한다.(Test)
데이터 Feature와 Label
Feature
- 예측 하거나 분류해야 하는 데이터의 특성, 속성 값
- 입력 변수(Input), 독립변수라고도 한다.
- 일반적으로 X로 표현한다.
Label
- 예측하거나 분류해야 하는 값
- 출력 변수(Output), 종속변수라고도 한다.
- 일반적으로 y로 표현한다.
머신러닝 알고리즘 분류
지도학습(Supervised Learning)
- 모델에게 데이터의 특징(Feature)와 정답(Label)을 알려주며 학습시킨다.
- 대부분의 머신러닝은 지도학습이다.
- 분류(Classification):
- 두개 이상의 클래스(범주)에서 선택을 묻는 지도 학습방법
- 이진 분류 : 분류 대상 클래스가 2개
- 다중 분류 : 분류 대상 클래스가 여러개
- 의사결정트리(Decision Tree)
- 로지스틱 회귀(Logistic Regression)
- K-최근접 이웃(K-Nearest Neighbors, KNN)
- 나이브 베이즈(Naive Bayes)
- 서포트 벡터 머신(Support Vector Machine, SVM)
- 랜덤 포레스트(Random Forest)
- 신경망(Neural Network)
- 두개 이상의 클래스(범주)에서 선택을 묻는 지도 학습방법
- 회귀(Regression):
- 숫자(연속된값)를 예측 하는 지도학습
- 의사결정트리(Decision Tree)
- 선형 회귀(Linear Regression)
- 릿지 회귀(Rige Regression)
- 라쏘 회귀(Lasso Regression)
- 엘라스틱 넷(Elastic Net)
- K-최근접 이웃(K-Nearest Neighbors, KNN)
- 나이브 베이즈(Naive Bayes)
- 서포트 벡터 머신(Support Vector Machine, SVM)
- 랜덤 포레스트(Random Forest)
- 신경망(Neural Network)
비지도학습 (Unsupervised Learning)
- 정답이 없이 데이터의 특징만 학습하여 데이터간의 관계를 찾는 학습방법
- 군집(Clustering)
- 비슷한 유형의 데이터 그룹을 찾는다. 주로 데이터 경향성을 파악하는 비지도 학습
- K-평균 클러스터링(K-Means Clustering)
- 평균점 이동 클러스터링(Mean-Shift Clustering)
- DBSCAN(DensityBased Spatial Clustering of Applications with Noise)
- 차원축소(Dimensionality Reduction)
- 예측에 영향을 최대한 주지 않으면서 변수(Feature)를 축소하는 한다.
- 고차원 데이터를 저차원의 데이터로 변환하는 비지도 학습
- 주성분 분석(Principal Component Analysis, PCA)
강화학습
- 학습하는 시스템이 행동을 실행하고 그 결과에 따른 보상이나 벌점을 받는 방식으로 학습. 학습이 계속되면서 가장 큰 보상을 얻기 위한 최상의 전략을 스스로 학습하게 한다.
머신러닝 개발 절차 (Machine Learning Process)
- Business Understanding
- 머신러닝 개발을 통해 얻고자 하는 것 파악.
- Data Understanding
- 데이터 수집
- 탐색을 통해 데이터 파악
- Data Preparation
- 데이터 전처리
- Modeling
- 머신러닝 모델 선정
- 모델 학습
- Evaluation
- 모델 평가
- 평가 결과에 따라 위 프로세스 반복
- Deployment
- 평가 결과가 좋으면 실제 업무에 적용
파이썬 머신러닝,딥러닝 패키지
- Scikit-learn
- 딥러닝을 제외한 머신러닝 주요 알고리즘 제공
- Tensorflow
- 구글 브레인 팀이 개발한 텐서플로우는 머신러닝 및 딥러닝 위한 오픈소스 라이브러리다.
- Keras
- 딥러닝 모델을 쉽게 만들 수 있도록 다양한 딥러닝 플랫폼 위에서 실행되는 고수준 딥러닝 패키지.
- Tensorflow 2.0 부터 keras를 포함하고 있다.
- Pytorch
- 토치(Torch) 및 카페2(Caffe2) 프레임워크를 기반으로한 페이스북에서 만든 딥러닝 프레임워크
사이킷런(scikit-learn) (https://scikit-learn.org/stable)
파이썬 머신러닝 라이브러리가 가장 많이 사용된다. 딥러닝을 제외한 대부분의 머신러닝 알고리즘을 제공한다.
사이킷런의 특징
- 파이썬 기반 다른 머신러닝 라이브러리가 사이킷런 스타일의 API를 지향할 정도로 쉽고 가장 파이썬스런 API 제공
- 머신러닝 관련 다양한 알고리즘을 제공하며 모든 알고리즘에 일관성있는 사용법을 제공한다.
scikit-learn(사이킷런) 설치
conda install scikit-learn
pip install scikit-learn
- 아나콘다는 내장되 있다.
Estimator와 Transformer
- Estimator (추정기)
- 데이터를 학습하고 예측하는 알고리즘(모델)들을 구현한 클래스들
- fit()
- 데이터를 학습하는 메소드
- predict()
- 예측을 하는 메소드
- Transformer (변환기)
- 데이터 전처리를 하는 클래스들. 데이터 셋의 값의 형태를 변환한다.
- fit()
- 어떻게 변환할지 학습하는 메소드
- transform()
- 변환처리 하는 메소드
- fit_transform()
- fit()과 transform()을 같이 처리하는 메소드
사이킷런 주요모듈
scikit-learn 개발 패턴
- 데이터 분할
- 데이터셋을 모델을 학습시키기 위한 데이터셋(훈련 데이터)와 모델의 성능을 테스트하기 위한 데이터셋(테스트 데이터)으로 분리한다.
- 모델 생성
- 예측 목적에 맞는 모델생성
- 하이퍼파라미터 설정
- 하이퍼파라미터 : 학습에 의해 찾는 값이 아닌 개발자가 직접 설정해야 하는 파라미터
- 모델 학습
- fit
- 훈련데이터로 모델 학습 또는 특징 추출
- 예측
- predict / predict_prob (예측), transform (변환)
- 테스트 데이터셋 예측 또는 변환
- 평가
- 모델 성능 평가
- 정확도, AUC, R2, MSE 등 목적에 맞는 적절한 평가 함수를 이용해 결과 확인
728x90
반응형
'Data Analysis & ML > Machine Learning' 카테고리의 다른 글
[Machine Learning][머신러닝] 과적합과 해결방법(그리드서치/파이프라인) (0) | 2020.08.31 |
---|---|
[Machine Learning][머신러닝] Classification(분류) 평가지표 (0) | 2020.08.28 |
[Machine Learning][머신러닝] 데이터 전처리(범주형/연속형) (5) | 2020.08.27 |
[Machine Learning][머신러닝] 데이터셋 나누기와 교차검증 (0) | 2020.08.26 |
[Machine Learning][머신러닝] IRIS 분석 (결정 트리 모델(Decision Tree)) (0) | 2020.08.26 |