[AIVLE AI 6기] 무엇을 배우나요? 4주차-머신러닝1

·2024년 11월 26일
0

AIVLE

목록 보기
7/9
post-thumbnail

What is?

  • 데이터를 기반으로 학습하여 특정 작업을 수행하는 것
  • 인간의 경험 = 머신의 데이터
  • 데이터를 통해 학습을 하는 것

머신러닝 종류 분류

학습 방법에 따른 분류

지도학습

  • 학습 대상이 되는 데이터에 정답을 주어 규칙성, 즉 데이터의 패턴을 배우게 하는 학습 방법

비지도 학습

  • 정답이 없는 데이터 만으로 배우게 하는 학습 방법

강화 학습

  • 선택한 결과에 대해 보상을 받아 행동을 개선하면서 배우게 하는 학습 방법

과제에 따른 분류

분류문제

  • 이미 적절히 분류된 데이터를 학습하여 분류 규칙을 찾고, 그 규칙을 기반으로 새롭게 주어진 데이터를 적절히 분류하는 것을 목적으로 함(지도 학습)

회귀문제

  • 이미 결과값이 있는 데이터를 학습하여 입력 값과 결과 값의 연관성을 찾고, 그 연관성을 기반으로 새롭게 주어진 데이터에 대한 값을 예측하는 것을 목적으로 함(지도 학습)

클러스터링

  • 주어진 데이터를 학습하여 적절한 분류 규칙을 찾아 데이터를 분류함을 목적으로 함, 정답이 없어 성능 평가가 어려움(비지도 학습)

분류 vs 회귀

  • 분류와 회귀에 따라 사용할 알고리즘과 평가 함수가 달라짐
  • 예측 값에 연속성이 있으면 회귀

용어 정리

모델(Model)

  • 데이터로부터 패턴을 찾아
  • 수학식으로 정리해 놓은 것
  • 모델링(Modeling): 오차가 적은 모델을 만드는 과정

모델의 목적

  • 샘플을 가지고 전체를 추정
    • 샘플: 표본, 부분집합, 일부, 과거의 데이터
    • 전체: 모집단, 전체집합, 현재와 미래의 데이터
    • 추정: 예측, 추론

행(Column)

  • 특성, 속성, 변수, 필드

열(Row)

  • 개체, 관측치, 기록, 사례, 경우

독립변수, 종속변수

  • 독립변수를 𝑥 로, 종속변수를 𝑦로 표시함
  • 독립변수(원인)
  • 종속변수(결과)

오차

  • 통계학에서 사용되는 가장 단순한 모델 중 하나가 평균
  • 관측값(=실젯값)과 모델 예측값의 차이: 이탈도(Deviance) → 오차

데이터 분리

  • 데이터 셋을 학습용, 검증용, 평가용 데이터로 분리 함
  • 평가용 데이터는 별도로 제공되는 데이터일 경우가 많음
  • 검증용 데이터로 평가 전에 모델 성능을 검증해 볼 수 있음(튜닝 시 사용)

과대적합(Overfitting)

  • 학습 데이터에 대해서는 성능이 매우 좋은데, 평가 데이터에 대해서는 성능이 매우 좋지 않은 경우
  • 학습 데이터에 대해서만 잘 맞는 모델 → 실전에서 예측 성능이 좋지 않음

과소적합(Underfitting)

  • 학습 데이터보다 평가 데이터에 대한 성능이 매우 좋거나, 모든 데이터에 대한 성능이 매우 안 좋은 경우
  • 모델이 너무 단순하여 학습 데이터에 대해 적절히 훈련되지 않은 경우

모델링 코드

구조

  1. 불러오기
  2. 선언하기
  3. 학습하기
  4. 예측하기
  5. 평가하기
#1
from sklearn.linear_model import LinearRegression
from sklearn.metrics import mean_absolute_error

#2
model = LinearRegression()

#3
model.fit(x_train, y_train)

#4
y_pred = model.predict(x_test)

#5
mean_absolute_error(y_test, y_pred)

성능평가

회귀 모델 성능 평가

결정 계수 R^2(R-Squared)

  • Coefficient of Determination
  • MSE로 여전히 설명이 부족한 부분이 있음(성능이 확실히 와 닿지 않음)
  • 모델 성능을 잘 해석하기 위해서 만든 MSE의 표준화된 버전이 결정 계수임
  • 전체 오차 중에서 회귀식이 잡아낸 오차 비율(일반적으로 0 ~ 1 사이)
  • 오차의 비 또는 설명력이라고도 부름
  • 𝑅^2 = 1이면 𝑀𝑆𝐸 = 0이고 모델이 데이터를 완벽하게 학습한 것

code

# 함수 불러오기
from sklearn.metrics import mean_squared_error
from sklearn.metrics import mean_absolute_error
from sklearn.metrics import mean_absolute_percentage_error
from sklearn.metrics import r2_score

# 평가하기
# mean_absolute_error(실젯값, 예측값)
print(mean_absolute_error(y_test, y_pred))

분류 모델 성능 평가

Accuracy(정확도)

  • 정분류율 이라고 부르기도 함
  • 전체 중에서 Positive와 Negative 로 정확히 예측한(TN + TP) 비율
  • Negative를 Negative로 예측한 경우도 옳은 예측임을 고려하는 평가지표
  • 가장 직관적으로 모델 성능을 확인할 수 있는 평가지표

Precision(정밀도) / 예측 관점

  • Positive로 예측한 것(FP + TP) 중에서 실제 Positive(TP)인 비율
  • 비가 내릴 것으로 예측한 날 중에서 실제 비가 내린 날의 비율

Recall(재현율) / 실제 관점

  • 실제 Positive(FN + TP) 중에서 Positive로 예측한(TP) 비율
  • 민감도(Sensitivity)라고 부르는 경우가 많음
  • 실제 비가 내린 날 중에서 비가 내릴 것으로 예측한 날의 비율

Specificity(특이도)

  • 실제 Negative(TN + FP) 중에서 Negative로 예측한(TN) 비율
  • 실제 비가 내리지 않은 날 중에서 비가 내리지 않을 것으로 예측한 날의 비율

F1-Score

  • 정밀도와 재현율의 조화 평균
  • 분자가 같지만 분모가 다를 경우, 즉 관점이 다른 경우 조화 평균이 큰 의미를 가짐
  • 정밀도와 재현율이 적절하게 요구 될 때 사용

code

# 함수 불러오기
from sklearn.metrics import accuracy_score
from sklearn.metrics import precision_score
from sklearn.metrics import recall_score
from sklearn.metrics import f1_score
from sklearn.metrics import confusion_matrix
from sklearn.metrics import classification_report

# 평가하기
# accuracy_score(실젯값, 예측값)
print(accuracy_score(y_test, y_pred))
print(precision_score(y_test, y_pred, average=None))
profile
백엔드 개발자가 꿈인 컴공과

0개의 댓글

관련 채용 정보