본문 바로가기

머신러닝

[Machine Learning] Data Leakage (데이터누수), confusion matrix, classification report 데이터에 대해 완전히 이해하지 못할 때, 모델을 만들고 평가를 진행했는데 예측100% 가깝게 하는 경우->정보의 누수 의심. 여러 특성을 다루다 보면 데이터를 제대로 파악하지 못하고 아래와 같은 경우가 발생한다. 타겟변수 외에 예측 시점에 사용할 수 없는 데이터가 포함되어 학습이 이루어 질 경우 훈련데이터와 검증데이터를 완전히 분리하지 못했을 경우 Feature수가 너무 많은경우 Target과 동일한 Feature가 있을경우 정보의 누수가 일어나 과적합을 일으키고 실제 테스트 데이터에서 성능이 급격하게 떨어지는 결과를 확인할 수 있다. 문제에 적합한 평가지표를 선택해야 한다. 여러분이 만든 예측모델을 어떻게 평가해야 할까요? 그것은 문제의 상황에 따라 다를것 입니다. 특히 분류 & 회귀 모델의 평가지표는.. 더보기
[Machine Learning] Model Selection - Hyper-parameter 하이퍼파라미터 튜닝 (Randomized Search CV, GridSearchCV) 하이퍼파라미터튜닝 만드는 모델의 최고성능을 내기 위해서 하는것, 학습과정을 직접 컨트롤할 수 있는것. >> 랜덤서치는 더 쉽게 더 넓은 범위를 찾는다. 그러니 먼저 하는것이 좋음. GridSearchCV: 검증하고 싶은 하이퍼파라미터들의 수치를 정해주고 그 조합을 모두 검증. RandomizedSearchCV: 검증하려는 하이퍼파라미터들의 값 범위를 지정해주면 무작위로 값을 지정해 그 조합을 모두 검증. Randomized Search CV 1) 하이퍼파라미터를 직접 지정 1. 라이브러리 불러오기 from sklearn.model_selection import RandomizedSearchCV 2. pipe라인을 이용하여 모델 학습(예시는 릿지회귀) from sklearn.pipeline import m.. 더보기
[Machine Learning] 교차검증(Cross-validation) 모델선택(Model selection) 문제 우리 문제를 풀기위해 어떤 학습 모델을 사용해야 할 것인지? 어떤 하이퍼파라미터를 사용할 것인지? 데이터의 크기에 대한 문제, 모델선택에 대한 문제를 해결하기 위해 사용하는 방법 중 한 가지가 Cross-validation(교차검증). 참고: 교차검증은 시계열(time series) 데이터에는 적합하지 않음. 교차검증을 사용하는 이유는 train/test set로만 나누면 고정된 test set을 가지고 모델의 성능을 확인하고 파라미터를 수정하는 이 과정을 반복하면서 결국 내가 만든 모델은 test set에만 잘 동작하는 모델이되며 이는 Overfitting(과적합)문제를 일으킨다. 이를 해결하기 위해 cross-validationㅇㄹ 사용. Cross-val.. 더보기
[Machine Learning] 분류 모델의 성능 평가 지표- Confusion Matrix( 혼동행렬), 정확도, 정밀도, 재현율, F1, AUC, 임계값(thresholds) Confusion Matrix 구현 Python fig, ax = plt.subplots() pcm = plot_confusion_matrix(pipe, X_val, y_val, cmap=plt.cm.Blues, ax=ax); plt.title(f'Confusion matrix, n = {len(y_val)}', fontsize=15) plt.show() 정확도(Accuracy): (TP+TN) / Total 전체 범주를 모두 바르게 맞춘 경우(True값 전체)를 전체 수로 나눈 값 >>> 종속변수의 비율이 불균형할때 가치가 낮아진다. 정밀도(Precision): TP / (TP+FP) Positive로 예측한 경우 중 올바르게 Positive를 맞춘 비율 >>>정밀도가 중요한 경우는 실제 False를 .. 더보기
[Machine Learning] Tree-Based ML - 2. Ensemble Method (Random Forests) Ensemble Method 한종류의 데이터로, 다수결의 원칙으로 반복하여 여러개의 결정트리(머신러닝 학습모델(weak base learner, 기본모델))를 만들고. 각 결정 트리 하나마다 예측값을 확인하고 이들중 최빈값(분류)또는 평균값(회귀)을 최종 예측값으로 정한다. 이렇게 의견을 통합 하거나, 여러가지 결과를 합치는 방식. (a.k.a 집단지성) 부트스트랩(Bootstrap) 샘플링 앙상블에 사용하는 작은 모델들은 부트스트래핑(bootstraping)이라는 샘플링과정으로 얻은 부트스트랩세트를 사용해 학습을 합니다. 즉 원본 데이터에서 샘플링을 하는데 복원추출(중복추출가능)을 한다는 것인데 복원추출은 샘플을 뽑아 값을 기록하고 제자리에 돌려놓는 것을 말함. 이렇듯 샘플링을 특정한 수 만큼 반복하면.. 더보기
[Machine Learning] Tree Based ML - 1. Decision Tree Tree based Machine Learning의 기본 Decision tree. 데이터 분할하는 Algorithm으로 분류와 회귀문제 모두 적용 가능. 선형모델과 달리, Decision Tree 모델은 특성들을 기준으로 샘플을 분류해 나가는 형태. 각 특성들의 수치를 가지고 질문을 통해 정답 클래스를 찾아가는 과정, 여기서 질문이나 말단의 정답을 Node(노드)라고 하며 그 Node를 연결하는 선을 Edge(엣지)라고 한다. 결정트리는 분류(Classifier)와 회귀(Regressor)문제 모두 적용 가능합니다. 결정트리는 데이터를 분할해 가는 알고리즘입니다. 분류 과정은 새로운 데이터가 특정 말단 노드에 속한다는 정보를 확인한 뒤 말단노드의 빈도가 가장 높은 범주로 데이터를 분류한다. 결정트리의 .. 더보기
[Machine Learning] 특성 선택(Feature selection) - select K best 특성공학은 과제에 적합한 특성을 만들어 내는 과정입니다. 이 프로세스는 실무 현장에서 가장 많은 시간이 소요되는 작업 중 하나입니다. 이제 사이킷런의 SelectKBest를 사용해서 회귀모델에 중요한 특성을 선택해 보겠습니다. 1. Feature Engineering을 통해 1차적으로 데이터 정리 def engineer_features(X): # pandas.DataFrame.copy() X = X.copy() ## 욕실 갯수을 정수형으로 처리합니다. X['bathrooms'] = X['bathrooms'].round(0).astype(int) ## 총 방 수를 합하여 rooms로 합쳐 봅시다. X['rooms'] = X['bedrooms'] + X['bathrooms'] ## 사용하지 않을 특성을 삭제.. 더보기
[Machine Learning] 지도학습 -정규화 선형회귀[Ridge Regression (릿지 회귀, L2 Regression), Lasso Regression(라쏘 회귀; L1 regression)] 정규화 선형회귀(Regularized Method, Penalized Method, Contrained Least Squares) 정규화(Regularized) 선형회귀 방법은 선형회귀 계수(weight)에 대한 제약 조건을 추가함으로써 모형의 과적합을 막는 방법이다. 모형이 과도하게 최적화되면 모형 계수의 크기도 과도하게 증가하는 경향이 나타난다. 따라서 정규화 방법에서 추가하는 제약 조건은 일반적으로 계수의 크기를 제한하는 방법을 사용한다. Ridge 회귀모형 Lasso 회귀모형 Elastic Net 회귀모형 Ridge Regression (릿지 회귀, L2 Regression) Ridge 회귀는 과적합을 줄이기 위해서 사용하는 것, 정규화의 강도를 조절해주는 패널티값인 람다로 모델을 변형하여 과적합.. 더보기