
서포트벡터머신(SVM)은 모델 성능도 좋고 선형, 비선형 분류, 회귀, 이상치 탐색 등에 다목적으로 사용할 수 있는 강력한 ML모델이다. SVM 개념 SVM은 결정경계(Decision Boundary)를 정의하는 모델이다. 위 그림에서 실선은 빨간색, 파란색 두 개의 클래스를 정확하게 분류한다. 선 밖에 새로운 훈련 샘플이 추가되어도 결정경계에는 전혀 영향을 미치지 못하지만 경계에 걸쳐있는 샘플은 그렇지 않다. 점선에 걸쳐있는 샘플들은 boundary가 더 밖으로 밀려나게끔 한다. 이렇게 결정경계에 위치해서 Boundary에 결정적인 영향을 미치는 샘플을 서포트 백터라고 부르며, 결정경계와 서포트 백터 사이의 거리를 Margin(마진)이라고 한다. 위 그래프에서 클래스를 분류하는 결정 경계 중 어떤 것이..

차원의 저주란? 차원의 저주란 차원이 증가하면서 학습데이터 수가 차원 수보다 적어져서 성능이 저하되는 현상을 일컫는다. 차원이 증가할수록 변수가 증가하고, 개별 차원 내에서 학습할 데이터 수가 적어진다. 이때 주의할 점은 변수가 증가한다고 반드시 차원의 저주가 발생하는 것은 아니다. 관측치보다 변수 수가 많아지는 경우에 차원의 저주 문제가 발생하는 것이다. 위 그림에서 보는 것과 같이 차원이 증가할수록 빈 공간이 많아진다. 같은 데이터지만 1차원에서는 데이터 밀도가 촘촘했던 것이 2차원, 3차원으로 차원이 커질수록 점점 데이터 간 거리가 멀어진다. 이렇게 차원이 증가하면 빈 공간이 생기는데 빈 공간은 컴퓨터에서 0으로 채워진 공간이다. 즉, 정보가 없는 공간이기 때문에 빈 공간이 많을수록 학습 시켰을 때..
CatBoost 특징 1. Level-wise Tree LightGBM은 DFS(깊이 우선 탐색)처럼 트리를 우선적으로 깊게 형성하는 방식을 취하며, XGBoost는 BFS(너비 우선 탐색)처럼 우선적으로 넓게 트리를 형성한다. CatBoost도 XGBoost처럼 BFS 방식 즉, level-wise 방식으로 트리를 형성하나 Feature를 모두 동일하게 대칭적인 트리 구조로 형성하게 된다. 이런 방식을 통해 예측 시간을 감소시키게 된다. 2. Ordered Boosting 기존의 부스팅 모델이 일괄적으로 모든 훈련 데이터를 대상으로 잔차계산을 했다면, CatBoost는 일부 데이터만을 가지고 잔차계산을 한 뒤, 모델을 만들어 나머지 데이터의 잔차는 이 모델로 예측한 값을 사용한다. 3. Random P..
비지도 학습 비지도 학습이란, 입력 데이터에 대한 출력 값(정답) 없이, 오직 입력 데이터만으로 학습을 진행한 뒤, 데이터로부터 유의미한 정보를 추출하는 머신러닝 기법입니다. 정답이 주어지지 않으므로, 학습이 끝난 뒤에도 정확도를 알 수 없습니다. 주요 기술 군집화(Clustering) 유사한 데이터들을 그룹화하는 작업 비정상 탐지(Anomaly detection) 예상치 못한 이벤트 또는 결과를 식별하는 작업 차원 축소(Dimension reduction) 고려해야하는 Feature 의 개수를 줄이는 작업 상관관계가 있는 여러 Feature 를 하나로 합치는 작업 군집화 주요 모델 K-Means Clustering DBSCAN Mean-Shift Clustering EM Clustering using ..

경사 하강법(Gradient Descent) 경사 하강법(Gradient Descent)은 머신러닝 및 딥러닝 알고리즘을 학습시킬때 사용하는 방법 중 하나이며 1차 근삿값 발견용 최적화 알고리즘이다. 기본 개념은 함수의 기울기(경사)를 구하여 기울기가 낮은 쪽으로 계속 이동시켜 극값(최적값)에 이를 때까지 반복하는 것이다. 해당 함수의 최소값 위치를 찾기 위해 비용 함수(Cost Function)의 경사 반대 방향으로 정의한 Step Size를 가지고 조금씩 움직여 가면서 최적의 파라미터를 찾으려는 방법이다. 여기에서 경사는 파라미터에 대해 편미분한 벡터를 의미하며 이 파라미터를 반복적으로 조금씩 움직이는 것이 관건이다. 경사 하강법에서는 학습시 스텝의 크기 (step size)가 중요하다. 학습률이 너..

ROC(Receiver Operating Characteristic) curve는 다양한 threshold에 대한 이진분류기의 성능을 한번에 표시한 것이다. 이진 분류의 성능은 True Positive Rate와 False Positive Rate 두 가지를 이용해서 표현하게 된다. ROC curve를 한 마디로 이야기하자면 ROC 커브는 좌상단에 붙어있는 커브가 더 좋은 분류기를 의미한다고 생각할 수 있다. ROC curve를 잘 이해하기 위해선 ROC curve plot에서 보이는 세 가지 특성에 대해 파악하는 것이 좋다. True Positive Rate과 False Positive Rate ROC Curve위의 한 점이 의미하는 것은 무엇인가? ROC Curve의 휜 정도가 의미하는 것은 무엇인가..

다항 회귀 (Polynomial Regression) y=w0+w1x+w2x2+⋯+wdxdy=w0+w1x+w2x2+⋯+wdxd 독립변수의 차수를 높이는 형태 다차원의 회귀식인 다항 회귀 분석으로 단순 선형 모델의 한계를 어느정도 극복할 수 있음. 함수가 비선형, 데이터가 곡선 형태일 경우 예측에 유리 데이터에 각 특성의 제곱을 추가해주어서 특성이 추가된 비선형 데이터를 선형 회귀 모델로 훈련시키는 방법 보통 2차함수는 중간에 하강하므로 3차(cubic) 함수부터 아니면 단조증가하는 제곱근이나 로그 함수를 많이 쓴다. 다항 회귀도 결국 xd=Xdxd=Xd로 뒀을 때 다중 회귀식의 일종이라고 볼 수 있다. %matplotlib inline import numpy as np import pandas as pd..
Boosting 이란? 여러 개의 약한 의사결정나무(Decision Tree)를 조합해서 사용하는 앙상블(Ensemble) 기법 중 하나 즉, 약한 예측 모형들의 학습 에러에 가중치를 두고, 순차적으로 다음 학습 모델에 반영하여 강한 예측모형을 만든다. XGBoost 란? XGBoost는 Extreme Gradient Boosting의 약자이다. Boosting 기법을 이용하여 구현한 알고리즘은 Gradient Boost 가 대표적 이 알고리즘을 병렬 학습이 지원되도록 구현한 라이브러리가 XGBoost 이다. Regression, Classification 문제를 모두 지원하며, 성능과 자원 효율이 좋아서, 인기 있게 사용되는 알고리즘 이다. XGBoost의 장점 [1] GBM 대비 빠른 수행시간 병렬 ..

import numpy as np aaa = np.array([1,2,-10,4,5,6,7,8,50,10]) def outliers(data_out): quartile_1, q2, quartile_3 = np.percentile(data_out, [25,50,75]) # 하위 25% 위치 값 Q1 # 하위 50% 위치 값 Q2 (중앙값) # 하위 75% 위치 값 Q3 print("1사분위 : ", quartile_1) print("q2 : ", q2) print("3사분위 : ", quartile_3) iqr = quartile_3 -quartile_1 print("iqr : ", iqr) # 왜 빼는지 명시 lower_bound = quartile_1 - (iqr * 1.5) upper_bound = ..

import numpy as np from sklearn.datasets import load_diabetes from sklearn.model_selection import train_test_split datasets =load_diabetes() x = datasets.data y = datasets.target x_train, x_test, y_train,y_test = train_test_split(x,y, train_size=0.8,shuffle=True, random_state=123) from xgboost import XGBRegressor model = XGBRegressor() model.fit(x_train, y_train) print(model, ':', model.feature_..
결측치란? 대부분의 머신러닝 알고리즘은 Missing feature, 즉 누락된 데이터가 있을 때, 제대로 역할을 하지 못합니다. 그래서 먼저 Missing feature에 대해 처리해주어야 합니다. Missing feature, NA(Not Available) : '결측치'라고 하며 값이 표기되지 않은 값 결측치의 종류 Random : 패턴이 없는 무작위 값 No Random : 패턴을 가진 결측치 결측치 처리 전략 제거 (Deletion) 대치 (Imputation) 예측 모델 (Prediction model) 결측치 확인 결측치 여부 확인 df["col"].isnull() 결측치 개수 확인 df["col"].isnull().value_counts() 제거 (Deletion) 결측치의 특성이 '무작위..
1. 데이터 import numpy as np import tensorflow as tf #웨이트의 난수 from sklearn.datasets import load_iris from sklearn.metrics import accuracy_score from sklearn.model_selection import GridSearchCV from sklearn.model_selection import RandomizedSearchCV from sklearn.experimental import enable_halving_search_cv from sklearn.model_selection import HalvingRandomSearchCV, HalvingGridSearchCV from sklearn.mod..

과적합 과적합 : 모델이 학습 데이터에만 과도하게 최적화되어, 실제 예측을 다른 데이터로 수행할 경우에는 예측 성능이 과도하게 떨어지는 것을 말합니다. 교차검증 교차검증 : 데이터 편중을 막기 위해서 별도의 세트로 구성된 학습 데이터 세트와 검증 데이터 세트에서 학습과 평가를 수행하는 것입니다. 대부분의 ML 모델의 성능 평가는 교차 검증 기반으로 1차 평가를 한 뒤에 최종적으로 테스트 데이터 세트에 적용해 평가하는 프로세스 입니다. 1. KFold 가장 보편적으로 사용되는 교차 검증 기법 먼저 K개의 데이터 폴드 세트를 만들어서 K번만큼 각 폴드 세트에 학습과 검증 평가를 1 반복적으로 수행하는 방법 학습 데이터 세트와 검증 데이터 세트를 점진적으로 변경하면서 마지막 5번째(K번째)까지 학습과 검증을 ..
1. 지도 학습(Supervised learning) 지도 학습 알고리즘은 한 세트의 사례들을(examples) 기반으로 예측을 수행합니다. 예를 들어, 과거 매출 이력(historical sales)을 이용해 미래 가격을 추산할 수 있습니다. 지도 학습에는 기존에 이미 분류된 학습용 데이터(labeled training data)로 구성된 입력 변수와 원하는 출력 변수가 수반되는데요. 알고리즘을 이용해 학습용 데이터를 분석함으로써 입력 변수를 출력 변수와 매핑시키는 함수를 찾을 수 있습니다. 이렇게 추론된 함수는 학습용 데이터로부터 일반화(generalizing)를 통해 알려지지 않은 새로운 사례들을 매핑하고, 눈에 보이지 않는 상황(unseen situations) 속에서 결과를 예측합니다. 분류(C..

Support Vector Machine 이란? 분류(classification), 회귀(regression), 특이점 판별(outliers detection) 에 쓰이는 지도 학습 머신 러닝 방법 중 하나이다. SVM 의 종류 scikit-learn 에서는 다양한 SVM 을 지원한다. SVC Classification 에 사용되는 SVM 모델을 의미하며, SVM 의 끝문자인 M 을 Classification 의 첫 문자인 C 로 바꾼 것이다. SVR Regression 에 사용되는 SVM 모델을 의미하며, SVM 의 끝문자인 M 을 Regression 의 첫 문자인 R 로 바꾼 것이다. 특이점 판별(outlier detection) 에는 OneClassSVM 이 사용된다. SVC (Support Vec..

1. 앙상블 학습이란? 앙상블 학습이란 여러개의 분류기를 생성하고, 그 예측을 결합함으로써 보다 정확한 예측을 도출하는 기법을 말한다. 강력한 하나의 모델을 사용하는 대신 보다 약한 모델 여러개를 조합하여 더 정확한 예측에 도움을 주는 방식이다. 현실세계로 예를 들면, 어려운 문제를 해결하는데 한 명의 전문가보다 여러명의 집단지성을 이용하여 문제를 해결하는 방식을 앙상블 기법이라고 할 수 있다. 앙상블 학습은 크게 보팅, 배깅, 부스팅 세가지 유형으로 나눌 수 있다. 2. 앙상블 학습 유형 앙상블 학습은 일반적으로 보팅(Voting), 배깅(Bagging), 부스팅(Boosting) 세 가지의 유형으로 나눌 수 있습니다. 보팅(Voting) 여러 개의 분류기가 투표를 통해 최종 예측 결과를 결정하는 방식..