728x90

머신러닝 8

결정 트리(Decision Tree) 알고리즘, ID3 소개

랜덤 포레스트(Random Forest)에 대해서 알고 싶어서 조사를 하다보니 결정 트리(Decision Tree)에 대한 선지식이 필요함을 알게 되었다. 이름을 보니 무언가 감이 오지 않는가? 포레스트(숲)와 트리(나무). 수많은 나무들로 이뤄진 것을 보통 숲이라고 한다. 즉 랜덤 포레스트는 여러 개의 결정 트리를 함께 활용해 더 나은 성능을 발휘하는 알고리즘이라고 볼 수 있다. 자, 그럼 그 숲을 구성하는 나무, 결정 트리에 대해서 알아보자. 결정 트리란? 결정 트리는 스무고개 게임과 유사한 원리를 갖고 있다. 스무고개 게임은 답을 맞추기 위해 '예', '아니오'로 대답할 수 있는 질문을 최대 20번 할 수 있는 게임이다. 마찬가지로 결정 트리의 핵심도 질문이다. 질문을 통해 답을 찾아가는 것이다. ..

<알고리즘으로 배우는 인공지능, 머신러닝, 딥러닝 입문>, 딥러닝 초중급자를 위한 괜찮은 입문서

2016년 8월 31일에 쓴 독후감입니다. 올해 7월에 나온 매우 따끈따끈한 책이다. 딥러닝에 대해서 공부하면서 한국어로 작성된 것 중에 신뢰할만하면서 쉽게 설명된 책을 찾기 어려웠었다. 이 책을 위해 수고한 저자에게 감사한 마음을 표한다. 인공지능의 분야에 있어서 결코 선진국이라고 할 수 없는 우리나라를 생각하며 안타까운 마음과 또 기대하는 마음으로 저자가 책을 출간하지 않았나 싶다. 나와 같은 딥러닝 초보자에게는 입문서로 매우 적합한 책이다. 이 책을 통해 인공지능의 중요한 한 축인 머신러닝과 딥러닝의 역사 및 현황과 많이 활용되고 있는 기본적인 알고리즘 등을 전반적으로 이해할 수 있었다. 참고로 머신러닝 및 딥러닝에 관심이 있으신 분이라면 Coursera에서 제공하는 앤드류 응의 machine le..

일상/독후감 2019.10.14

가장 간단한 군집 알고리즘, k-means 클러스터링

가장 간단한 지도학습 분류(classification) 알고리즘이 kNN(k-Nearest Neighbor)이라면, 가장 간단한 비지도학습 군집(clustering) 알고리즘은 k-means 클러스터링을 꼽을 수 있다. 비지도학습이기 때문에 k-means 클러스터링은 레이블이 없는 데이터들만으로도 작동한다. k-means 클러스터링은 데이터를 k개의 클러스터(cluster, 무리)로 분류해주는데, 다음과 같은 알고리즘으로 작동한다. 1) 사용자로부터 입력받은 k의 값에 따라, 임의로 클러스터 중심(centroid) k개를 설정해준다. 2) k개의 클러스터 중심으로부터 모든 데이터가 얼마나 떨어져 있는지 계산한 후에, 가장 가까운 클러스터 중심을 각 데이터의 클러스터로 정해준다. 3) 각 클러스터에 속하는..

유유상종의 진리를 이용한 분류 모델, kNN(k-Nearest Neighbor)

머신러닝 알고리즘을 거칠게(roughly) 나누자면 지도학습과 비지도학습 알고리즘으로 구분지을 수 있다. 그 기준이 되는 것을 알고리즘을 학습시킬 때(훈련시킬 때) 레이블(label)이 필요한가의 여부다. 레이블이 있는 학습 데이터가 필요하면 지도학습(supervised learning)이고, 레이블이 없는 학습 데이터만으로 훈련이 가능하면 비지도학습 알고리즘이다. 선생님이 학생에게 여러 개의 예제를 알려주는데 답도 알려주어서 학습시키면 지도학습이고, 예제는 알려주는데 답은 안 알려주면서 학습시키는 것은 비지도학습이라고 볼 수 있다. kNN은 레이블이 있는 학습 데이터가 있어야 작동이 가능하기 때문에 지도학습 알고리즘에 속한다. kNN은 지도학습 알고리즘 중에서도 가장 간단한 알고리즘이라고 평가된다. k..

이미지 분류 모델 평가에 사용되는 top-5 error와 top-1 error

딥러닝 관련 논문을 보다보면 실험 평가 부분에서 top-5 error와 top-1 error라는 용어들을 심심찮게 발견하게 된다. top-5 error와 top-1 error는 이미지 분류(image classification) 성능을 평가하기 위한 것들이다. 훈련이 된 분류기(classifier)는 주어진 테스트 이미지가 어떤 클래스에 속하는지 분류해낼 것이다. {고양이, 강아지, 집, 축구공, 사자}와 같이 5개의 클래스 라벨을 가지고 훈련된 분류기가 있다고 가정해보자. 새로운 이미지를 이 분류기에 입력해줬는데, 0.1, 0.6, 0.05, 0.05, 0.2와 같은 결과를 냈다. 새로운 이미지가 강아지일 확률이 가장 높다고 판단한 것이다. 이때 top-1 class는 {강아지}가 된다. 그리고 top..

경사감소법(경사하강법)이란?

오늘은 경사감소법(경사하강법)에 대해서 정리하려고 한다. 경사감소법은 많은 머신러닝 및 딥러닝 알고리즘을 훈련시킬 때 사용되는 방법이다. 가장 간단한 선형회귀를 예를 들어 경사감소법을 설명하겠다. 참고로 선형회귀(https://bskyvision.com/193)에 대해서는 예전에 포스팅했었다. 선형회귀는 선형적으로 분포되어 있는 데이터를 가장 잘 나타낼 수 있는 직선 또는 일차함수를 찾는 것이었다(데이터 포인트가 2차원인 경우). 일차함수식을 y = wx + b와 같이 쓴다면, 최적의 w와 b를 찾는 것이 선형회귀의 목적이다. 이 최적의 w와 b를 찾기 위해 사용되는 것이 바로 경사감소법이다. ▶ 경사감소법(gradient descent)이란? 아래와 같은 데이터가 있다고 가정해보자. 기온이 높아질수록 ..

LIBSVM 활용하여 매트랩에서 SVM 사용하기

지난 포스팅에서 SVM의 원리와 설정해줘야하는 대표적인 두 파라미터(C, gamma)의 의미에 대해서 알아보았다. 간단히 요약하면 SVM은 데이터를 클래스별로 분류할 때 정중간에 위치하는 선 또는 면(결정 경계)을 찾아내는 것이다. 파라미터 C는 이상치 또는 오류를 얼마나 허용하는 가를 정해주고, gamma는 결정 경계의 곡률을 결정해준다. 오늘은 support vector machine (SVM)의 코드를 어디서 다운받고 어떻게 사용하는지에 대해서 살펴보려고 한다. Chih-Chung Chang과 Chih-Jen Lin은 SVM 라이브러리(LIBSVM)를 아래 사이트에서 제공하고 있다.=> https://www.csie.ntu.edu.tw/~cjlin/libsvm/ 이 라이브러리가 좋은 점은 성능은 물..

코딩/matlab 2018.12.19 (34)

고유값 분해와 뗄래야 뗄 수 없는 주성분분석(PCA)

선형대수학에서 배우는 고유값 분해와 특이값 분해는 참 여기저기에 많이 사용된다. 아마 고유값 분해, 특이값 분해를 각 연구분야에 사용해서 게재된 논문만해도 아마 몇 만개는 될 것이다(훌쩍 넘을 수도 있다). 그만큼 응용가치가 크다. 오늘은 고유값과 고유벡터와 아주 밀접한 관련이 있는 머신러닝 알고리즘을 소개하려고 한다. 바로 주성분분석(primary component analysis; PCA)인데, 이는 상당히 유용하며 그 유용성 덕에 매우 유명한 알고리즘이다. 일반적으로 간단히 PCA라고 부른다. ▶ PCA의 대략적 이해 PCA는 입력 데이터의 상관 계수 행렬(correlation coefficient matrix)에 대해 고유값분해를 해주어, 공헌도가 큰 고유값(즉, 상대적으로 큰 고유값들)과 매칭되..