본문 바로가기

전체 글128

GBM(Gradient Boosting Model) GBM은 Gradient Boosting Model로 머신러닝 앙상블 기법 중 하나인 부스팅에서 나온 것이다. 다른 배깅과 랜덤포레스트 같은 경우, 모든 데이터가 순차적이지 않고 병렬적으로 뽑아서 예측하는 것에 반해 부스팅은 순차적으로 모델이 데이터에서 학습한 결과를 가지고 다른 모델이 input으로 쓴다. 즉 모델의 output을 다른 모델이 input으로 받아 진행하는 앙상블 기법이다. 보통 회귀문제에선 loss function은 MSE로 사용한다. MSE로 나온 잔차(residual)를 이용해서 다음 모델을 순차적으로 만들어 나간다는 뜻이다. 즉 negative gradient를 이용해서 다음 모델을 만든다는 것을 의미한다. 그렇기 때문에 gradient로 부스팅을 해서 Gradient Boosti.. 2021. 10. 8.
EDA plt.plot() and plt.hist() from matplotlib.pyplot as plt # or from matplotlib import pyplot as plt # 가장 기본적인 선그래프 plt.plot(x,y) plt.show() # 가장 기본적인 히스토그램 plt.hist(x,y) # y가 없는 경우, plt.hist(x) x의 요소들을 카운트한 값을 y에 넣어준다 plt.show() sns.distplot() # 주의 : python 3.7이후 부터 sns.distplot이 sns.histplot이나 sns.displot으로 대체됨 # 더 이상 distplot을 쓰지 않는다. import seaborn as sns # seaborn라이브러리의 막대그래프 그리는 함수 displot() .. 2021. 10. 8.
OneHot 인코딩-OneHotEncoder(), pd.get_dummies() 원핫인코딩은 컴퓨터가 사람의 언어를 이해하지 못할 때 쓴다. 보통 과일 컬럼 안에 사과, 배 , 딸기가 있다 한다면 컴퓨터는 이 것이 뭔소린가 할것이다. 그럴때 컴퓨터도 이해할 수 있게 바꿔주는 것이 인코딩인데 그 중 onehot 인코딩은 컬럼안에 과일의 갯수만큼 컬럼을 만들어 그 컬럼중 자신이 속한 과일에 1을 표시하고 나머지는 0을 표시하는 방법이다. 쉽게 말해 과일 사과 사과 배 딸기 를 사과 배 딸기 1 0 0 1 0 0 0 1 0 0 0 1 이런 식으로 바꿔준다. 또 그러면 의문점이 생긴다. 하나의 컬럼 안에 사과=1, 배=2, 딸기=3로 해주면 안될까?? 이렇게 생긴 컬럼을 머신러닝 알고리즘에 그대로 넣어 데이터를 예측 하라고 지시한다면 컴퓨터가 이들 값의 관계를 예상과 다르게 형성할 가능성이.. 2021. 10. 8.
수치형 데이터 정규화 회귀식을 만들 때, 각 컬럼의 단위가 다르면 큰 문제가 발생할 수 있다. A컬럼이 단위가 1000이고 B컬럼이 0.01단위라면 회귀식이 y=1000*x1 + 0.01*x2 식이 될 수 있는데 이는 x1에 영향이 너무 커진다. 그러므로 데이터의 정규화를 통해 x1과 x2의 단위를 같게 해야 이 문제를 해소시킬 수 있다. 다양한 scaler가 있다. StandardScaler, RobustScaler, MinMaxScaler, Normalizer 등등 그중 Min Max Scailing 기법은 상당히 간단하다. 0~1사이의 값들로 바꿔주는 방법으로 0과1사이에서만 분포하게 할 수 있다. 하지만 이는 이상치에 굉장히 민감하다. 왜냐면 최댓값을 1로 보고 최솟값은 0으로 보는데 데이터의 분포에 맞지 않는 이상치.. 2021. 10. 8.
이상치(Outlier) 일반적인 데이터 패턴과 매우 다른 패턴을 갖는 데이터는 이상치라 여긴다. 이상치(Outlier)를 찾고자 할 때는 boxplot이 매우 유용하다. 각각의 선들이 의미하는 바를 살펴보겠습니다. 10~8 사이의 실선 : 3분위수 + 1.5 * IQR 파란색 박스의 위쪽 실선 : 3분위수 (75%) 파란색 박스의 중앙 실선 : 2분위수 (중앙값) 파란색 박스의 아래 실선 : 1분위수 (25%) 4~6 사이의 실선 : 1분위수 - 1.5 * IQR 파란색 박스의 길이 : 3분위수 - 1분위수 = IQR import seaborn as sns import numpy as np sns.boxplot(data=df['이상치를 볼 컬럼']) # 신기하게도 data=을 넣어주면 위의 그림처럼 나오지만 # 기냥 sns.b.. 2021. 10. 8.
Pytorch(tutorial)- MNIST 데이터 분류 CNN을 하면서 MNIST 데이터셋은 거즘 튜토리얼 같은 것이다. 이전에도 MNIST로 몇 번 공부해 봤는데, 현재 공부하고 있는 책인 '파이토치 딥러닝 프로젝트 모음집'에서도 튜토리얼로 나와있어 복습할 겸 다시 따라해봤다. 1. 모듈을 불러온다. import torch import torch.nn as nn # 딥러닝 네트워크의 기본구성 요소를 포함한 모듈 import torch.nn.functional as F import torch.optim as optim # 가중치 추정에 필요한 최적화 알고리즘 from torchvision import datasets, transforms from matplotlib import pyplot as plt %matplotlib inline 2. 분석환경을 설정한.. 2021. 10. 4.