MNIST 분석 보고서

김대한·2022년 5월 3일
0

다양한 모델을 활용한 MNIST 분석

MNIST 모델은 ML, Deeplearning 입문자에게 연습용으로 훌륭한 dataset이다. 이 dataset을 다양한 model을 활용하여 분석해보려 한다. 활용할 model은 logistic regression, K-NN classifiers, SVM classifiers, Random forest classifiers이다.

setting

IDE : colab
Library : scikit learn
data : Keras, MNIST digits classfication dataset (https://keras.io/api/datasets/mnist/)
training dataset 60000, test dataset 10000

Logistic Regression

Hypothesis : hθ(x)=g(θTx)h_\theta(x) = g(\theta^Tx)
Sigmoid function : g(z)=11+ezg(z) = {1 \over1+e^-z}
cost function : J(θ)=1m[i=1mloghθ(x(i))+(1y(i))log(1hθ(x(i)))]J(\theta) = -{1\over m}[\sum^m_{i=1}logh_\theta(x^{(i)})+(1-y^{(i)})log(1-h_\theta(x^{(i)}))]

기존의 linear regression의 cost function (J(θ)=1mi=1m12(hθ(x(i))y(i))2J(\theta) = {1\over m}\sum^m_{i=1}{1\over2}(h_\theta(x^{(i)}) - y^{(i)})^2 ) 과는 다른 형태를 보이는데 이는 continuous한 linear regression과 달리 classification을 해야하는 logistic 특성상 discrete한 값을 도출 해야하기 때문

실험에서는 C(inverse of regularization strength)값과 iteration 값을 변화하면서 값을 변경해 보았다.

c, iteration50100200300
0.10.92220.92320.9215
10.92220.92310.92070.9207
100.92190.92340.9224
1000.9234

최적의 accuracy는 C = 10, iteration = 100일 때 최고의 performance를 낸다. iteration이 200일 때부터는 overfitting 되어 test set에 대한 accuracy가 감소하는 것을 확인할 수 있었다.

advantage
매우 효율적이고 엄청난 양의 계산 리소스를 필요로 하지 않음. 정규화도 쉽고단순함

disadvantage
비선형 문제를 해결하는 데 사용할 수 없음. 단순하고 심플한 만큼 performance가 제안됨

K-NN classification

option : euclidean distance 사용
실험에서는 n_niehgbor값을 변경해 보았다.

n_neighbor135
accuracy0.94690.94720.9469

advantage
기존 분류 체계 값을 모두 검사하기 때문에 정확도가 높은 편이다. 또한 상위 n개의 데이터만 사용하기 때문에 outliyer 또한 고려되지 않는다.

disadvantage
모든 데이터를 비교하기 때문에 데이터가 많을 수록 처리 시간이 매우 증가한다.
고차원 데이터에 대해선 '차원의 저주'를 피할 수 없어 이를 수행하기 전에 차원 축소를 권장

SVM

사용한 kernel은 linear, polynomial, RBF이며 C값을 변화하면서 실험을 진행하였다.
svm 특성상 학습시간이 너무 느려 training data subset를 10000, test를 5000으로 줄여서 학습시켰다.

c1010.1
linear0.91220.91220.9174
poly0.9590.90580.5572
rbf0.95060.94320.8822

가장 최적의 조건은 kernel이 polynomial, c=10일때로 추정됐다. 이를 기점으로 본래 training dataset(60000)을 학습시킨 결과 0.9802의 정확도가 나왔다.

advantage
과적합 피할 수 있다. 분류문제와 예측문제에 같이 사용가능하고 예측 정확도가 높다. 적은 차원의 데이터의 일반화에서 강한 performance를 보임

disadvantage
최적화를 위해 kernel과 모델 파라미터를 조절하는데 많은 시간이 들며 학습 시간 또한 오래 걸림

Random Forest

information gain을 위한 metric으로는 entropy를 사용했다. n_estimate(number of tree)의 개수를 변경해가며 실험을 진행해 보았다.

n_estimate1050100200
accuracy0.94960.97060.97250.9727

tree의 수가 200일 때 좋은 performance를 보였다. 100과 200의 차이가 미미한 것으로 충분한 fitting이 되었다고 생각된다. 추가적으로 meteric을 바꾸어 gini를 활용해 본결과 0.9735로 성능이 향상 되었다.

advantage
ensemble 및 bagging model 특성상 overfitting이 발생하지 않으며 performance가 우수한 편에 속한다.

disadvantage
여러 모델을 학습해야 하다 보니 차원이 크도 메모리 소모가 크다.

profile
나는 고양이야 다만 개같을 뿐이지

0개의 댓글