전체 글

공부하거나 삽질한 내용을 정리하는 블로그입니다.
[ 배운 내용 ] 1. Hidden Layer (은닉층) - Hidden Layer를 추가하여 모델링 : 선형회귀, 이진분류, 멀티클래스분류 - MNIST 분류 실습 딥러닝의 지도학습에서 "학습"이란? -> Error(오차)를 줄여나가는 방향으로 W(가중치)를 업데이트 해주는 것 (update : 기존의 것을 고쳐줌 = 개선) ===> 이 과정을 [ Gradient descent ] 라고 한다. Gradient descent 진행 시 기존의 가중치를 우리가 원하는 최적의 가중치로 점점 업데이트하게 된다. 이 때, 가중치 대비 에러값의 변화량에 learning rate를 곱한 값을 기존의 가중치에서 빼며 업데이트 하는데, 이 learning rate 값이 적절해야 우리가 원하는 가중치를 향해 점점 갱신될 ..
[ 배운 내용 ] 1. Tensorflow + Keras 2.x 버전 코드로 구현 (1) 선형회귀 - Sequential API 방식 모델링 - Functional API 방식 모델링 (2) 로지스틱회귀 (이진분류) - Sequential API 방식 모델링 - Functional API 방식 모델링 (3) 멀티클래스 분류 (iris 데이터) - Sequential API 방식 모델링 - Functional API 방식 모델링 Tensorflow & Keras 2.x Keras : Tensorflow(텐서플로우)에 내장되어 있는 유저친화적 API (수업에서는 2.x버전으로 사용). 딥러닝을 처음 공부할 때 Tensorflow + Keras 만한 프레임워크가 없다. 연구단 쪽에서는 Pytorch 현업에서는..
LightGBM XGBoost와 같이 GBM(Gradient Boosting Model) 기법을 기반으로 하는 방식이다. (GBM : 여러 트리 모델을 점점 결합해가면서 오차를 줄이는 모델을 구성하는 방식) LightGBM의 특징 빠른 학습속도, 높은 효율성 적은 메모리 사용량 향상된 accuracy 병렬, 분산 및 GPU 학습 지원 대규모 데이터를 처리할 수 있음 LightBGM은 이름 그대로 가벼운(Light) GBM 알고리즘이다. 속도가 빠르고, 사이즈가 큰 데이터를 다룰 때도 적은 양의 메모리를 사용한다. 대부분의 트리 기반 알고리즘에서는 트리가 아래 그림과 같은 Level-wise 방식으로 확장되기 때문에 트리가 최대한 균형있게 확장되고, depth를 최소화할 수 있었다. 반면에 LightGBM..
RobustScaler RobustScaler는 각 feature의 2사분위수(median: 중앙값)에 해당하는 데이터를 0으로 잡고, IQR 차이 만큼을 기준으로 정규화를 진행한다. (IQR = 3사분위수 - 1사분위수) 데이터의 분포를 4분위수에 맞춰주기 때문에 이상치가 많은 데이터를 다룰 때 유용한 스케일링 방법이다. 사용법 import sklearn.preprocessing import RobustScaler scaler = RobustScaler() x_train_s = scaler.fit_transform(x_train) x_val_s = scaler.transform(x_val) https://scikit-learn.org/stable/modules/generated/sklearn.prepr..
Class Imbalance (클래스 불균형) 대부분의 비즈니스 상황에서 타겟 클래스의 불균형은 매우 흔하다. 예를 들어 제조 공정간 불량 예측을 수행하는 모델을 학습시킬 때, 데이터 중에는 정상 데이터가 불량보다 훨씬 많을 것이다. 머신러닝 알고리즘들은 보통 데이터가 클래스 내에서 고르게 분포되어있다고 가정하기 때문에, 다수의 클래스를 더 많이 예측하는 쪽으로 모델이 편향되는 경향이 있다. 즉, 소수의 클래스에서 오분류 비율이 높아질 수 있다는 것이다. 이러한 부분 때문에 클래스 불균형은 모델링을 할때 매우 문제가 될 수 있다. 극단적인 예시를 한번 살펴보면 실제값 314개의 데이터 중 0은 283개, 1은 31개인 데이터에 대해서 모델이 314개를 모두 0이라고 예측했다고 해보자 이 분류모델이 예측을..
분류 모델 사용 시, 예측 결과를 보면 1, 0 Survived, Died, Leave, Stay 등과 같이 Class(클래스)로 나오는 것 처럼 보인다. 하지만 이 결과는 바로 저렇게 예측되는 것이 아니고, 예측된 값을 가지고 만들어 낸 값이다. 분류 모델에 의해 예측된 값들은 실제 값과 함께 confusion matrix(교차집계표)를 만들어서 평가한다. 이를 위해서는 예측 결과값이 0과 1로 나와야 한다. 하지만 분류 모델들의 실제 예측 결과는 사실 0,1의 값이 아니고, 확률 값이다. 예측된 확률 값들을 어떠한 기준으로 잘라서 0과 1로 나누는 것이다. 이 때 예측된 확률 값을 자르는 기준이 되는 값을 Cut-off value (=Threshold) 라고 부른다. (디폴트는 0.5) cut-off..
Stacking : 다른 여러 모델로 예측한 예측값들을 누적시켜 최종 모델의 인풋으로 사용해서 예측에 사용하는 방식 Stacking 모델 불러오기 from sklearn.ensemble import StackingClassifier 모델 선언 estimators : stacking에 사용될 베이스 모델들을 지정해준다. 각 모델 이름(문자열)과 모델 인스턴스로 구성된 튜플 형식의 리스트로 지정해준다. final_estimator : 최종적으로 예측에 사용할 모델을 지정해준다. (디폴트 : LogisticRegression) # 모델 선언 estimators = [('lr', LogisticRegression()), ('dt', DecisionTreeClassifier()), ('knn', make_pipe..
[ 배운 내용 ] 1. AI모델 해석 - 모델에 대한 설명 (1) Feature Importance (변수 중요도) - Tree 기반 모델의 변수 중요도 - Permutaion Feature Importance (2) Partial Dependence Plots (PDP) (3) SHAP 1. AI모델 해석 AI 모델의 해석 및 평가는 비즈니스 상황에서 고객과 소통을 하기 위해 반드시 필요하다. 고객은 AI 전문가에게 다음의 2가지 질문을 던질 수 있다. 모델이 왜 그렇게 예측했나요? 모델은 비즈니스 문제를 해결할 수 있을까요? 고객의 요청을 받고 우리가 만든 AI 모델의 성능을 고객이 믿으려면 모델의 성능을 고객이 이해할 수 있도록 설명이 가능해야 한다. 간단한 예시를 들어 보자 우리는 한 병원의 요청..
[ 오늘 배운 내용 ] 1. 시계열 분석 개요 - 시계열 분석과 시계열 데이터 - 시계열 모델링 종류 2. 시계열 전처리 3. 전통적 시계열 모델링 시계열 데이터란? 시계열 데이터 (Time Series data) : 일정한 시간간격(등간격)의 연속된 흐름(순서)이 있는 데이터 Sequential data와 같이 쓰이긴 하지만 엄밀하게 말하면 Sequential data의 카테고리 안에 시계열 데이터가 있다고 할 수 있다. Sequential data의 종류 음성 주가 데이터 (시계열) 문장 등 시계열 데이터 분석은 시간의 흐름에 따른 패턴을 분석하는 것이다. 시간의 흐름을(시계열 데이터를) 어떻게 정리하는지에 따라서 모델링 방식은 전통적 시계열 모델링 머신러닝 기반 시계열 모델링 딥러닝 기반 시계열 모..
[ 오늘 배운 내용 ] 1. 비지도학습 - K-means - DBSCAN 1. 비지도학습 비지도학습은 지도학습과 다르게 답이 주어지지 않은 문제를 학습하는 것이다. 비지도학습 알고리즘 K-maens DBSCAN [ K-means ] K개의 평균으로부터 거리를 계산하고, 가까운 평균으로 묶어서 클러스터(Cluster)를 나누는 방식 클러스터링의 기본이 되는 알고리즘이다. 거리기반 알고리즘이라 스케일링 필요 K-means 절차 클러스터의 개수를 지정한다. (구별되는 그룹의 수로 지정하는 것을 권장) 그룹의 중심점이 무작위로 선택된다. 임의로 선택된 중심점과 각 점 간의 거리를 계산해서 가장 가까운 중심점의 그룹으로 선택된다. 선택된 그룹의 점들을 기준으로 중심점을 계산해서 찾는다. 3~4를 반복하여 중심점의..
kybeen
기록하레이