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 기존에 알아보았던 앙상블 러닝(보팅과 배깅)에서는 여러개의 약한 학습기를 학습시키는 순서가 큰 상관이 없었다. 하지만, 부스팅이라는 기법은 학습기를 '순차적'으로 학습 - 예측해야 한다. 부스팅의 원리는 이전에 잘못 예측한 데..
DataFrame의 [ ] 연산자 넘파이와 DataFrame 간 가장 유의해야 할 연산자가 바로 '[ ]' 연산자이다. 넘파이 - 행의 위치, 열의 위치, 슬라이싱 범위 등을 지정하여 데이터를 가져올 수 있었다. DataFrame - 칼럼만 지정할 수 있는 칼럼 지정 연산자로 이해를 하는 것이 가장 좋다. (추가적으로, 인덱스로 변환 가능한 표현식도 들어갈 수 있다. ) print('단일 칼럼 데이터 추출 : \n', titanic_df['Pclass'].head(3)) print('\n여러 칼럼의 데이터 추출: \n', titanic_df[['Survived', 'Pclass']].head(3)) print('[] 안에 숫자 index는 KeyError 오류 발생 : \n', titanic_df[0])..
인덱스 판다스에서 인덱스는 없어서는 안될 필수적인 요소이다. 파일을 로딩해서 .index 매서드를 통해서 인덱스를 가져올 수 있다. 이 때, 1차원 array 형태가 반환되고, ndarray처럼 단일 값을 반환하거나, 슬라이싱 하는 것도 가능하다. import pandas as pd import numpy as np #원본 파일 다시 로딩 titnaic_df = pd.read_csv('titanic_train.csv') #Index 객체 추출 indexes = titanic_df.index print(indexes) #Index 객체를 실제 값 array로 변환 print('Index 객체 array 값 : \n', indexes.values) print(type(indexes.values)) print..
앙상블 러닝 앙상블 러닝이란 무엇인가? 간단하게 얘기해서, 여러 약한 학습기들을 모아 학습 / 예측을 실시하고, 그 예측을 결합하여 더욱 정확한 최종 예측을 산출하는 기법을 의미한다. 굳이 왜 이렇게 하는 것일까? 이전에도 얘기했듯이, 모든 머신러닝 알고리즘의 가장 큰 고민 중 하나는 과적합(Overfitting)이다. 이 문제는 ML 알고리즘이 세부적으로 학습을 진행할수록 과적합이 심각해진다. 하지만, 이렇게 하지 않으면 알고리즘의 예측 성능이 떨어지는 과소적합 현상이 발생한다. 그러므로, 과적합이 일어나지 않게 하기 위해 약한 학습기로 학습을 진행하고, 하나가 아닌 여러개의 학습기들의 예측을 결합함으로써 집단 지성처럼 예측 성능이 향상되는 모습을 보인다. 이렇게 과소적합 문제까지 해결한다. 또한, 여..
사이킷런에서는 분류를 위한 결정트리 클래스인 DecisionTreeClassifier와, 회귀를 위한 결정트리클래스인DecisionTreeRegression을 제공한다. 두가지 클래스는 다음의 하이퍼파라미터를 동일하게 제공한다. 대부분의 알고리즘이 직면한 문제가 과적합인 만큼 결정트리의 하이퍼 파라미터 외에도 대부분의 머신러닝 알고리즘들의 하이퍼 파라미터는 과적합을 제어하기 위한 목적으로 설정해준다고 생각을 하면 이해하기 쉽다. 결정트리 하이퍼 파라미터 - min_samples_split : 노드를 분할하기 위한 최소한의 샘플 데이터 수. -> 과적합을 제어하는 데 사용됨. 디폴트는 2이고 작게 설정할수록 분할되는 노드가 많아져서 과적합 가능성 증가 과적합 제어. 1로 설정할 경우 분할되는 노드가 많아져..
생성 DataFrame의 열 생성은 쉽게 만들 수 있다.(판다스의 가장 큰 장점이기도 하다.) 일단 2가지로 나눌 수 있다. 1) 새로 만드는 열의 모든 데이터를 상수로 채워 넣는 경우 이 경우는 주로, 새로운 열(피처)을 만들기 위해서 해주는 경우가 많다. 어려울 것 없이 titanic_df['Age_0'] = 0 #새로 만들어진 'Age_0'열의 모든 value 값들이 0으로 채워진다. titanic_df.head(3) 'Age_0'이라는 열이 존재하는 열이 아니라, 새로 생성할 열의 이름을 대괄호 안에 작은 따옴표로 지정해 준 뒤 등호 오른쪽에 상수를 넣으면 해당 열의 모든 Value 값들이 해당 상수 값으로 채워지는 것을 확인 할 수 있다. 2) 기존에 있는 열(column)을 이용하여 새로운 열..
앙상블러닝 앙상블이라는 단어는 머신러닝을 접하면서도 종종 들어본 경우가 많았을 것이다. 과연 앙상블 러닝은 어떤 기법일까? 기존의 문제점 (과적합) 앞에서 머신러닝을 통해서 예측을 하는 경우에, 과적합(Overfitting)이라는 문제가 항상 존재하고 있다는 것을 언급했었다. 과적합에 대한 원인은, 모델이 데이터를 기반으로 학습을 수행하는 과정에서 너무 세부적인 부분까지 학습데이터에 초점을 맞춘 나머지, 처음 보는 테스트 데이터는 제대로 예측을 못한다는 것이었다. 그렇다고, 너무 큰 단위로 학습을 하고 세부적인 부분을 무시해버린다면, 전체적인 ML 알고리즘 모델의 성능이 떨어지는 문제도 동시에 존재했다. 과적합에 대한 해결책 => 앙상블 러닝 따라서, 사람들은 이 문제를 해결하려고 시도하던 도중, 여러개..
아나콘다 프롬프트에서 패키지를 다운받는 경우, 종종 InvalidArchiveError가 발생하였다. 나는 머신러닝을 배우기 위한 과정에서 결정 트리를 시각화하는 graphviz / python-graphviz 패키지를 설치하는 과정에서 해당 에러가 발생하였다. 특히, 그 이후 에러의 내용을 살펴보면 m2w64-gcc-objc-5.3.0-6.tar.bz2.You probably need to delete and re-download or re-create this file. (이전에 해당 파일을 삭제한 경우, 이와 비슷한 형식이지만 이름만 바뀐 다른 파일이 동일하게 에러로 나타났다. ) 이런 내용을 포함하고 있다. 생소한 파일 확장자와 보지 못한 파일들을 삭제하고 재설치하라고 나오는데 , 해당 파일이 어..
Pandas import pandas as pd import numpy as np 파이썬으로 데이터를 다루는 경우 정형화된 데이터는 주로 Pandas 와 Numpy를 통해서 다룬다. 하지만, Numpy는 저수준 API가 대부분 이므로, 여러가지 고급진 기능을 다양하게 사용할 수 있는 Pandas를 애용하는 사람들이 많다. 또한, Pandas는 리스트, 넘파이 등의 내부 데이터를 비롯하여, 코드 외부에 있는 csv등의 파일도 바로 Pandas객체로 만들수 있다는 장점을 가지고 있다. pd.read_csv() 판다스를 사용할 때, 가장 첫번째로 하게 되는 것은 아마 pd.read_csv()일 것이다. 이때, 가장 중요한 것은 파일의 경로를 제대로 쓰는 것이다. 해당 코드와 파일이 동일한 위치에 있을 경우에는..
최근댓글