Artificial Intelligence/Machine Learning
-
[Ensemble] 앙상블 학습Artificial Intelligence/Machine Learning 2020. 4. 27. 22:22
앙상블 (프랑스어: ensemble)은 전체적인 어울림이나 통일. ‘조화’로 순화한다는 의미이다. 앙상블(Ensemble) 학습이란? 앙상블은 위에 언급된 정의처럼, 여러 성질들을 한데 묶어 조화를 이루게 함으로써 하나로는 도달할 수 없는 어떤 특성에 도달하도록 하는 방법입니다. 주로 합창단, 연주단등 음악에 자주 쓰이는 말이지만, 최근에 머신러닝에서 학습의 효율성을 높이기 위해서 사용하는 방법이기도 합니다. 학습의 정확도가 높은 랜덤 포레스트(Random Forest) 분류기가 이 앙상블 학습을 이용한 대표적인 예라고 할 수 있습니다. 앙상블 학습은 어떤 데이터가 주어졌을 때(분류 문제라고 합시다.), 그 데이터가 어떤 클래스에 속할지를 일련의 예측기(Classifier), 즉 분류나 회귀 모델로부터 ..
-
[RandomForest] 랜덤 포레스트란?Artificial Intelligence/Machine Learning 2020. 4. 27. 21:41
랜덤 포레스트란? 랜덤 포레스트는 오늘날 쓰이는 머신 러닝 알고리즘 중에서 가장 강력한 성능을 자랑하는 알고리즘 중 하나입니다. 랜덤 포레스트는 앙상블 학습 방법의 구체적인 여러 구현 중 하나라고 생각할 수 있습니다. 앙상블 학습을 설명한 포스팅에서 배깅과 페이스팅에 대한 설명을 간단하게 언급했었는데, 랜덤 포레스트는 이 중 배깅 방법을 적용한 결정트리(Decision Tree)의 앙상블입니다. 랜덤포레스트 알고리즘은 결정트리(Decision Tree)분류기 여러 개를 훈련시켜서 그 결과들을 가지고 예측을 하는데, 각각의 결정트리를 훈련시킬 때 배깅(Bagging), 즉, 전체 훈련 세트에서 중복을 허용하여 샘플링한 데이터셋을 개별 결정트리 분류기의 훈련 세트로 하여 훈련시키는 방식입니다. 앙상블 방식을..
-
[SVM] SVM으로 MNIST 분류하기Artificial Intelligence/Machine Learning 2020. 4. 18. 16:15
서포트 벡터 머신(Support Vector Machine: 이하 SVM)은 Classification 문제에서 결정 경계(Decision Boundary)를 효율적으로 찾는 방법을 제공합니다. 즉, 아래 그림과 같이 두 클래스(빨강, 초록)로 분류될 수 있는 데이터 셋이 있다고 했을 때, 이 데이터셋을 가장 잘 구분 짓는 경계선(실선)을 찾는 것입니다. 이번 포스팅에서는 SVM을 이용해서 MNIST Dataset Classification을 개선해보려 합니다. (Application에 관한 글이므로 SVM의 수학적 원리와 기타 증명 과정은 생략하였습니다.) 지난 MNIST 포스팅 에서는 Random Forest를 이용해 간단한 MNIST 분류 모델을 만들었습니다. 이번에는 SVM을 이용해서 MNIST ..
-
[SPAM FILTER] 간단한 스팸 분류기Artificial Intelligence/Machine Learning 2020. 4. 15. 11:55
이번 포스팅에서는 spamassassin에서 제공하는 스팸 메일과 정상 메일 데이터셋을 가지고 스팸 메일을 분류하는 간단한 머신 러닝 모델을 만들어 보았습니다. 실제로 사용되고 있는 스팸 메일 분류기는 RNN (Recurrent Neural Network)등을 응용한 딥 러닝 모델을 사용하여 높은 정밀도와 효율성을 보여주고 있습니다. 이번에 구현할 스팸 필터 분류기는 주어진 메일에 들어있는 단어들의 집합만을 가지고 메일을 분류하는 모델이기 때문에, 단어의 맥락이나 전체 글의 맥락까지 고려할 수 있는 딥러닝 기반 RNN 스팸 메일 분류기보다는 효율적이지는 못하지만, 그래도 테스트 셋에서 꽤 정밀한 결과를 나타낸다는 점과, 간단한 머신 러닝 모델에 대한 전반적인 파이프라인을 공부한다는 점에서 의의가 있습니다..
-
[TITANIC] 타이타닉 생존자 예측 모델Artificial Intelligence/Machine Learning 2020. 4. 14. 21:45
이번 포스팅은 Kaggle에서 제공하는 타이타닉 데이터셋을 가지고 어떤 사람이 타이타닉 침몰 상황에서 살아남을 수 있을지를 예측하는 머신 러닝 모델을 만드는 과정에 대해 살펴보려고 합니다. Kaggle Titanic Tutorial 에서 해당 데이터셋과 여러 가지 가이드라인들을 제공받을 수 있으며, 동일한 데이터셋으로 다른 사람들이 어떤 모델을 가지고 어느 정도의 정확도를 나타내었는지도 확인해 볼 수 있습니다. 이번 모델은 MNIST때 사용하였던 RandomForest Classifier를 사용하였으며, 여러 가지 Map함수와, 데이터 전처리를 통해 학습에 용이한 Feature들을 추출하여 학습시켰습니다. 먼저 데이터 분석 및 전처리를 위한 여러 라이브러리들을 Import하고, 데이터셋을 다운받아줍니다...
-
[MNIST] Random Forest를 이용한 간단한 모델 만들기Artificial Intelligence/Machine Learning 2020. 4. 12. 22:40
MNIST는 기계학습계의 "Hello world"라고 불릴 만큼 유명한 데이터셋입니다. MNIST데이터셋에는 여러 가지 종류가 있지만 이번 포스팅에서는 가장 기초적인 머신 러닝 모델 학습을 위해 숫자 데이터셋을 이용하도록 하겠습니다. 모델은 28*28 크기의 손글씨 숫자 데이터를 입력받아 해당 손글씨가 나타내는 숫자를 출력하는 간단한 모델입니다. 코드는 Jupyter notebook을 이용하여 Python3 환경에서 작성 및 실행되었으며, 제 Github Repository 에 전체 코드가 작성되어 있습니다. 머신러닝 모델을 만들기 전에 해야 할 가장 중요한 일 중의 하나는 모델에 학습시킬 데이터의 형태, 구조등을 분석하는 것입니다. 크기는 어느 정도인지, 몇 가지의 Feature가 있는지, 그리고 그 ..
-
Anomaly DetectionArtificial Intelligence/Machine Learning 2019. 2. 21. 10:15
*첨부된 자료의 모든 저작권은 COURSERA에 있음을 미리 밝힙니다. Anomaly Detection 이번 시간에는 Anomaly Detection의 개념과 Detection Algorithm을 살펴보려고 한다.Anomaly Detection이란 번역하면 '이상감지' 혹은 '이상징후감지' 라는 의미를 가지고 있다. 수많은 데이터들을 바탕으로 기존의 데이터들이 가지고 있는 특징들, 즉 '보편적'인 특징들을 갖지 않는 데이터들을 'Anomaly' 한 데이터라고 하는데, 바로 이러한 데이터들을 찾아내는 것이 Anomaly Detection 이라고 할 수 있다. 위의 그림의 경우 기존의 데이터들 (빨간색으로 표시된 부분)에 대해서 보편적으로 함께 분류되기가 어려운 데이터를 'Anomaly'한 데이터라고 한다...
-
Learning CurvesArtificial Intelligence/Machine Learning 2019. 2. 20. 12:40
* 첨부된 자료의 모든 저작권은 COURSERA에 있음을 미리 밝힙니다. Learning Curves 이번 시간에는 머신 러닝 알고리즘이 데이터를 가지고 학습을 할 때에 얼마만큼의 에러를 발생시키는지를 알아보는 Learning Curve(학습 곡선)에 대해 알아보려고 한다. 머신 러닝 알고리즘을 적은 개수의 데이터로 훈련시키게 되면, (예를 들어 1개, 2개, 3개)Training Set의 데이터에 대해서 알고리즘은 Error 값이 0 인 Quadratic Curve h를 예측해 낼 수 있다.하지만 이 에러는 Training Set에만 해당되는 값이므로 Test Set이나 Cross-Validation Set의데이터에 대해서는 굉장히 큰 오류를 일으킬 수 있다. 같은 원리로, Training Set의 크..