구분 | 기법 | 설명 |
---|---|---|
군집화 | 거리 기반 군집화 |
– 중심값과의 최소거리 기반 군집 형성 – 군집 수 선정 → 좌표 계산 → 중심값이동(반복) |
밀도 기반
군집화 |
– 군집을 이루는 벡터 밀도 기반 군집 형성 – 군집 벡터 수 선정 → 반경 내 군집 → 중심벡터 변경(반복) | |
패턴인식 | 전처리 / 특징 추출 |
– 표본화, 정규화, 노이즈 제거 – 주성분 분석, 데이터 마이닝 |
모델 선택 / 인식 |
– 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.아나콘다 쥬피터
아나콘다 주피터 이용법의 예시
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