본문 바로가기

Data Science/Machine Learning

(11)
베이지안 최적화(Bayesian Optimization) 이번 포스팅은 하이퍼파라미터 튜닝 방법으로 많이 사용되는 "베이지안 최적화(Bayesian Optimization)" 기법에 대해 설명해보도록 하겠다. 단, Bayesian Optimization 기법의 이론적인 내용을 깊게 들어가면 너무 어렵기 때문에, 큰 틀에서의 개념 정도만 이해하는 것을 이번 포스팅의 목표로 삼겠다. (솔직히 필자도 아직 이론적으로는 완벽하게 이해하지 못했다..) 물론 대표적인 하이퍼파라미터 튜닝 기법인 "그리드 서치(GridSearch)"와 "랜덤 서치(RandomSearch)"를 사용해서 튜닝을 진행해 볼 수도 있다. 그러나 위 두 가지 방법은 아래와 같은 단점이 존재한다. GridSearch의 단점 모든 하이퍼파라미터 후보들에 대한 일반화 성능을 확인하기 때문에 시간이 너무 ..
[핸즈온 머신러닝 2/E] 9장. 비지도 학습 드디어 "핸즈온 머신러닝 2/E" 교재를 Part 1(머신러닝 파트)까지 완독하였다!! 자, 그럼 이제 Part 1의 마지막 챕터인 "9장. 비지도 학습"에 대해서 정리해보도록 하겠다. ▶ 비지도 학습이란? 우리가 사용할 수 있는 대부분의 데이터는 레이블이 없다. 즉, 정답이 없는 데이터이기 때문에 지도 학습을 사용할 수가 없다. 이러한 경우에 사용하는 방법이 바로 "비지도 학습"이다. 대표적인 비지도 학습으로는 Clustering(군집 분석)이 있다. ▶ 군집 분석(Clustering) 앞서 말했듯이, 군집 분석은 대표적인 비지도 학습이다. 주의할 점은 "분류"와 "군집"을 헷갈리면 안 된다는 것이다. 아래의 그림을 참고하면, 분류와 군집을 구분할 수 있을 것이라고 생각한다. 군집 분석은 다방면에서 활..
[핸즈온 머신러닝 2/E] 8장. 차원 축소 우리가 마주하는 머신러닝 문제에서 훈련 샘플이 무수히 많은 특성(feature)을 갖고 있는 경우가 존재한다. 이렇게 많은 특성들이 존재하게 되면, 훈련 속도가 느려질 뿐만 아니라 좋은 솔루션을 찾기가 힘들다. 이번 챕터에서는 이러한 문제를 해결할 수 있는 방법인 "차원 축소"에 대해서 정리해보도록 하겠다. 자, 그럼 시작해볼까? 차원을 축소시키면 일부 정보가 유실된다. 따라서 훈련 속도가 빨라질 수는 있지만, 정보 손실의 문제가 발생할 수도 있다. 또한 작업 파이프라인이 더 복잡해지고 유지 관리가 어려워진다. 차원 수를 둘 또는 셋으로 줄이면 고차원 훈련 세트를 하나의 압축된 그래프로 표현할 수 있고, 군집과 같은 시각적인 패턴 또한 감지하기 쉬워서 중요한 insight를 도출해내는 경우가 많다. ▶ ..
[핸즈온 머신러닝 2/E] 7장. 앙상블 학습과 랜덤 포레스트 이번 장에서는 앙상블 학습에 대해서 정리해보도록 하겠다. 그 중에서도 특히 많이 사용되는 랜덤 포레스트에 대해서도 다뤄보겠다. ▶ 앙상블 학습이란? 여러 개의 분류기를 생성하고, 그 예측을 결합함으로써 보다 정확한 최종 예측을 도출하는 기법이다. 각 분류기가 weak learner(약한 학습기)일지라도, 충분하게 많고 다양하다면 앙상블은 strong learner(강한 학습기)가 될 수 있다. 위처럼 말할 수 있는 근거가 바로 그 유명한 "대수의 법칙"이다. 앙상블 방법은 모든 분류기가 완벽하게 독립적이고, 오차에 상관관계가 없어야 최고의 성능을 발휘한다. 따라서 다양한 분류기를 얻는 한 가지 방법은 각기 다른 알고리즘으로 학습시키는 것이다. 대표적인 앙상블 모델로는 랜덤 포레스트(결정 트리의 앙상블)가..
[핸즈온 머신러닝 2/E] 6장. 결정 트리 이번 포스팅은 Decision Tree에 대해서 진행하도록 하겠다. 자, 그럼 오늘도 시작해보겠다!! ▶ 결정 트리 학습과 시각화 사이킷런의 DecisionTreeClassifier(분류)와 DecisionTreeRegressor(회귀)를 사용한다. export_graphviz( ) 함수를 사용해서 결정 트리를 시각화할 수 있다. ▶ 결정 트리 해석 위와 같은 결정 트리 모델 결과가 있다고 가정하고 설명을 해보도록 하겠다. 루트 노드(Root Node): 깊이가 0인 맨 꼭대기의 노드 리프 노드(Leaf Node): 자식 노드를 가지지 않는 노드 samples 속성: 얼마나 많은 훈련 샘풀이 적용되었는지 value 속성: 노드에서 각 클래스에 얼마나 많은 훈련 샘플이 있는지 Gini 속성: 불순도를 측정..
[핸즈온 머신러닝 2/E] 5장. 서포트 벡터 머신 이번 포스팅에서는 서포트 벡터 머신(SVM)을 다뤄보겠다. 머신러닝 모델들 중, 가장 많이 사용하고 성능이 뛰어난 모델이므로 개념을 정확하게 이해해야 할 것 같다. ▶ 선형 SVM 분류 SVM 분류기(또는 Large Margin Classification)는 클래스 사이에 폭이 가장 넓은 도로를 찾는 것이라고 생각하면 이해하기 쉽다. 마진(Margin)이란? 두 데이터 군과 결정 경계와 떨어져 있는 정도 우리의 목표는 이 margin을 최대화하는 결정 경계(선 또는 면)를 찾아내는 것!! 위 그림을 보면 알 수 있듯이, 도로 바깥쪽에 훈련 샘플을 추가해도 결정 경계에는 영향을 미치지 않는다. 또한 결정 경계는 도로 경계에 위치한 샘플. 즉, 서포트 벡터에 의해 결정된다. 서포트 벡터란? 두 클래스 사이의..
[핸즈온 머신러닝 2/E] 4장. 모델 훈련 이번 포스팅에서는 다양한 회귀 모델들에 대해 설명하고자 한다. 자, 그럼 시작해보겠다. ▶ 선형 회귀 ◆ 선형 회귀 모델의 예측 선형 회귀 모델의 예측값 y_hat은 다음과 같이 나타낼 수 있다. 통계학에서는 단순 선형 회귀와 다중 선형 회귀를 구분해서 배웠는데, 머신러닝에서는 어차피 단순 선형 회귀를 쓸 일은 거의 없으니 다중 선형 회귀로 통합시켜서 설명을 해놓은 듯 싶다. 위 식을 아래와 같이 벡터 형태로 쓸 수도 있다. ※ 위의 벡터 형태의 식이 어떻게 나왔는지에 대한 설명을 위해, 아래 이미지 2개를 첨부하였다. (첨부된 이미지를 보면, 해당 식이 어떻게 나왔는지 이해할 수 있을 것이다) ↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓ 우리의 목표는 회귀 모델의 성능 측정 지표로 많이 사용되는 ..
[핸즈온 머신러닝 2/E] 3장. 분류 이번에 포스팅할 3장에서는 "분류(Classification)"에 대해서 설명해보려 한다. 우선 설명을 위해 예시로 사용할 데이터는 MNIST 데이터 셋으로, 아래와 같은 숫자 이미지 데이터이다. 본격적으로 시작하기에 앞서, MNIST 데이터 셋을 "특성들로만 이루어진 데이터 셋"과 "target 값들로만 이루어진 데이터 셋"으로 분리해주겠다. ▶ 이진 분류기 훈련 교재에서는 확률적 경사 하강법(SGD; Stochastic Gradient Descent) 분류기로 숫자 5를 식별하는 것을 예시로 보여주고 있다. ◆ 확률적 경사 하강법 분류기(SGDClassifier) 매우 큰 데이터 셋을 효율적으로 처리하는 장점이 있다. 한 번에 하나씩 훈련 샘플을 독립적으로 처리하기 때문! 사이킷런의 SGDClassi..