(카테고리는 Kaggle이지만, 데이터를 분석하는 과정을 실습하는 과정이므로, 해당 카테고리에 포스팅하게 되었다.) 데이터 다운로드 주소는 https://archive.ics.uci.edu/ml/datasets/Human+Activity+Recognition+Using+Smartphones UCI Machine Learning Repository: Human Activity Recognition Using Smartphones Data Set Human Activity Recognition Using Smartphones Data Set Download: Data Folder, Data Set Description Abstract: Human Activity Recognition database buil..
기계학습 검색 결과
회귀 이전 포스팅에서 설명한 회귀의 형태는 y = w_0 * x_0 + .... + w_n * x_n 이었다. 이것은 점들의 관계를 직선으로 표현하는 식이다. 하지만, 모든 현상을 직선으로 표현하는 것이 최선은 아니다. 어느 경우에는 조금 더 복잡하게 하는 경우에 최적의 회귀선을 나타내는 것일수도 있다. 이런 것을 표현하기 위해 다항회귀를 사용한다. 여기에서 "독립변수"가 단항식(x_0 ... x_n)이 아닌 2차, 3차로 표현되는 것을 다항(Polynomial) 회귀라고 한다. 다항이라는 것은 x_0, x_1, x_0 * x_1, (x_0)^2, (x_1)^2 .... 이라고 생각하면 된다. "독립변수"라는 것을 강조한 이유는 다항회귀면 비선형회귀여야 하는 것이라는 것에 대한 오해를 풀기 위해서이다. ..
캐글에 있는 데이터로 피마 인디언 당뇨병 데이터 세트를 이용해 당뇨병 여부를 판단하는 머신러닝 예측 모델을 수립하고, 평가 지표를 이용해서 성능을 측정하며 튜닝할 것이다. 데이터는 https://www.kaggle.com/uciml/pima-indians-diabetes-database에 들어가서 다운받을 수 있다. 데이터를 다운받은 다음 성능 지표들을 임포트하고, 정규화(StandardScaler) , 로지스틱 회귀 모델을 사용할 수 있는 LogisticRegression 클래스를 임포트한다. (Numpy, Pandas, Matplotlib.pyplot은 지난 포스팅과 동일하므로 생략) import numpy as np import pandas as pd import matplotlib.pyplot a..
회귀 지도학습은 2가지 유형, 분류와 회귀로 나뉜다. 분류 - 예측값이 카테고리와 같은 이산형 값 회귀 - 예측값이 연속형 숫자 회귀는 그 중에서도 선형회귀가 가장 많이 사용된다. 선형 회귀는 직선형 회귀선을 예측값과 실제값의 차이가 가장 작게 산출되도록 가중치들을 최적화하여 찾아내는 방식을 의미한다. 단순 선형 회귀 단순 선형 회귀는 독립변수(X) 하나, 종속변수(Y)도 하나인 선형 회귀를 의미한다. 독립변수와 종속변수가 갑자기 나와서 헷갈릴 수도 있지만, 쉽게 말해 독립변수는 피처를, 종속변수는 레이블 값을 의미한다. 따라서 단순 선형 회귀는 피처가 하나인 데이터를 가장 잘 나타내는 회귀선을 찾는 기법이라고 생각하면 된다. X, Y를 좌표평면에 찍고, 그 점들을 가장 잘 표현할 수 있는 직선을 찾아내..
지난 포스팅에서는 주요 칼럼이라고 생각되는 것들과 레이블 데이터인 생존(Survived)의 관계를 시각화하는 과정까지 했다. 레이블 인코딩 이번에는 문자열로 되어있는 데이터, 즉, DataFrame에서는 object 형이라고 표현되어있는 데이터를 숫자형으로 바꿔주는 작업을 할 것이다. 이런 과정을 LabelEncoding이라고 하고, Scikit learn에서는 LabelEncoder 클래스를 통해서 구현할 수 있다. LabelEncoder 객체를 통해서 fit / transform 과정을 거치면 0 ~ (카테고리 유형 수 -1) 까지의 숫자 값으로 변환된다. from sklearn import preprocessing def encode_features(dataDF): features = ['Cabin..
캐글은 세계적인 ML 기반 분석 대회이다. 그 중에서도 타이타닉 생존자 예측은 처음 입문하는 사람들이 하는 튜토리얼이다. 캐글 사이트에서 Titanic을 검색하거나, https://www.kaggle.com/c/titanic에 들어가면 Data 카테고리에서 학습 데이터(train.csv)와 테스트 데이터(test.csv)를 다운 받을 수 있다. 다운받기 전에 로그인을 해야하니 회원가입을 먼저하고 데이터를 다운받으면 된다. 오른쪽에는 해당 데이터에 관한 간략한 정보들이 나와있는 것을 확인할 수 있다. 다운받은 파일은 파이썬 코드 파일( 주피터 노트북일 경우, 해당 .ipynb파일)이 있는 디렉토리에 csv 파일을 저장한다. 이후에 다른 파일들도 train.csv 파일들이 많이 존재하기 때문에, 구별할 수 ..
스태킹 스태킹(Stacking)이라는 기법은 전체적인 면에서는 앙상블 러닝과 같은 원리이지만, 기존의 앙상블 러닝과 조금 다른 면을 가지고 있다. 스태킹은 복수 개의 기반 학습기들이 학습 - 예측을 진행하고, 예측 데이터들을 학습 데이터로 입력 받는 메타 모델(최종 학습기라고 생각하면 이해하기 쉽다.)이 한번 더 학습 - 예측하는 방식이다. 아주 많이 사용되는 기법은 아니지만, 성능을 최대한으로 향상시키기 위해서 쓰이는 기법이다. 교차 검증 기반의 스태킹 일반 스태킹의 경우, 최종 메타 모델이 학습하는 데이터가 학습 데이터가 아닌, 테스트 데이터를 예측한 값들을 학습하기 때문에, 과적합의 문제가 발생한다. 과적합을 완화시키기 위해서 스태킹 기법과 교차검증 기법을 동시에 적용한다. CV 교차 검증에서는 여..
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 기존에 알아보았던 앙상블 러닝(보팅과 배깅)에서는 여러개의 약한 학습기를 학습시키는 순서가 큰 상관이 없었다. 하지만, 부스팅이라는 기법은 학습기를 '순차적'으로 학습 - 예측해야 한다. 부스팅의 원리는 이전에 잘못 예측한 데..
앙상블 러닝 앙상블 러닝이란 무엇인가? 간단하게 얘기해서, 여러 약한 학습기들을 모아 학습 / 예측을 실시하고, 그 예측을 결합하여 더욱 정확한 최종 예측을 산출하는 기법을 의미한다. 굳이 왜 이렇게 하는 것일까? 이전에도 얘기했듯이, 모든 머신러닝 알고리즘의 가장 큰 고민 중 하나는 과적합(Overfitting)이다. 이 문제는 ML 알고리즘이 세부적으로 학습을 진행할수록 과적합이 심각해진다. 하지만, 이렇게 하지 않으면 알고리즘의 예측 성능이 떨어지는 과소적합 현상이 발생한다. 그러므로, 과적합이 일어나지 않게 하기 위해 약한 학습기로 학습을 진행하고, 하나가 아닌 여러개의 학습기들의 예측을 결합함으로써 집단 지성처럼 예측 성능이 향상되는 모습을 보인다. 이렇게 과소적합 문제까지 해결한다. 또한, 여..
최근댓글