[10일차] AI 이해와 실습

이나겸·2022년 4월 5일
0
post-thumbnail

1. 학습내용

Regression의 평가지표

  • MSE (Mean Squred Error)
    : 예측 값과 실제 값의 차이의 제곱을 평균낸 것
  • MAE (Mean Absoulte Error)
    : 예측 값과 실제 값의 차이의 절대값을 평균낸 것
    선에서 얼마나 떨어져있는지 값을 알고싶은 것이기 때문에 절대값 계산
  • R2 (R Squred, 결정계수)
    : 실제 데이터에 비해 상대적으로 얼마나 가까이 있는지 비유를 계산
    아주 근접하면 1에 가까워진다.
    실제값에 상관없이 상대적인 값을 구하는 게 목적이다.

Classification의 평가지표

Classification에서 가장 중요한 것은 정확도이다.
그래프는 ROC, 면적은 AUC를 구분없이 사용하기도 한다.
AUC는 전체면적에서 ROC 그래프 아래의 면적이 얼마나 크게 커버되었는 지를 말한다.
AUC와 CA는 크면 클수록 좋다.

  • Precision(정밀도)
    :모델이 True라고 분류한 것 중에서 실제 True인 것의 비율
  • Accuracy(CA, 정확도)
    : 전체 중 실제 True를 True라고, 실제 False를 False라고 예측한 것의 비율
  • AUC
    : ROC 그래프 아래의 면적

Confusion matrix : 혼동행렬

True가 True일 때, False가 False일 때 예측값을 보여준다.

Actual이 진짜 값, Predicted는 예측한 결과이다.
위의 표에서 versicolor를 맞춘게 89, 틀린게 11이다.
virginica도 맞춘건 89, 틀린건 11이다.
어떻게 모델을 만들어야 최대한 정확하게 맞춰질 수 있을지에 포커싱을 해야한다.

만약 모델의 결과가 100%가 나왔다면 좋은걸까?
우리가 만든 모델이 해당 데이터에 대해서만 적용이 가능하다는 것을 의미한다.
다른 데이터를 넣으면 형편없는 결과가 나올 수 있다는 것이다.
예를 들어 시험 족보에 비유해보면,
시험 출제자, 시험 문제 순서, 시험 문제가 그대로라면 족보대로만 외우면 100점이다.
하지만 문제 순서나 문제가 바뀌면 점수가 형편없어 지는 것과 똑같다.

학습에 대한 중요한 용어

  • overfitting (과적합)
    머신러닝에서 학습 데이터를 과하게 학습하는 것.
    새로운 데이터에 대해서는 적용이 힘들다, 좋은 게 아니다.
  • underfitting (과소적합)
    통계 모형의 능력 부족으로 학습 데이터를 충분히 설명하지 못하도록 부족하게 학습된 것.

핵심정리

  • Regression
    1) 어떤 값을 예측할 때 사용되는 알고리즘
    2) Regression을 평가할 때는 MAE, MSE 등의 지표를 사용한다.
  • Classification
    1) 어떤 대상을 분류할 때 사용하는 알고리즘
    2) Classification 문제를 평가할 때는 ROC 등을 사용해서 Accuracy를 체크한다.

2. 중요내용

requests 모듈

requests를 사용해서 HTTP, HTTPS 웹 사이트에 요청하기 위해 사용되는 모듈 중 하나.
보통 Crawling 과정에서
requests 모듈을 이용해서 웹 사이트의 소스코드를 가져온 다음 파싱하는 경우가 많다.

import requests
response = requests.get('http://www.naver.com')
print(response.text)

Computer Vision and Object Detection 1

Computer Vision API를 사용해서 이미지를 불러오는 것 까지 했다.
수업시간에 Teachable Machine을 사용해서 Object를 사진으로 130장 정도 학습시키고,
캠을 활용해서 Object를 비췄을 때 잘 detect 하는지 확인해봤었다.

사용 패키지 : requests, json, matplotlib.pyplot, Image, BytesIO

import requests
import json
import matplotlib.pyplot as plt
from PIL import Image
from io import BytesIO

subscription_key = '접속에 필요한 URL 설정'
vision_base_url = 'azure 주소'
analyze_url = vision_base_url + 'analyze'
image_url = '이미지 URL'
response = requests.get(image_url)
Image.open(BytesIO(response.content))

이미지를 읽는 방법이 생각보다 다양하다는 것을 알았다.
스틸 이미지나 영상을 인식할 때 OpenCV를 사용했었는데 지금은 PIL을 이용했다.
이미지를 읽고나서 print해보면 byte형태로 읽은 것을 알 수 있다.
ByteIO를 통해 byte형태로 정보를 불러와서 다시 이미지로 출력해준다.


3. 학습소감

오렌지를 들어봐서 알고는 있었지만, 처음엔 너무 생소해서 오히려 어려웠다.
2일차가 되니까 어쩌면 쉽게 툭툭 연결해서 예측값을 확인할 수 있다보니
실제로 프로그래밍 전에 먼저 가이드를 잡을 때 좋을 것 같다는 생각이 들었다.
아직 머신러닝에 익숙하지 않아서 이런 생각이 먼저 드는 것 같다.

0개의 댓글