2022/04/05

1) 학습한 내용

Regression(회귀)

회귀란?
회귀(Regression)는 머신러닝에서 가장 기초적인 데이터 분석 방법 중 하나다. 회귀는 ‘되돌아온다’라는 뜻으로 영국의 유전학자이자 통계학자인 프랜시스 골턴(Francis Galton, 1822~1911)은 유명한 ‘평균으로의 회귀(regression to the mean)’라는 개념을 설명하며 부모의 키 평균과 자녀의 키 평균을 비교하면 자녀의 키는 부모의 키보다 평균에 가까워지려는, 평균으로 되돌아오려는 경향이 있다는 사실을 지적했다.

지도학습

-학습데이터가 입력(특정행렬)과 출력(대상 벡터)이 쌍으로 제공됨 -> 레이블 데이터
-학습목표는 입력 특징ㄹ행렬과 출력 대상 백터를 매핑시키는 규칙을 찾는 것
-입력 특징 행렬에 대해 출력 대상 벡터가 알려져 있으므로 '지도'라 부름
-K-최근점 이웃, 선형 회귀, 로지스틱 회귀, 서포트 벡터 머신, 결정 트리와 랜덤 포레스트, 신경망

비지도 학습

입력데이터에 대한 목표값 없이 데이터가 어떻게 구성되었는지를 알아내는 기계 학습(Machine Learning) 기법이다.

비지도 학습의 특징

  1. 비정제 데이터를 입력하여 훈련데이터 없이 데이터의 특징 요약과 군집 (Clustering) 수행
  2. 목표값을 정해주지 않아도 되고 사전 학습이 필요없으므로 속도가 빠름

Classification(분류)

분류방식은 일반적으로 출력이 예/아니오, 또는 파란색/연두색과 같은 질적인 범주(라벨)를 예측하며 회귀방식은 주로 출력이 몸무게나 키와 같은 양이나 수(value)의 연속적인 값을 예측하는 데 적용한다.

Clustering(군집화)

빅데이터를 사용하는 비즈니스에서는 대상의 규모가 일반적으로 지극히 크다. 예를 들면, 인터넷 쇼핑에서 고객의 수가 약 백만명이 되는 경우는 흔하다. 다수의 고객들은 기호가 천차만별일 것이므로 모든 고객들에게 동일한 광고 메일을 한꺼번에 보내는 것은 효과가 좋지 않을 것이다. 따라서, 고객을 몇가지 속성들(나이, 연간 수입, 가족구성, 기존에 구입한 상품 등)을 기준으로하여 서로 유사한 고객들끼리 그룹화한 후, 각각의 그룹에 대해서 최적의 광고 메일을 보내는 것이 보다 효율적일 것이다. 이와 같이 “몇가지 속성들을 사용해서 서로 비슷한 사람들끼리 그룹화하는 것”을 클러스터링(Clustering, 군집 분석)기법이라고 한다. 마케팅 분야에서는 이와같은 그룹을 세그멘트(segment)라고 부르기도 한다.
구분 기법 설명
군집화 거리 기반
군집화
– 중심값과의 최소거리 기반 군집 형성
– 군집 수 선정 → 좌표 계산 → 중심값이동(반복)
밀도 기반
군집화
– 군집을 이루는 벡터 밀도 기반 군집 형성 – 군집 벡터 수 선정 → 반경 내 군집 → 중심벡터 변경(반복)
패턴인식 전처리 /
특징 추출
– 표본화, 정규화, 노이즈 제거
– 주성분 분석, 데이터 마이닝
모델 선택
/ 인식
– Bagging/Boosting, 앙상블 학습
– 혼동 행렬, ROC Curve, AUC, FP Rate

비지도 학습을 이용한 알고리즘

구분 알고리즘 설명
데이터 관계 측면 K-Means -임의의 중심점 기준 최소 거리 기반 군집화
-Code-vector,유클리드 거리 계산, 노이즈에 민감
DBSCAN – 반경 내 데이터 벡터 밀도 기반 군집화
– ε, minPts, Core Point, 노이즈에 강함
특징 추출 측면 민 시프트 – 임의 영상을 몇 개 영역으로 분할, 군집화
– 컴퓨터 비전, 머신 비전, 영상 분할
주성분 분석 – 사물의 주요 특징 분석 및 추출
– 차원 축소, 축 상의 투영으로 표시

딥러닝

딥 러닝은 머신 러닝의 한 방법으로, 학습 과정 동안 인공 신경망으로서 예시 데이터에서 얻은 일반적인 규칙을 독립적으로 구축(훈련)한다. 특히 머신 비전 분야에서 신경망은 일반적으로 데이터와 예제 데이터에 대한 사전 정의된 결과와 같은 지도 학습을 통해 학습된다.

ps. 오퍼핏과 언더핏

모델 학습을 진행하면서 만나게 되는 일반적인 두가지 문제에 대해서 말하면, 첫번째 문제는 모델이 너무 간단하기 때문에 학습 오류가 줄어들지 않는 것으로 이 현상을 언더피팅(underfitting)이라고 한다. 두번째 문제는 앞에서 이야기했던 오버피팅(overfitting)으로, 이는 학습 오류가 테스트 데이터셋에 대한 오류보다 아주 작은 경우로, 실제로 이 두 문제는 가능한 경우 항상 동시에 해결이 되어야 한다. 이 두 문제의 원인은 여러 요소들이 있지만, 여기서는 두 가지 요소에 대해서 하자면 이 두가지는 모델 복잡성과 학습 데이터셋의 크기로 인한 것이다.

모델 복잡도
이 이슈를 설명하기 위해서 다항식을 예로 들자면, 스칼라 데이터 특성(feature) x와 이에 대한 스칼라 레이블(label) y로 구성된 학습 데이터가 주어진 경우, y를 추정하는 d차원 다항식을 찾는다고 하겠다.

y^=∑i=0dxiwi

여기서 wi 는 모델의 가중치 파라미터를 의미하고, 편향(bias)은 x0=1 이기 때문에 w0 이 됩니다. 간단하게 하기 위해서, 선형 회귀(linear regression)의 경우와 같이 제곱 손실(squared loss)을 사용하겠습니다. (사실 d=1 인 경우 이 모델은 선형 회귀(linear regression)다.)

고차원의 다항 함수는 저차원의 다항 함수보다 더 복잡다. 이유는 차원이 더 높아지면, 더 많은 파라미터를 갖게 되고, 모델 함수의 선택 범위가 더 넓어지기 때문이다. 따라서, 같은 학습 데이터셋을 사용하는 경우, 더 높은 차원의 다항 함수에 대한 학습 오류는 그보다 낮은 차원의 다항 함수의 오류보다 낮을 것이다. 이를 염두하면, 학습 데이터셋이 고정되어 있을 때 모델의 복잡도와 오류의 일반적인 상관관계는 아래 그림으로 설명됩니다. 데이터에 비해서 모델이 너무 간단하면, 언더피팅(underfitting)이 발생하고, 모델을 너무 복잡하게 선택하면 오버피팅(overfitting)이 발생합니다. 데이터에 대한 모델을 적절한 복잡성을 선택하는 것이 오버피팅(overfitting)과 언더피팅(underfitting) 문제를 피하는 방법 중에 하나다.


데이터셋의 크기

다른 원인은 학습 데이터의 양입니다. 일반적으로 학습 데이터셋의 샘플 개수가 충분하지 않은 경우, 특히 모델의 파라미터 개수보다 적은 수의 샘플을 사용하는 경우, 오버피팅(overfitting) 이 쉽게 발생합니다. 학습 데이터의 양을 늘리면, 일반화 오류는 일반적으로 줄어듭니다. 즉, 더 많은 데이터는 모델 학습에 나쁜 영향을 미치지 않다는 것을 의미합니다. 더 나아가서, 이는 충분한 데이터가 있다면, 일반적으로 많은 층들을 갖는 복잡한 모델을 사용해야한다는 것을 의미합니다.

ps2. Teachable Machine

기존에는 인공지능들을 사용하려면 고도의 수학적, 프로그래밍적 지식들을 필요로 하기 때문에, 일반인들은 machine learning 기술에 쉽게 접근할 수 없었었다. 하지만, 이때 구글에서 이런 전문가의 영역이라는 장벽을 넘어서 누구나 쉽게 웹 페이지를 통해서 machine learning을 이용할 수 있도록 만든 서비스가 바로 teachable machine으로 일반인들도 인공지능에 쉽게 접근하도록 하기 위해서 만든 서비스다.

ps3.아나콘다 쥬피터

ipython 기반의 웹 코딩 라이브러리로 파이썬 기반이며 데이터 분석 및 수치 분석에 사용되어지며, 구글에서 제공하는 Google Colaborator도 주피터를 기반으로 한다.

아나콘다 주피터 이용법의 예시

  print('Hello World') //Hello World
  import requests
  response = requests.get('http://www.naver.com')
  result = response.text
  print(result) //홈페이지 정보가 출력된다.
  print(requests.get('http://www.naver.com').text) //홈페이지 정보가 출력된다.

그리고, 이미지 불러오기를 위해서 작성한 소스 코드를 공개하자면 아래와 같이 작성했다.

Computer Vision and Object Detection
Computer Vision API를 사용해서 이미지속에 있는 사물을 인식하는 데모 입니다. 네트워크 통신을 위해서 requests 패키지를 import 합니다.

import requests
import requests
이미지처리를 위해서 matplotlib.pyplot, Image, BytesIO 세 개의 패키지를 import 합니다. matplotlib.pyplot는 import 할 때 시간이 조금 걸릴 수 있습니다.

import matplotlib.pyplot as plt
from PIL import Image
from io import BytesIO
import json
import json //Subscription Key와 접속에 URL을 설정합니다.

subscription_key = '제공되어진 키'
vision_base_url = '예시로 든 url'
analyze_url = vision_base_url + 'analyze'
image_url ='사용된 이미지 주소'
response = requests.get(image_url)
image = Image.open(BytesIO(response.content))
image
image

2) 학습내용 중 어려웠던 점

수업은 이전에 배웠던 Regression에 이어서 Classification, Clustering에 관한 개념 설명과 인공지능 설명이라, 많이 어렵지 않았고 이번 수업 후반부에는 아나콘다 설치인데 이것은 내가 독학 때 깔았던 것이라 결과적으로 좋게 해결되었다.

3) 해결방법

이번 수업은 크게 많이 어려운 부분은 없었다. 인공지능 데이터 사이언스에 관한 독학의 흔적이 결과적으로 도움이 되었다.

4) 학습소감

이번 수업은 무난하게 흘러갔었지만 해당 강사가 윈도우가 아니라 MAC 이용자라서 다소 어긋나는 부분이 있었지만 수업은 대체적으로 만족스럽다. 나중에 복습을 한다. 언제나 그랬듯이 말이다.

좋은 웹페이지 즐겨찾기