목록머신러닝 (5)
rueki

SVM은 기본적으로 선형 분류를 한다. 그러나 선형 분류로 여러가지 데이터를 분류하기란 쉽지 않다. 그 예제로 xor 문제를 들 수가 있다. XOR을 선형으로 어떻게 분류할 수 있을까? 생각을 해봐도 잘 안 떠오른다. 여기서 이제 kernel 개념을 도입하는데 Kernel SVM의 정의는 아래와 같다. 원공간(Input Space)의 데이터를 선형분류가 가능한 고차원 공간(Feature Space)으로 매핑한 뒤 두 범주를 분류하는 초평면을 찾는다. 즉, 쉽게 설명하면 차원을 점점 고차원으로 사상시켜서, 데이터를 고차원에서 보겠다는 뜻인데, 말로는 이해하기 어려울 수도 있으니 그림을 통해 보자. 왼쪽의 2차원에서는 비선형 특성을 띄고 있어, 선형적으로 구분할 수가 없다. 그러나 차원을 mapping 시키..

SVM은 복잡한 분류 문제에 적합하며, 적은 규모의 dataset에 적합하다. 기본 개념은 데이터를 분류할 때 선형적으로 구분하겠다는 것인데, Linear SVM으로 설명할 수가 있다. 가운데의 f(x) = 0 을 SVM 모델이라고 하고, 실선간의 거리를 Margin이라고 한다. SVM은 분류하고자하는 클래스 사이에 가장 넓은 간격을 갖고자하는데, 그 간격, 즉 Margin 결정에 영향을 주는 것을 Support vector라고 하며, 위의 사진에서 Support Vector는 각 실선위에 위치한 데이터라고 할 수가 있다. SVM은 feature scale에 민감하기에, 스케일 조정하면 Decision boundary가 좋아진다. 직선의 모델을 WTx+b라고 하고 각 decision boun..

오차 행렬은 이진 분류에서 성능 지표로 잘 활용되고 있다. 학습된 분류 모델이 예측을 수행하면서, 얼마나 헷갈리고 있는지도 함께 보여주는 지표이다. 즉 어떠한 유형의 예측 오류가 발생하고 있는지를 나타낸다. True / False : 예측값과 실제값이 같은가 /틀린가 Negative / Positive : 예측 결과 값이 부정(0) / 긍정(1) TN : 예측값을 Negative 값 0으로 예측했고 실제 값은 역시 Negative 값 0 FP : 예측값을 Positive 값 1로 예측 했는데 실제 값은 Negative 값 0 FN : 예측값을 Negative 값 0으로 예측했는데, 실제 값은 Positive 값 1 TP : 예측값을 Positive 값 1로 예측했는데 실제 값 역시 Positive 값 1..
머신러닝의 프로세스 1. 데이터 가공 / 변환 2. 모델 학습 / 예측 3. 평가 정확도 : 실제 데이터에서 예측 데이터가 얼마나 같은지를 판단하는 지표 정확도(Accuracy) = 예측 결과가 동일한 데이터 건수 / 전체 예측 데이터 건수 모델예측 성능을 직관적으로 나타내는 평가지표이다. 그러나 데이터의 구성에 따라 ML 모델의 성능을 왜곡 받을 수 있다. 캐글의 타이타닉 예제에서 성별로만 예측을 하면 정확도가 얼마나 나오는지 확인해보자. from sklearn.base import BaseEstimator class MydummyClassifier(BaseEstimator): def fit(self, X, y=None): pass def predict(self, X): pred = np.zeros((..