스태킹 스태킹(Stacking)이라는 기법은 전체적인 면에서는 앙상블 러닝과 같은 원리이지만, 기존의 앙상블 러닝과 조금 다른 면을 가지고 있다. 스태킹은 복수 개의 기반 학습기들이 학습 - 예측을 진행하고, 예측 데이터들을 학습 데이터로 입력 받는 메타 모델(최종 학습기라고 생각하면 이해하기 쉽다.)이 한번 더 학습 - 예측하는 방식이다. 아주 많이 사용되는 기법은 아니지만, 성능을 최대한으로 향상시키기 위해서 쓰이는 기법이다. 교차 검증 기반의 스태킹 일반 스태킹의 경우, 최종 메타 모델이 학습하는 데이터가 학습 데이터가 아닌, 테스트 데이터를 예측한 값들을 학습하기 때문에, 과적합의 문제가 발생한다. 과적합을 완화시키기 위해서 스태킹 기법과 교차검증 기법을 동시에 적용한다. CV 교차 검증에서는 여..
사이킷런 검색 결과
XGBoost는 트리 기반 앙상블 러닝에서 가장 각광받고 있는 알고리즘 중 하나이다. 분류에 있어서 일반적으로 다른 머신러닝 알고리즘보다 뛰어난 예측 성능을 보여준다. XGBoost XGBoost는 GBoost(Gradient Boost)에서도 알수 있듯이, GBM(Gradient Boosting Machine)을 기반으로 하고 있다. 기존 GBM에서 단점이었던, 느린 수행시간과 과적합을 제어할 방법의 부재를 XGBoost에서 해결하였다. XGBoost의 장점 빠른 수행시간 : GBM에서 하지 못헀던 병렬 수행 및 다양한 기능들을 통해서 GBM보다 빠르다. 하지만, 상대적으로 GBM보다 빠른 것이지, 전체 머신러닝 알고리즘에서 빠른 편에 속하지는 않는다. 과적합 규제 기능 : XGBoost는 자체에 과적..
데이터 전처리란 무엇인가? 데이터 전처리는 머신러닝 알고리즘에 비해 알려져 있는 정도가 작지만, 중요도는 ML 알고리즘에 맞먹는 중요도를 가지고 있다. 왜냐하면 머신러닝을 통해서 예측을 한다는 것은 데이터 기반이기 때문에, 어떤 데이터를 입력으로 가지는가가 성능에 매우 중요하다. 그럼 어떤 데이터 처리가 필요할까? 1. "결손값", "NaN", "Null"값을 채워 넣는것이다. 머신러닝에 데이터를 입력으로 넣기 전에 해당 값들을 고정된 다른 변환 값으로 바꾸어야 한다. 다른 변환 값이라는 것은 또 무엇을 의미하는가? 이 값은 머신러닝을 제작하는 사람이 직접 고려해야 하는 부분이다. 예를 들어, 피처의 값이 얼마되지 않는 경우에는 피처의 평균값으로 결손값을 대체하는 경우가 있고, 결손값이 일정 수준의 비율..
Scikit-learn 가장 많이 쓰이는 파이썬 머신러닝 라이브러리 특징 쉽고 파이썬스러운 API 제공 다양한 알고리즘과 편리한 프레임워크 API 오랜시간에 걸쳐 여러 사용자들에게 검증 다향한 환경에서 사용가능하다. ※ Anaconda를 설치하면 기본으로 설치되어 있다. 사이킷 런의 버전을 확인하는 방법은 import sklearn print(sklearn.__verison__) 이다. 데이터 다루기 처음 머신러닝을 배울 때에는 데이터를 어디서 가져와야 할지 조차 모를수도 있다. 또한, 데이터를 외부 사이트에서 가져오더라도 정제되지 않은 것들이 많아 입문자가 바로 머신러닝 실습을 하기에는 어려움이 있다. 이런 이유에서 scikit-learn 패키지는 몇 가지의 데이터셋을 내장하고 있다. 여기에서는 붓꽃(..
파이프라인(pipeline), 특성 스케일링(feature scaling), fit, transform, fit_transform() 메서드의 차이 데이터 변환기, Pipeline 만들기 계층적 샘플링 (Stratified Sampling) 데이터 셋이 충분히 크다면 일반 훈련 데이터 셋을 무작위로 샘플링 하여도 큰 문제가 발생하지 않는다. 하지만 그렇지 않으면 데�� dsbook.tistory.com 위에서 전처리한 데이터들로 학습시켜보자. 모델 선택과 평가(교차검증) 1. LinearRegression (선형 회귀) from sklearn.linear_model import LinearRegression lin_reg = LinearRegression() #준비된 데이터와 레이블로 모델 학습 lin_..
데이터 변환기, Pipeline 만들기 계층적 샘플링 (Stratified Sampling) 데이터 셋이 충분히 크다면 일반 훈련 데이터 셋을 무작위로 샘플링 하여도 큰 문제가 발생하지 않는다. 하지만 그렇지 않으면 데이터 편향이 생길 가능성이 크다. 예를들어 여론 설문조사 기관 dsbook.tistory.com 계층적 샘플링에서 다루었던 housing 데이터들을 가지고 예를 들어보자. 현재 이 데이터들은 StratifiedShuffleSplit 객체에 의해 훈련 세트와 테스트 세트로 나뉘어진 상태이며, 훈련 세트는 다시 housing으로 초기화하였고, 훈련 세트의 레이블은 housing_label로 초기화하였다. 이 데이터들을 전처리하기 위한 파이프라인을 만들어보자. housing = strat_tra..
최근댓글