본문 바로가기

전체 글

(66)
XG Boost 파이썬 이해하기 - 파라미터 정리 및 파이썬래퍼와 사이킷런래퍼 코드 실습 XGBoost는 최적화된 그레디언트 부스팅 구현이 가능한 파이썬 라이브러리이다. XGBoost는 빠른 속도, 확장성, 이식성이 특징이며 캐글 등 머신러닝 경연 대회에서 우승 후보들이 사용하는 도구로 성능이 아주 좋다. 이전 모델이 과소적합한 샘플에 가중치를 줘서 다음 모델에서 예측 정확도를 높이는 방식으로 모델을 보완해가는 부스팅 기법을 사용한다. 부스팅, 배깅의 차이와 그라디언트 부스팅 gmb보다 빠르고 조기종료가 가능하며 과적합 방지가 가능하다. 또한 분류와 회귀 둘 다 사용이 가능하다. 사이킷런에서 제공하지 않기 때문에 따로 설치가 필요하다. pip install xgboost 위 코드로 간단하게 설치 가능하다. XGBoost는 파이썬래퍼 XGBoost와 사이킷런래퍼XGBoost 두가지 방법으로 사..
라쏘와 엘라스틱넷, 선형회귀 과적합 방지를 위한 규제 방법 선형 회귀는 매개변수가 없다. 매개변수가 없기 때문에 모델링을 할 때 매개변수 조정이 필요 없지만 그만큼 오버피팅되기 쉽다. 이러한 선형회귀의 과대적합 문제를 해결하기 위해서 규제를 사용한다. 편향-분산 트레이드오프 선형회귀 오버피팅 방지 - 릿지 회귀 규제 방법에는 L2규제인 릿지와 L1규제인 라쏘, 그리고 이 둘을 결합한 엘라스틱넷이 있다. 이번 포스팅에서는 라쏘와 엘라스틱넷에 대해 자세히 다뤄보겠다. 릿지와 마찬가지로 라쏘도 비용함수에 규제항을 더한다. 다만 L2노름의 제곱을 2로 나누는 릿지와 달리 계수의 절대값의 합인 L1노름을 패널티로 사용한다. 라쏘의 가장 중요한 특징은 덜 중요한 특성의 가중치를 제거하려고 하는 것이다. 즉, 어떤 계수는 가중치가 0이 되어서 아예 모델에 사용되지 않는 것이..
K-최근접 이웃 (K-NN) 분류기, 가장 간단한 머신러닝 알고리즘 K-최근접 이웃은 가장 간단한 머신러닝 알고리즘이다. 일반적으로 머신러닝 모델을 만들면 clf.fit(X_train, y_train)으로 훈련시키고 테스트해서 성능을 평가하는데 k-nn은 따로 훈련이 필요없다. 훈련 데이터셋을 그냥 저장만 하면 되기 때문에 lazy model이라고도 한다. k-nn은 가장 가까운 훈련 데이터 포인트 k개를 최근접 이웃으로 찾아 예측에 사용한다. k가 1이라면 가장 가까운 포인트 1개를 예측에 사용하는 것이고, k가 3이라면 3개를 예측에 사용하는 것이다. 위 그림을 예로 들어보자. 초록색 원이 예측하고자 하는 데이터이다. 만약 k=3이라면 가장 가까운 거리에 있는 3개의 데이터는 빨간색 삼각형 2개와 파란색 사각형 1개이므로 아마 해당 데이터를 빨간색 삼각형으로 예측할 ..
릿지 회귀, 오버피팅 방지를 위한 선형회귀 모델 규제 통상적으로 모델의 복잡도가 커지면 분산은 커지고 편향은 작아진다. 반대로 모델이 단순해지면 분산은 작아지고 편향은 커진다. 이렇게 분산과 편향은 서로 트레이드 오프 관계에 있다. ★먼저 읽어보면 좋은 글 편향-분산 트레이드오프 개념과 MSE 그리드 서치로 최적의 하이퍼파라미터 찾기 머신러닝에서 경계해야 할 것 중 하나가 바로 오버피팅이다. train data에 지나치게 훈련이 되면 과대적합이 발생해 새로운 test data를 잘 예측하지 못하게 된다. 이러한 오버피팅을 방지하기 위한 방법 중 하나가 바로 모델을 규제하는 것이다. 선형 회귀 모델에서는 모델의 가중치를 제한함으로써 규제한다. 규제 방법에는 릿지, 라쏘, 엘라스틱넷 3가지가 있다. 오늘은 그 첫번째인 릿지에 대해 살펴보자. 릿지 회귀의 규제는..
편향(bias) 분산(variance) 트레이드 오프와 MSE 지도학습에서 bias, variance는 에러 처리할 때 중요하게 생각해야 하는 요소이다. bias(편향): 실제 값과 예측 값 간의 차이 variance(분산): 예측값이 흩어진 정도 (예측값의 평균과 예측값들 간의 차이) 둘다 손실(loss)이기 때문에 가능하면 bias, variance를 모두 작게 하는 것이 좋다. 하지만 기본적으로 편향과 분산은 트레이드오프 관계에 있다. low bias, low variance가 가장 이상적인 모델이다. 그림의 첫번째 high bias, low variance는 언더피팅된 경우이다. train data를 단순하게 학습하는 경우, 너무 적은 데이터로 학습하는 경우, 비선형 데이터에 선형 모델을 학습시키는 경우에는 underfitting이 발생하며 분산은 작은데 편..
지도 학습 분류와 회귀의 차이와 성능 평가 지표 지도학습은 크게 분류(classification)과 회귀(regression)으로 나뉜다. 분류 분류는 이미 정의된 class label 중 하나를 예측하는 것이다. 두 개의 클래스로 분류하는 것이 이진분류, 세 개 이상의 클래스로 분류하는 것이 다중 분류이다. 이진 분류는 양성 클래스(분류하고자 하는 대상)와 음성 클래스로 나뉘며 보통 분류하고자 하는 대상을 1로 설정한다. 회귀 회귀는 연속적인 숫자를 예측하는 것이다. 예를 들면 고객 별 연체 확률을 예측하는 것, 특정 상품의 판매량을 예측하는 것 등은 회귀 문제이다. 회귀와 분류를 구분할 때는 출력 값에 연속성이 있는지를 생각해보면 된다. 성능 평가를 지표를 선택할 때는 모델을 설계한 목적/목표를 생각해야 한다. 통상적으로 분류 모델의 성능 평가 지..
파이썬 null 처리 방법, fillna()와 dropna()로 결측치 보정하기 데이터 전처리 과정에서 중요한 것 중 하나인 결측치 보정. null값이 전혀 없는 데이터라면 참 좋겠지만 현실의 데이터에는 null값이 있는 데이터가 더 많다. titanic 데이터셋으로 실습해보았다. import pandas as pd import numpy as np data = pd.read_csv("titanic.csv") data.info() 우선 info() 함수로 null값 확인을 할 수 있다. 전체 데이터가 891개인데 보면 age, embarked, deck, embark_town 컬럼은 non-null 개수가 891보다 작으므로 null값이 있음을 알 수 있다. info 함수는 결측치뿐만 아니라 컬럼 데이터타입 확인도 가능하다. data.isnull() data.isnull().sum(..
파이썬 라이브러리 - numpy, pandas, matplotlib 등 기본 라이브러리 개념 파이썬에는 다양한 라이브러리가 있다. 보통 머신러닝 모델을 구현할 때 사이킷런을 가장 많이 사용하는데, 사이킷런 뿐만 아니라 numpy, pandas, matplotlib 등 다양한 라이브러리는 반드시 숙지하고 있어야 한다. 특히 사이킷런은 Numpy와 Scipy 기반으로 만들어졌기 때문에 이 둘은 기본적으로 알고 넘어가야 한다. Numpy Numpy는 다차원 배열을 쉽고 효율적으로 처리하게 해주며 수학 계산을 위해 반드시 필요한 파이썬 패키지이다. 넘파이의 핵심은 ndarray 클래스로 쉽게 이야기 하면 행렬이다. 사이킷런의 기본 데이터 구조는 Numpy 배열로 우리가 사용하는 데이터는 모두 넘파이 배열로 변환된다. import numpy as np a = np.array([0,1,2,3,4,5,6,7..