Machine Learning(8)
-
[Ensemble] 앙상블 학습
앙상블 (프랑스어: ensemble)은 전체적인 어울림이나 통일. ‘조화’로 순화한다는 의미이다. 앙상블(Ensemble) 학습이란? 앙상블은 위에 언급된 정의처럼, 여러 성질들을 한데 묶어 조화를 이루게 함으로써 하나로는 도달할 수 없는 어떤 특성에 도달하도록 하는 방법입니다. 주로 합창단, 연주단등 음악에 자주 쓰이는 말이지만, 최근에 머신러닝에서 학습의 효율성을 높이기 위해서 사용하는 방법이기도 합니다. 학습의 정확도가 높은 랜덤 포레스트(Random Forest) 분류기가 이 앙상블 학습을 이용한 대표적인 예라고 할 수 있습니다. 앙상블 학습은 어떤 데이터가 주어졌을 때(분류 문제라고 합시다.), 그 데이터가 어떤 클래스에 속할지를 일련의 예측기(Classifier), 즉 분류나 회귀 모델로부터 ..
2020.04.27 -
[RandomForest] 랜덤 포레스트란?
랜덤 포레스트란? 랜덤 포레스트는 오늘날 쓰이는 머신 러닝 알고리즘 중에서 가장 강력한 성능을 자랑하는 알고리즘 중 하나입니다. 랜덤 포레스트는 앙상블 학습 방법의 구체적인 여러 구현 중 하나라고 생각할 수 있습니다. 앙상블 학습을 설명한 포스팅에서 배깅과 페이스팅에 대한 설명을 간단하게 언급했었는데, 랜덤 포레스트는 이 중 배깅 방법을 적용한 결정트리(Decision Tree)의 앙상블입니다. 랜덤포레스트 알고리즘은 결정트리(Decision Tree)분류기 여러 개를 훈련시켜서 그 결과들을 가지고 예측을 하는데, 각각의 결정트리를 훈련시킬 때 배깅(Bagging), 즉, 전체 훈련 세트에서 중복을 허용하여 샘플링한 데이터셋을 개별 결정트리 분류기의 훈련 세트로 하여 훈련시키는 방식입니다. 앙상블 방식을..
2020.04.27 -
[SVM] SVM으로 MNIST 분류하기
서포트 벡터 머신(Support Vector Machine: 이하 SVM)은 Classification 문제에서 결정 경계(Decision Boundary)를 효율적으로 찾는 방법을 제공합니다. 즉, 아래 그림과 같이 두 클래스(빨강, 초록)로 분류될 수 있는 데이터 셋이 있다고 했을 때, 이 데이터셋을 가장 잘 구분 짓는 경계선(실선)을 찾는 것입니다. 이번 포스팅에서는 SVM을 이용해서 MNIST Dataset Classification을 개선해보려 합니다. (Application에 관한 글이므로 SVM의 수학적 원리와 기타 증명 과정은 생략하였습니다.) 지난 MNIST 포스팅 에서는 Random Forest를 이용해 간단한 MNIST 분류 모델을 만들었습니다. 이번에는 SVM을 이용해서 MNIST ..
2020.04.18 -
[SPAM FILTER] 간단한 스팸 분류기
이번 포스팅에서는 spamassassin에서 제공하는 스팸 메일과 정상 메일 데이터셋을 가지고 스팸 메일을 분류하는 간단한 머신 러닝 모델을 만들어 보았습니다. 실제로 사용되고 있는 스팸 메일 분류기는 RNN (Recurrent Neural Network)등을 응용한 딥 러닝 모델을 사용하여 높은 정밀도와 효율성을 보여주고 있습니다. 이번에 구현할 스팸 필터 분류기는 주어진 메일에 들어있는 단어들의 집합만을 가지고 메일을 분류하는 모델이기 때문에, 단어의 맥락이나 전체 글의 맥락까지 고려할 수 있는 딥러닝 기반 RNN 스팸 메일 분류기보다는 효율적이지는 못하지만, 그래도 테스트 셋에서 꽤 정밀한 결과를 나타낸다는 점과, 간단한 머신 러닝 모델에 대한 전반적인 파이프라인을 공부한다는 점에서 의의가 있습니다..
2020.04.15 -
[TITANIC] 타이타닉 생존자 예측 모델
이번 포스팅은 Kaggle에서 제공하는 타이타닉 데이터셋을 가지고 어떤 사람이 타이타닉 침몰 상황에서 살아남을 수 있을지를 예측하는 머신 러닝 모델을 만드는 과정에 대해 살펴보려고 합니다. Kaggle Titanic Tutorial 에서 해당 데이터셋과 여러 가지 가이드라인들을 제공받을 수 있으며, 동일한 데이터셋으로 다른 사람들이 어떤 모델을 가지고 어느 정도의 정확도를 나타내었는지도 확인해 볼 수 있습니다. 이번 모델은 MNIST때 사용하였던 RandomForest Classifier를 사용하였으며, 여러 가지 Map함수와, 데이터 전처리를 통해 학습에 용이한 Feature들을 추출하여 학습시켰습니다. 먼저 데이터 분석 및 전처리를 위한 여러 라이브러리들을 Import하고, 데이터셋을 다운받아줍니다...
2020.04.14 -
KNN Algorithm with Data-Driven k Value
KNN Algotirhm with Data-Driven k Value (2014) Debo Cheng, Shichao Zhang. et al 을 리뷰한 포스팅임을 서두에 밝힙니다. Abstract KNN 알고리즘이란, 머신러닝이나 딥러닝 분야에서 주어진 Sample을 분류(Classification)할 때 사용하는 방법입니다. 기존에 가지고 있던 테스트 샘플들과의 거리를 측정(L1 norm, L2 norm등 거리를 측정하는 다양한 방법이 있음)하여, 거리가 가장 가까운 K개의 샘플을 선택하고 그 K개의 샘플중에서 가장 많은 샘플이 속한 클래스의 레이블을 주어진 Sample의 레이블로 결정하는 방법입니다. ( 더 자세한 내용은 KNN에 대한 포스팅을 참고해주세요 ) 기존의 KNN알고리즘은 모든 테스트 케이..
2020.04.01