회귀 이전 포스팅에서 설명한 회귀의 형태는 y = w_0 * x_0 + .... + w_n * x_n 이었다. 이것은 점들의 관계를 직선으로 표현하는 식이다. 하지만, 모든 현상을 직선으로 표현하는 것이 최선은 아니다. 어느 경우에는 조금 더 복잡하게 하는 경우에 최적의 회귀선을 나타내는 것일수도 있다. 이런 것을 표현하기 위해 다항회귀를 사용한다. 여기에서 "독립변수"가 단항식(x_0 ... x_n)이 아닌 2차, 3차로 표현되는 것을 다항(Polynomial) 회귀라고 한다. 다항이라는 것은 x_0, x_1, x_0 * x_1, (x_0)^2, (x_1)^2 .... 이라고 생각하면 된다. "독립변수"라는 것을 강조한 이유는 다항회귀면 비선형회귀여야 하는 것이라는 것에 대한 오해를 풀기 위해서이다. ..
기계학습/Machine Learning 검색 결과
회귀 지도학습은 2가지 유형, 분류와 회귀로 나뉜다. 분류 - 예측값이 카테고리와 같은 이산형 값 회귀 - 예측값이 연속형 숫자 회귀는 그 중에서도 선형회귀가 가장 많이 사용된다. 선형 회귀는 직선형 회귀선을 예측값과 실제값의 차이가 가장 작게 산출되도록 가중치들을 최적화하여 찾아내는 방식을 의미한다. 단순 선형 회귀 단순 선형 회귀는 독립변수(X) 하나, 종속변수(Y)도 하나인 선형 회귀를 의미한다. 독립변수와 종속변수가 갑자기 나와서 헷갈릴 수도 있지만, 쉽게 말해 독립변수는 피처를, 종속변수는 레이블 값을 의미한다. 따라서 단순 선형 회귀는 피처가 하나인 데이터를 가장 잘 나타내는 회귀선을 찾는 기법이라고 생각하면 된다. X, Y를 좌표평면에 찍고, 그 점들을 가장 잘 표현할 수 있는 직선을 찾아내..
스태킹 스태킹(Stacking)이라는 기법은 전체적인 면에서는 앙상블 러닝과 같은 원리이지만, 기존의 앙상블 러닝과 조금 다른 면을 가지고 있다. 스태킹은 복수 개의 기반 학습기들이 학습 - 예측을 진행하고, 예측 데이터들을 학습 데이터로 입력 받는 메타 모델(최종 학습기라고 생각하면 이해하기 쉽다.)이 한번 더 학습 - 예측하는 방식이다. 아주 많이 사용되는 기법은 아니지만, 성능을 최대한으로 향상시키기 위해서 쓰이는 기법이다. 교차 검증 기반의 스태킹 일반 스태킹의 경우, 최종 메타 모델이 학습하는 데이터가 학습 데이터가 아닌, 테스트 데이터를 예측한 값들을 학습하기 때문에, 과적합의 문제가 발생한다. 과적합을 완화시키기 위해서 스태킹 기법과 교차검증 기법을 동시에 적용한다. CV 교차 검증에서는 여..
XGBoost는 트리 기반 앙상블 러닝에서 가장 각광받고 있는 알고리즘 중 하나이다. 분류에 있어서 일반적으로 다른 머신러닝 알고리즘보다 뛰어난 예측 성능을 보여준다. XGBoost XGBoost는 GBoost(Gradient Boost)에서도 알수 있듯이, GBM(Gradient Boosting Machine)을 기반으로 하고 있다. 기존 GBM에서 단점이었던, 느린 수행시간과 과적합을 제어할 방법의 부재를 XGBoost에서 해결하였다. XGBoost의 장점 빠른 수행시간 : GBM에서 하지 못헀던 병렬 수행 및 다양한 기능들을 통해서 GBM보다 빠르다. 하지만, 상대적으로 GBM보다 빠른 것이지, 전체 머신러닝 알고리즘에서 빠른 편에 속하지는 않는다. 과적합 규제 기능 : XGBoost는 자체에 과적..
이전 포스팅에서 Ensemble Learning(앙상블 러닝)과 관련하여 보팅과 배깅에 대해서 알아보았다. 이번에는 앙상블 러닝 중에서도 가장 많이 사용되는 기법인 부스팅에 대해서 알아볼 것이다. Boosting 부스팅의 유형에는 크게 AdaBoost와 GradientBoost가 있다. AdaBoost보다는 GradientBoost가 더 많이 사용되는 기법이기는 하지만, 부스팅에 대한 기본적인 개념을 이해하기 위해 먼저 AdaBoost에 대해서 알아볼 필요가 있다. AdaBoost 기존에 알아보았던 앙상블 러닝(보팅과 배깅)에서는 여러개의 약한 학습기를 학습시키는 순서가 큰 상관이 없었다. 하지만, 부스팅이라는 기법은 학습기를 '순차적'으로 학습 - 예측해야 한다. 부스팅의 원리는 이전에 잘못 예측한 데..
앙상블 러닝 앙상블 러닝이란 무엇인가? 간단하게 얘기해서, 여러 약한 학습기들을 모아 학습 / 예측을 실시하고, 그 예측을 결합하여 더욱 정확한 최종 예측을 산출하는 기법을 의미한다. 굳이 왜 이렇게 하는 것일까? 이전에도 얘기했듯이, 모든 머신러닝 알고리즘의 가장 큰 고민 중 하나는 과적합(Overfitting)이다. 이 문제는 ML 알고리즘이 세부적으로 학습을 진행할수록 과적합이 심각해진다. 하지만, 이렇게 하지 않으면 알고리즘의 예측 성능이 떨어지는 과소적합 현상이 발생한다. 그러므로, 과적합이 일어나지 않게 하기 위해 약한 학습기로 학습을 진행하고, 하나가 아닌 여러개의 학습기들의 예측을 결합함으로써 집단 지성처럼 예측 성능이 향상되는 모습을 보인다. 이렇게 과소적합 문제까지 해결한다. 또한, 여..
사이킷런에서는 분류를 위한 결정트리 클래스인 DecisionTreeClassifier와, 회귀를 위한 결정트리클래스인DecisionTreeRegression을 제공한다. 두가지 클래스는 다음의 하이퍼파라미터를 동일하게 제공한다. 대부분의 알고리즘이 직면한 문제가 과적합인 만큼 결정트리의 하이퍼 파라미터 외에도 대부분의 머신러닝 알고리즘들의 하이퍼 파라미터는 과적합을 제어하기 위한 목적으로 설정해준다고 생각을 하면 이해하기 쉽다. 결정트리 하이퍼 파라미터 - min_samples_split : 노드를 분할하기 위한 최소한의 샘플 데이터 수. -> 과적합을 제어하는 데 사용됨. 디폴트는 2이고 작게 설정할수록 분할되는 노드가 많아져서 과적합 가능성 증가 과적합 제어. 1로 설정할 경우 분할되는 노드가 많아져..
앙상블러닝 앙상블이라는 단어는 머신러닝을 접하면서도 종종 들어본 경우가 많았을 것이다. 과연 앙상블 러닝은 어떤 기법일까? 기존의 문제점 (과적합) 앞에서 머신러닝을 통해서 예측을 하는 경우에, 과적합(Overfitting)이라는 문제가 항상 존재하고 있다는 것을 언급했었다. 과적합에 대한 원인은, 모델이 데이터를 기반으로 학습을 수행하는 과정에서 너무 세부적인 부분까지 학습데이터에 초점을 맞춘 나머지, 처음 보는 테스트 데이터는 제대로 예측을 못한다는 것이었다. 그렇다고, 너무 큰 단위로 학습을 하고 세부적인 부분을 무시해버린다면, 전체적인 ML 알고리즘 모델의 성능이 떨어지는 문제도 동시에 존재했다. 과적합에 대한 해결책 => 앙상블 러닝 따라서, 사람들은 이 문제를 해결하려고 시도하던 도중, 여러개..
이전 포스팅에서 정밀도와 재현율에 대해서 알아보았다. 또한, 각 경우마다 재현율이나, 정밀도의 상대적 중요성이 다르다는 것 또한 알 수 있었다. 하지만, 정밀도와 재현율만으로 완벽하게 머신러닝 분류 알고리즘을 평가할 수 있을까? 이전 포스팅의 마지막 부분에서 다루었듯이, 정밀도 혹은 재현율 중 하나를 극단적으로 증가시키는 경우, 정밀도-재현율 트레이드오프로 인해 다른 하나의 수치가 급격하게 감소하게 된다. 따라서, 이들 중 하나만 가지고 성능을 측정하는 것은 성능의 전체를 대변할 수 없다. 이런 문제점을 해결하기 위해서 나온 개념이 F1 Score이다. F1 Score F1 Score는 정밀도와 재현율을 결합한 지표이다. 이 지표는 정밀도와 재현율이 어느 한쪽으로 치우치지 않을 떄 상대적으로 높은 값을 ..
이전의 포스팅에서 실생활에 많이 쓰이는 정확도가 왜 머신러닝 분류쪽에서 주요한 성능 평가 지표로 사용될 수 없는지에 대해서 알아보았고, 정밀도와 재현율을 이해하기 위해서 오차 행렬의 각 요소(FN, FP, TN, TP)들이 의미하는 바를 알아보았다. 오차 행렬의 각 요소에 기반하여 정밀도와 재현율을 표현하자면, 정밀도 = TP / (FP + TP) 재현율 = TP / (FN + TP) 이렇게 수식처럼 나타내는 것이 계산을 하는 경우에는 편리하게 사용이 될 수 있으나, 정밀도와 재현율을 처음 접하는 사람들에게는 어떤 의미인지 이해하기 어려울 수 있다. 정밀도 = TP / (FP + TP) 분모를 보면 FP + TP 이다. FP는 Positive로 예측했지만 틀린 것을 의미하고, TP는 Positive로 예..
최근댓글