ㅅㅇ

머신러닝 _ 01 개요 본문

AI_STUDY/머신러닝

머신러닝 _ 01 개요

SO__OS 2022. 6. 27. 18:11
플레이데이터 빅데이터캠프 공부 내용 _ 6/23, 27

머신러닝 _ 01 개요

1. 인공지능 (AI - Artificial Intelligence) 이란

- 지능: 어떤 문제를 해결하기 위한 지적 활동 능력
- 인공지능
     - 기계가 사람의 지능을 모방하게 하는 기술
     - 규칙기반(사람이 만든 알고리즘),   데이터 학습 기반(기계가 넣은 데이터를 스스로 학습해 알고리즘을)

- 머신러닝에서는 데이터를 가지고 기계가 스스로 학습할 수 있는 환경을 우리가 만드는 것이다.

   그렇다면 데이터가 바껴도 바뀐 데이터만 주면 알아서. 바뀐 것을 공부할 수 만 있게 하면 된다.

   (규칙기반은 데이터뿐만 아니라 다 바꿔야 함.)
- 기계가 배우는 책과 같은 개념이 데이터이다. 기계는 규칙을 데이터로부터 찾는다

 

 

Strong AI vs Weak AI

- Artificial General Intelligence (AGI)
    - 인간이 할 수 있는 모든 지적인 업무를 해낼 수 있는 (가상적인) 기계의 지능을 말한다. 인공지능 연구의 주요 목표.

- Strong AI (강 인공지능)
    - AGI 성능을 가지는 인공지능
    - 인공지능 연구가 목표하는 방향.
    
- Weak AI (약 인공지능)
    - 기존에 인간은 쉽게 해결할 수 있었지만 컴퓨터로 처리하기 어려웠던 일을 컴퓨터가 수행할 수 있도록 하는 것이 목적.
    - 지각(知覺)을 가지고 있지 않으며 특정한 업무를 처리하는데 집중한다.

 

2. 머신러닝과 딥러닝

머신러닝(Machine Learning)

 - 데이터 학습 기반의 인공 지능 분야
 - 기계에게 어떻게 동작할지 일일이 코드로 명시하지 않고

   데이터를 이용해 학습할 수 있도록 하는 알고리즘과 기술을 개발하는 인공지능의 한분야

 

딥러닝 (Deep Learning)
  - 인공신경망 알고리즘을 기반으로 하는 머신러닝의 한 분야.

    비정형데이터(영상, 음성, 텍스트)에서 뛰어난 성능을 나타낸다. 단 학습 데이터의 양이 많아야 한다.

 

비정형 데이터
    - 정해진 규칙 없이 저장되어 값의 의미를 쉽게 파악할 수 없는 데이터
    - 텍스트, 영상, 음성 데이터가 대표적인 예이다.


정형 데이터
    - 미리 정해 놓은 형식과 구조에 따라 저장되도록 구성된 데이터
    - 대표적이 예로 관계형 데이터베이스가 있다.

 

 

 

1) 머신러닝 모델(알고리즘, 모형)

- 모델이란 데이터의 패턴을 수식화 한 함수를 말한다.
    - 그러나 처음에는 방대한 데이터의 패턴을 알 수 없기 때문에 

      "이 데이터는 이런 패턴을 가졌을 것"이라고 가설을 가정한 함수를 정한뒤

      데이터를 학습시켜 데이터 패턴을 잘 표현하는 함수를 만든다.

 

2) 모델을 만드는 과정

   1. 모델을 정하여 수식화 한다. 
   2. 모델을 데이터를 이용해 학습(Train) 시킨다. 
    - 모델을 데이터의 패턴에 맞춘다. (fit)
   3. 학습된 모델이 얼마나 데이터 패턴을 잘 표현하는지 평가한다.(Test)

 

= > 머신러닝이란 데이터의 패턴을 찾는 함수를 만드는 것


3. 데이터 관련 용어

 Feature
- 추론하기 위한 근거가 되는 값들을 표현하는 용어.
- 예측 하거나 분류해야 하는 데이터의 특성, 속성 값을 말한다.
- 입력 변수(Input), 독립변수라고도 한다.
- 일반적으로 X로 표현한다.

 


Label
예측하거나 분류해야 하는 값들을 표현하는 용어
- 출력 변수(Output), 종속변수, Target 라고도 한다.
- 일반적으로 y로 표현한다.
label은 크게 두가지. 범주형과 실수형
    - 범주형(고유값) : class

 


Class
Label이 범주형(Categorical) 일 경우 그 구성 고유값을 Class라고 한다.
    - 개/고양이, 남성/여성, A형/AB형/B형/O형

 


데이터 포인트
- 개별 데이터를 표현하는 용어. 
- featrue과 그에 상응하는 label 을 묶어 하나의 데이터 포인트 라 표현.

 




4.  머신러닝 알고리즘 분류

1. 지도학습(Supervised Learning)

- 모델에게 데이터의 특징(Feature)와 정답(Label) 학습할 데이터를 알려주며 학습시킨다. 
- INPUT에 대해 OUTPUT 답을 알려주는 것. 이것을 통해 패턴을 찾는다.
- 대부분의 머신러닝은 지도학습이다. 무언가를 추론한다라는 것은 모두 지도학습.
- 지도학습은 분류와 회귀(예측)로 나뉜다.

 

 

1.1 ) 지도학습 - 분류(Classification):
    - 두개 이상의 클래스(범주)에서 선택을 묻는 지도 학습방법 (정답이 범주형)
        - 이진 분류 : 분류 대상 클래스가 2개 
            - A가 맞아? 아니야? ex) 환자야? 아니야? 
                - 개야? 개아니야?(=고양이) : 범주가 두 종류밖에 없다. 다중분류를 이진 분류화 할 수 있다.
        - 다중 분류 : 분류 대상 클래스가 여러개
            - ex) 개야? 고양이야?


    - 의사결정나무(Decision Tree)
    - 로지스틱 회귀(Logistic Regression)
    - K-최근접 이웃(K-Nearest Neighbors, KNN)
    - 나이브 베이즈(Naive Bayes)
    - 서포트 벡터 머신(Support Vector Machine, SVM)
    - 랜덤 포레스트(Random Forest)
    - 신경망(Neural Network)

 

 

1.2 ) 지도학습 - 회귀(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)

 

 

2. 비지도 학습

 

- 정답이 없이 데이터의 특징만 학습하여 데이터간의 관계를 찾는 학습방법

 

2.1 ) 군집(Clustering)
    - 비슷한 유형의 데이터 그룹을 찾는다. 주로 데이터 경향성을 파악하는 비지도 학습
    - K-평균 클러스터링(K-Means Clustering)
    - 평균점 이동 클러스터링(Mean-Shift Clustering) 
    - DBSCAN(DensityBased Spatial Clustering of Applications with Noise)


2.2 ) 차원축소(Dimensionality Reduction)
    - 예측에 영향을 최대한 주지 않으면서 변수(Feature)를 축소하는 한다.
    - 고차원 데이터를 저차원의 데이터로 변환하는 비지도 학습
    - 주성분 분석(Principal Component Analysis, PCA)

 

 

3. 강화학습

    - 학습하는 시스템이 행동을 실행하고 그 결과에 따른 보상이나 벌점을 받는 방식으로 학습. 

      학습이 계속되면서 가장 큰 보상을 얻기 위한 최상의 전략을 스스로 학습하게 한다.
    - 딥러닝 알고리즘 중 하나. 알파고 구현.

 

 

< scikit-learn algorithm cheat-sheet >

 

- 50 이상 : 대략적으로 기준점을 말하자면 최소 50개는 있어야 학습을 할 수 있다라고 말한다.  당연히 50개보다 더 필요한 것도 있을 것.

- 범주 class, clustering   연속형 (숫자, 양과관련) : regression, Dimensionality Reduction

 

5. 머신러닝 개발 절차 (Machine Learning Process)

1) Business Understanding
    - 머신러닝 개발을 통해 얻고자 하는 것 파악 및 이해.

 

2) Data Understanding
    - 데이터 수집
    - 탐색을 통해 데이터 파악 (pandas : 결측치, 특이한 형태, 데이터 간의 관계성... 등을 파악. )

 

3) Data Preparation  
    - 데이터 전처리 (학습할 수 있는 데이터로 만들어 주는 것)

 

4) Modeling
    - 머신러닝 모델 선정
    - 모델 학습

 

5) Evaluation
    - 모델 평가
    - 평가 결과에 따라 위 프로세스 반복

 

6) Deployment
    - 평가 결과가 좋으면 실제 업무에 적용

 

 

6. 파이썬 머신러닝,딥러닝 주요 패키지

- Scikit-learn
    - 딥러닝(있긴 한데 안씀)을 제외한 머신러닝 주요 알고리즘 제공
         * Scipy(Sci) : 과학 연산 라이브러리. 앞에 Sic가 붙은 패키지는 Scipy를 기반으로 함. 
- Tensorflow
    - 구글 브레인 팀이 개발한 텐서플로우는 머신러닝 및 딥러닝 위한 오픈소스 라이브러리다.
- Keras
    - 딥러닝 모델을 쉽게 만들 수 있도록 다양한 딥러닝 플랫폼 위에서 실행되는 고수준 딥러닝 패키지.
    - Tensorflow 2.0 부터 keras를 포함하고 있다.
- Pytorch
    - 토치(Torch) 및 카페2(Caffe2) 프레임워크를 기반으로한 페이스북에서 만든 딥러닝 프레임워크
    
- 머신러닝은 Scikit,   딥러닝은 Tensor-flow, Keras   또는   Pytorch

 

 

7. 사이킷런 Scikit - learn

사이킷런의 특징
1. 파이썬 기반 다른 머신러닝 라이브러리가 사이킷런 스타일의 API를 지향할 정도로 쉽고 가장 파이썬스런 API 제공

2. 머신러닝 관련 다양한 알고리즘을 제공하며 모든 알고리즘에 일관성있는 사용법을 제공한다.

 

 

scikit-learn(사이킷런) 설치

conda install scikit-learn
pip install scikit-learn

 

 

7.1.  Estimator와 Transformer

 

1) Estimator (추정기)
 

  - 데이터를 학습하고 예측하는 알고리즘(모델)들을 구현한 클래스들
        - ex) DecisionTreeClassifier, LinearRegression 등
    - fit() 
        - 데이터를 학습하는 메소드
    - predict()
        - 예측을 하는 메소드

 

 

2) Transformer (변환기)
  

  - 데이터 전처리를 하는 클래스들. 데이터 셋의 값의 형태를 변환한다.
        - ex) LabelEncoder, MinMaxScaler
    - fit()
        - 어떻게 변환할지 학습하는 메소드
    - transform()
        - 변환처리 하는 메소드
    - fit_transform()
        - fit()과 transform()을 같이 처리하는 메소드

 

 

 

7.2.  scikit-learn 개발 패턴

 

1)  데이터 분할
    - 데이터셋을 모델을 학습시키기 위한 데이터셋(훈련 데이터)와 

      모델의 성능을 테스트하기 위한 데이터셋(테스트 데이터)으로 분리한다.

 

2) 모델 생성
    - 예측 목적에 맞는 모델생성
    - 하이퍼파라미터 설정
        - 하이퍼파라미터 : 학습에 의해 찾는 값이 아닌 개발자가 직접 설정해야 하는 파라미터

 

3) 모델 학습
    - fit
    - 훈련데이터로 모델 학습 또는 특징 추출

 

4) 예측
    - predict / predict_prob (예측),  transform (변환)
    - 테스트 데이터셋 예측 또는 변환

 

5) 평가
    - 모델 성능 평가
    - 정확도, AUC, R2, MSE 등 목적에 맞는 적절한 평가 함수를 이용해 결과 확인