본문 바로가기
Tech

Ch7. AI 모델링

by keneth 2024. 6. 24.
반응형

sec1. AI란

인공지능 > 머신러닝 > 딥러닝

 

  1. 머신러닝

   제공된 데이터를 이용한 학습 → 성능을 반복적으로 평가 → 성능 향상 시키는 것

   데이터를 설명할 수 있는 하나의 함수를 찾는 과정(기울기, y절편)

   임의의 x가 주어졌을 때 y를 예측할 수 있음

 

  2. 딥러닝

   머신러닝에 포함된 기술

   다수의 레이어, 레이어 내부에 다수의 노드, 노드 내부에는 머신러닝 모델

   각 노드는 그물망처럼 연결되어 있고,

   각 노드의 가중치(w)를 구하는 것, 

   최종적으로는 오차를 역전파 해서 w를 재계산해서 성능을 향상시킴

 

sec2. AI학습방법

  1. 지도학습 : 정답(label)을 알려주며 학습 시키는 방법, 회귀/분류로 구분

    - 회귀(Regression) : 양적 데이터

    - 분류(Classification) : 범주형 데이터

  2. 비지도학습 : 정답이 없는 상태로 학습, 레이블이 없기 때문에 결과값이 아닌, 군집화(Clustering) 예측에 사용

      k-means 군집화가 대표적(k는 몇개의 그룹으로 나누는지 선택)

 

sec3. AI모델링 프로세스

  1. AI모델링 프로세스

    데이터 확인 → 데이터 전처리 → AI모델선정 → 학습데이터 분할 → 학습 → 성능평가 --------> 성능향상을 위해 데이터 전처리부터 반복

   1) 데이터 확인 : 사진/영상 등 데이터 구조, 유형, 자연어 처리여부, 결측치/이상치, 중복, 분포도, 레이블링 여부 등

   2) 데이터 전처리 : 중복제거, 결측치 처리, 불필요 데이터 제거 등

   3) AI모델 선정 : 데이터 형태에 따라 AI모델 선정, 회귀/분류 등

   4) 학습데이터 분할

    데이터 세트를 훈련(Train), 검증(Validation), 테스트(Test)로 분할함, 보통 6:2:2 또는 7:2:1 정도

    AI모델은 학습데이터(Train)를 활용해 반복적으로 모델을 생성, 

    각 모델마다 검증데이터를 활용해 성능을 평가(Validation)하고, 그 중 가장 좋은 성능을 가진 모델에 테스트 데이터를 대입해      정확도를 측정함

   5) 모델학습

    선정한 AI모델을 활용해 데이터를 입력, 결과를 예측할 수 있도록 학습하는 과정

   6) 성능평가 : 테스트 데이터를 활용한 성능평가, 목표한 정확도가 안나오면, 데이터 전처리를 추가하거나, AI 모델을 변경하는         등...학습과 성능평가를 반복수행

 

sec4. 학습데이터의 분할

  1. 학습데이터 분할 : 사이킷런 패키지의 train_test_split 함수가 가장 보편적으로 사용됨

입력값(데이터)을 x, 맞춰야 하는 타겟을 y라고 하면, 위 함수는 데이터와 타겟을 분할하고, 테스트 데이터와 검증용 데이터를 분할 함

x_train, x_valid, y_train, y_valid = train_test_split(data, target, test_size=None, 
      train_size=None, random_state=None, shuffle=True, stratify=None)

* test_size : float, int, 기본값은 None, float인 경우 0.0~1.0사이값으로 입력하고, 테스트 데이터의 비율을 나타냄

* train_size : "

* random_state : int, 기본값은 None, 데이터 분할 전에 데이터 shuffle을 제어함, 값을 일정하게 주면, train_test_split을 여러번 수행하더라도 동일하게 분할된 데이터 세트를 활용할 수 있음

* shuffle : True/False, 분할 전에 데이터를 섞을 지 결정함, False인 경우 stratify는 none 이어야 함

* stratify : none/target, target으로 입력하면, 타겟 데이터 분포 비율을 동일하게 갖도록 함

 

  2. k-fold 교차 검증 : 다른 데이터세트로 여러번 평가하면 더 정확한 검증이 가능...

1) k-fold 분할 : 전체 데이터는 k개로 분할

2) 교차검증 : k개로 분할된 데이터를 k번 교차해서 학습(1번 분할을 검증용으로, 2번째는 2번 분할을 검증용으로..)

  

  3. 과적합 : overfitting

테스트 데이터에만 최적화된 모델, 오차(loss)가 늘어나거나, 정확도(Accuracy)가 낮아지는 시점

반응형

sec5. AI모델 평가

1. 분류모델 평가하기

1) 오차행렬

  실제답
Positive Negative
예측값 Positive TP FP
Negative FN TN

* TP(True Positive) : 실제 답이 Positive이고, 예측값도 Positive로 True

* FP(False Positive) : 실제답은 Negative인데, 예측값이 Positive로 False

* FN(False Negative) : 실제답은 Positive, 예측은 Negative로 False

* TN(True Negative) : 실제답은 nega, 예측도 nega로 True

 

평가지표

ㅇ 정확도(Accuracy) : 전체 데이터 중 AI모델이 예측하여 맞힌 비율 = (TP+TN)/(TP+FP+FN+TN)

ㅇ 재현율(Racall) : 실제 Positive 중 AI모델이 Positive라고 예측하여 맞힌 비율 = TP/(TP+FN)

ㅇ 정밀도(Precision) : Positive로 예측한 것 중 실제 Positive인 비율 = TP/(TP+FP)

ㅇ F1-Score : 재현율과 정밀도의 조화평균  = 2*recall*precision / (recall+precision)

 

2) ROC 곡선과 AUC

 

2. 회귀모델 평가하기

1) MAE(Mean Average Error) : 

=sum(|y-yes|)/n 

y : 실제값, yes : 예측값, n : 데이터 수

MAE가 작을수록 성능좋은 모델

 

2) MSE(Mean Squared Error) : 이상치의 영향을 평가하는데 좋음(제곱을 하기 때문에 이상치의 영향도가 커짐)

=sum((y-yes)^2)/n

 

3) RMSE(Root Mean Squared Error)

=sqrt[sum((y-yes)^2)/n]

MSE에 루트한거..

데이터가 많고, 오차가 많은 경우에 이상치 영향이 너무 커지는 것을 방지하기 위해 루트를 적용한거..

 

4) R2 Score : 회귀모델이 얼마나 데이터에 적합한지를 나타내는 지표

R2=1-[sum((t-y)^2)]/[sum((t-ym)^2)] = 1-[오차 제곱의 합]/[편차 제곱의 합]

t : 실제값, y : 예측값, ym : 평균값

R2스코어는 1에 가까울수록 좋은 모델 

0보다 작거나 같으면 예측하기 보다, 그냥 평균으로 쓰면 되는 데이터

 

반응형