AI Study/Machine Learning 썸네일형 리스트형 분류 (4) - LightGBM LightGBM XGBoost와 함께 Boosting 계열 알고리즘에서 가장 각광받고 있음. XGBoost는 학습 시간이 오래 걸리는 것이 단점 LightGBM의 가장 큰 장점: XGBoost보다 학습에 걸리는 시간이 훨씬 적다 + 메모리 사용량이 상대적으로 적다 예측 성능은 비슷하면서 기능은 LightGBM이 더 많음. LightGBM은 일반 GBM 계열의 트리 분할 방법(보통 Level Wise)과 다르게 리프 중심 트리 분할(Leaf Wise) 방식을 사용함 Level Wise : 최대한 균형 잡힌 트리를 유지하면서 분할하기 때문에 트리의 깊이가 최소화 될 수 있음. 균형잡힌 트리는 오버피팅에 보다 더 강함 균형을 맞추는 시간이 오래 걸림 Leaf Wise : 트리의 균형을 맞추지 않고, 최대 손실.. 더보기 분류 (3) - Xgboost XGBoost(eXtra Gradient Boost) tree 기반 앙상블 학습에서 가장 각광받고 있음. Kaggle Contest에서 다수 사용됨 GBM에 기반하고 있지만, GBM의 단점인 느린 수행시간, 과적합 규제(Regularization) 부재 를 해결한 모델 In [1]: # XGBoost 버전 확인 import xgboost print(xgboost.__version__) 1.1.1 파이썬 Native XGBoost 적용 – 위스콘신 Breast Cancer 데이터 셋 In [1]: import xgboost as xgb from xgboost import plot_importance import pandas as pd import numpy as np from sklearn.datasets.. 더보기 분류 (2) - 앙상블 학습 1. 앙상블 학습 개요 앙상블 학습을 통한 분류 : 여러개의 분류기를 생성하고 그 예측을 결합함으로써 보다 정확한 최종 예측을 도출함. 앙상블 학습의 목표 : 다양한 분류 기의 예측 결과를 결합함으로써 단일 분류기보다 신뢰성이 높은 예측값을 얻는 것. Voting 유형 : Hard Voting / Soft Voting 하드보팅 다수결의 원칙과 비슷함. 예측 결괏값들 중 다수의 분류기가 결정한 예측값을 최종 보팅 결괏값으로 선정함 소프트 보팅 (선호됨) 평균 분류기들의 레이블 값 결정 확률을 모두 더하고 이를 평균해서 이들 중 가장 확률이 높은 레이블 값을 최종 보팅 결괏값으로 선정함 In [1]: import pandas as pd from sklearn.ensemble import VotingClass.. 더보기 분류 (1) - Decision Tree 1. 분류의 개요 지도학습 : label(명시적인 정답)이 있는 데이터가 주어진 상태에서 학습하는 머신러닝 방식 분류 : 학습데이터로 주어진 데이터의 feature와 label값을 머신러닝 알고리즘으로 학습해 모델을 생성하고, 생성된 모델에 새로운 데이터가 주어질 때 미지의 레이블값을 예측함 즉, 기존 데이터가 어떤 label에 속하는지 패턴을 알고리즘으로 인지 -> 새롭게 관측된 데이터에 대한 label을 판별 분류의 다양한 알고리즘 베이즈(Bayes)통계와 생성모델에 기반한 나이브 베이즈(Naive Bayes) 독립변수와 종속변수의 선형관계성에 기반한 로지스틱 회귀(Logistic Regression) 데이터 균일도에 따른 규칙 기반의 결정 트리(Decision Tree) 개별 클래스 간의 최대 분류.. 더보기 머신러닝 성능 평가 지표 (2) - 정밀도,재현율,F1 score, ROC curve 오차행렬, Confusion Matrix 이진분류에서 활용, 혼동행렬이라고도 해석되며 학습된 분류 모델이 예측을 수행하면서 얼마나 헷갈리고 있는지를 함께 보여주는 지표임. 이진 분류의 예측 오류가 얼마인지 + 어떤 유형의 오류가 발생하는지 함께 확인 가능 TN, TP, FP, FN은 예측 클래스와 실제 클래스의 Positive 결정 값(값1)과 Negative 결정값 (값 0)의 결합에 따라 결정됨 앞의 값 : 예측 클래스와 실제 클래스가 같은 가 뒤의 값 : 예측값이 무엇인가 뒤에서 부터 읽으면 쉬움 TN : 예측값을 Negative 값 0으로 예측했고 실제 값 역시 Negative 값 0 TP : 예측값을 Positive 값 1으로 예측했고 실제 값은 Negative 값 0 FN : 예측값을 Nega.. 더보기 머신러닝 성능 평가 지표 (1) - 정확도(accuracy_score) Machine Learning Evaluation Evaluation Metric (성능 평가 지표) : 모델의 타입(분류 / 회귀)에 따라 나뉨 회귀 : 대부분 실제값과 예측값의 오차 평균값에 기반함 분류 : 실제 결과 데이터와 예측 결과 데이터의 차이만으로 판단하지는 않음. 특히, 이진 분류(0 or 1로 판단)에서는 accuracy score보다는 다른 성능 평가 지표를 함께 사용하는 것이 선호됨. 분류의 성능 평가 지표 정확도(Accuracy) : 불균형한 label data set에서 사용 X 오차행렬(confusion Matrix) : 오차의 정도, 종류를 알 수 있음 정밀도(Precision) : (선호됨) 재현율(Recall) : (선호됨) F1 스코어 ROC AUC 분류는 label cl.. 더보기 데이터 전처리 기본 (2) - feature scailing 피처 스케일링과 정규화 feature scaling : 서로 다른 변수의 값 범위를 일정한 수준으로 맞추는 작업 대표적인 방법 : 표준화(Standardization) / 정규화(Normalization) 표준화(Standardization) : data의 feature 각각을 평균 = 0, 분산 = 1인 가우시간 정규 분포를 가진 값으로 변환하는 것 $$ Xi(new) = \frac {Xi-mean(X)} {stdev(x)} $$ X : 표준화를 통해 변환될 feature Xi : feature X의 i번째 데이터 Xi(new) : feature X의 i번째 데이터를 표준화한 것 mean(X) : feature X의 평균 stdev(X) : feature X의 표준편차 정규화(Normalization).. 더보기 데이터 전처리 기본 (1) - data encoding 데이터 전처리(Data Preprocessing) ML AL이 data에 기반하므로, 데이터를 어떻게 처리하느냐에 따라 결과가 달라질 수 있음. sklearn의 ML AL을 적용하기 전 반드시 해야할 전처리 결손값 처리. NaN, Null값은 허용되지 않는다. feature값 중 Null 값이 얼마 되지 않음 -> 평균값 등으로 대체 feature값 중 Null 값이 대부분 -> 해당 feature를 drop하는 것이 좋음 문자열 sklearn의 ML AL은 문자열값을 입력값으로 허용하지 않음 모든 문자열 값은 인코딩하여 숫자형으로 변환해야 함 문자열 피처 : 카테고리형 피처 / 텍스트형 피처(피처 벡터화로 벡터화 수행하거나 불필요한 경우 삭제) ex) 주민번호, 단순 문자열 : 인코딩 하지 않고 삭제하.. 더보기 sklearn의 model selction module (데이터셋 분리 및 교차검증) sklearn의 Model selection module 살펴보기 이번 시간에는 데이터를 학습 / 검증 / 테스트 용으로 분리하기 위한 메소드를 살펴본다. 그런 다음 교차 검증에 관한 4가지 방법을 순차적으로 학습한다. sklearn의 model_selection module에서 제공하는 함수/클래스 train data/test data의 분리 (train_test_split()) 교차 검증 분할 및 평가(KFold, Stratified_KFold) Estimator의 하이퍼 파라미터를 튜닝 In [10]: # train/test를 분할하지 않았을 때의 문제 : 모의고사만 똑같은 거 2번 보는 셈 from sklearn.datasets import load_iris from sklearn.tree imp.. 더보기 sklearn 기반 프레임워크 살펴보기 Iris dataset을 통해 알아보는 Scikit-Learn 기반 프레임워크 iris 품종 예측이란? iris data set로 붓꽃의 품종을 분류하는 것 꽃잎의 길이, 너비 / 꽃받침의 길이, 너비 총 4개의 feature Classification : 대표적인 지도학습(Supervised Learning) 지도학습 학습을 위한 feature + 분류결정값인 Lable = 학습 -> 별도의 테스트 데이터세트에서 미지의 레이블 예측 정확한 정답이 주어진 데이터를 먼저 학습한 후, 미지의 정답을 예측하는 방식 training data set(학습을 위한 데이터 세트) test data set(머신러닝 모델의 예측 성능을 평가하기 위한 별도의 데이터 세트) scikit-learn package내의 modu.. 더보기 머신러닝을 위한 Pandas 기초 Pandas 기본 개념 데이터 : 일반적으로 2차원 (row * column) numpy보다 유연하고 편리한 데이터 핸들링 numpy의 ndaaray 내의 데이터 타입은 그 연산의 특성상 같은 데이터 타입만 가능함(한 개의 ndarray 객체에 int, float 함께 존재 X) pandas의 DataFrame내에는 column마다 다른 data type이 가능 핵심 객체 : DataFrame(행,열로 구성된 2차원 데이터를 담은 데이터 구조체) Series : 칼럼이 1개뿐인 데이터 구조체 DataFrame : 칼럼이 여러 개인 데이터 구조체 index : 개별 데이터를 고유하게 식별하는 Key값, Series와 Dataframe 모두 index를 가짐 주로 read_csv(filepath_or buf.. 더보기 머신러닝을 위한 Numpy 기초 1. 넘파이 기본 개념 >> 수치해석용 Python 라이브러리 Numerical Python의 약자 C로 구현 (파이썬용 C라이브러리) loop 사용하지 않는 대량 데이터 배열 연산 가능(Vectorization) 빠른 수치 계산을 위한 Structured Array 제공 >> 학습을 위해 참고할 링크 Home : http://www.numpy.org/ Documentation : http://docs.scipy.org/doc/ Tutorial http://www.scipy-lectures.org/intro/numpy/index.html https://docs.scipy.org/doc/numpy-dev/user/quickstart.html >> Numpy의 필요성 C/C++과 같은 저수준 언어 기반의 호.. 더보기 Python 기반의 머신러닝 생태계 이해하기 01. 머신러닝 개념 >> 머신러닝이란? 머신 러닝은 사람이 경험을 통해 학습하는 것과 같은 활동을 컴퓨터가 수행할 수 있도록 가르치는 데이터 분석 기법입니다. 머신 러닝 알고리즘은 미리 결정된 방정식을 모델로 의존하지 않고, 계산 방법을 사용하여 데이터에서 직접 정보를 “학습”합니다. 학습할 수 있는 샘플 수가 증가함에 따라 알고리즘 성능이 향상됩니다. 또한, 달리 표현하면 애플리케이션의 수정 없이 데이터를 기반으로 패턴을 학습하여 결과를 예측하는 알고리즘 기법을 통칭한다고 말할 수 있습니다. >> 머신러닝의 특징 데이터 내의 패턴을 스스로 인지하고 신뢰도 있는 예측 결과를 도출해 냄 예측 오류를 최소화하기 위해 다양한 수학적 기법을 적용함 단점 : 데이터 의존적. 일명 Garbage in, Garba.. 더보기 이전 1 다음