파이썬
스태킹, 블렌딩 기법(Stacking or Blending Methods)
2021.10.10
스태킹은 Stacked Generalizaion의 줄임말로, 여러 가지 머신러닝 기법으로 만들어진 예측기들의 예측을 취합하는 방법이다. 보팅처럼 간단한 함수를 사용하는 대신 이러한 여러 예측기의 예측을 입력으로 받아들여 이들을 취합하는 모델을 훈련하는 것이 기본적인 아이디어이다. 이전 레이어의 모델에서 만들어진 결과가 다음 레이어의 모델을 훈련하는 데이터로 사용되도록 여러 레이어로 만들어진 앙상블 기법이라서 쌓는다는 의미의 스태킹이라는 이름이 붙은 것이다. 이전 레이어 모델이 만든 결과들을 훈련 데이터로 입력받아 만들어진 모델은 메타 러너(Meta Learner) 또는 블렌더(Blender)라고 불린다. 이전 레이어의 결과들을 뒤섞는다는 의미에서 붙여진 이름이다. 넷플릭스 대회에서 수상한 벨코어 프래그매..
파이썬
Boosting 알고리즘
2021.10.09
부스팅 기법이란 여러 개의 약한 머신러닝 기법을 차례대로 학습하는 과정에서 오류를 개선해 가면서 최종 성능을 높여 가는 앙상블 기법이다. 부스팅 기법은 여러 나무를 병렬 방식으로 학습하는 랜덤 포레스트 등의 방식보다는 느릴 수밖에 없다. 그 이유는 여러 나무 또는 머신러닝 기법들을 직렬 방식으로 순차적으로 학습하기 때문이다. 그래서 속도의 문제를 해결하기 위해 새로운 부스팅 모델들이 개발되는데, 그것이 바로 XGBoost, LightGBM, CatBoost이다. 이번 글에서는 위의 세 가지 부스팅 기법이 속도의 문제와 더불어 과적합의 문제를 어떻게 해결하는지에 대해서 알아볼 것이다. XGBOOST 캐글 경연 대회에서 두각을 나타내면서 널리 알려져 각광을 받은 알고리즘으로, 특히 분류에서 뛰어난 예측 성능..
Kaggle
[샌프란시스코 범죄 분류] - 2
2021.10.06
지난 글에서 위경도에 따른 분포를 산점도 그래프를 통해 시각화해보았다. 마지막으로 Dates 칼럼을 확인해보고 피처 엔지니어링, 모델 구축까지 진행해볼 것이다. EDA 날짜 데이터를 다룰 때는 데이터의 유형을 반드시 파악해야 한다. # Dates 확인 train_df['Dates'].dtypes 데이터 타입에서 O는 Object를 의미하며, 문자열 데이터로 저장된 것을 확인할 수 있다. 이러한 데이터를 다룰 때는 문자열을 날짜 데이터로 변환해야 한다. # 날짜 데이터로 변환 train_df['Dates'] = pd.to_datetime(train_df['Dates']) train_df['Dates'].sample(1) 데이터를 변환한 뒤 샘플로 1개의 데이터를 출력해 보면 날짜 데이터로 변환된 것을 확인..
Kaggle
[샌프란시스코 범죄 분류] - 1
2021.10.05
이번 시간에는 캐글 대회 샌프란시스코 범죄 분류에 대해서 진행해 볼 것이다. 이 대회는 총 39개의 범죄 유형을 예측해야 한다. 즉 다중 분류(Multi-Class Classification) 문제이다. 데이터는 아래의 링크에 있다. https://www.kaggle.com/c/sf-crime San Francisco Crime Classification | Kaggle www.kaggle.com 데이터 불러오기 데이터를 불러오자. import pandas as pd train = pd.read_csv('train.csv') test = pd.read_csv('test.csv') train.shape, test.shape 데이터는 약 88만 개 정도이고 Test 데이터의 개수가 Train 데이터의 개수보..
Kaggle
[진짜 재난 뉴스 판별기] - 2
2021.10.04
지난 글에 진짜 재난 뉴스 판별기 시각화까지 진행했다. 이번 글에서는 본격적으로 판별하기 위한 피처 엔지니어링을 진행할 것이다. 피처 엔지니어링 데이터 전처리를 진행할 것이다. 먼저 결측치가 있는지 확인해보자. def check_na(data): isnull_na = (data.isnull().sum() / len(data)) * 100 data_na = isnull_na.drop(isnull_na[isnull_na == 0].index).sort_values(ascending = False) missing_data = pd.DataFrame({'Missing Ratio' : data_na, 'Data Type' : data.dtypes[data_na.index]}) print('결측치 데이터 칼럼과 건..