ADP로ML정리12 6. 앙상블 모델 앙상블은 단일 결정 트리의 단점을 극복하기 위해 여러 모델을 연결해 더 강력한 모델을 만드는 방법이다. 즉 주어진 자료로부터 여러 개의 예측 모형을 만든 후 예측모형들을 조합하여 하나의 최종 예측 모형을 만드는 것이다. 편향, 잡음 및 분산으로 인한 오류를 막고 과적합을 방지하기 위해 사용된다. 1. Bagging Bootstrap 붓스트랩은 랜덤 샘플링의 일종으로 단순임의복원추출법을 적용해 여러 개의 동일한 크기의 표본 자료를 획득하는 방법이다. 주어진 데이터를 모집단을 대표하는 독립 표본으로 가정하고, 그 자료로부터 중복을 허용한 무작위 재추출을 하여 복수의 자료를 획득해 각 집단에서 통계량을 계산한다. 배깅은 이러한 붓스트랩 기법을 활용해 여러 개의 붓스트랩 자료(데이터셋)을 생성해 각각의 붓스트랩.. 2024. 2. 22. 5. 의사결정나무 Decision Tree 의사결정나무란 결정 트리란 데이터에 있는 규칙을 학습을 통해 자동으로 찾아내 Tree기반의 "분류 규칙"을 만들고, 이 규칙을 통해 최대한 균일도가 높은(과적합 고려) 결정 클래스를 만드는 분류기법이다. 하나의 규칙을 만들 때마다 특정 기준에 따라 "예/아니오"로 답할 수 있는 질문을 이어나가면서 학습한다. 이 때 규칙을 만들 떄마다 노드를 만들고, 가지를 치면서 내려간다. 이 결과는 규칙이 명확해 해석을 쉽게 할 수 있다. 또한 선형성과 정규성 등의 가정이 필요하지 않아 전처리 과정에 모델의 성능이 큰 영향을 받지 않는다. 하지만 과적합의 가능성이 있어 일반화 성능이 우수하지 않다. 구조 규칙 노드 (Decision Node) : 규칙 조건을 표시한 노드 리프 노드 (Leaf Node) : 결정된 클래.. 2024. 2. 20. 4-2. 회귀 모델 - 분류를 위한 회귀 모델 1. 로지스틱 회귀 Logistic Regression 선형 모델을 분류에 사용해 데이터가 특정 클래스에 속할 확률을 추정하는데 사용할 수 있다. 로지스틱 회귀는 선형 회귀 모델처럼 독립변수의 가중치 합으로 계산하지만 특정 범주에 속하는 확률을 나타내기 위해 새로운 접근이 필요하다. 회귀 분석의 결과값이 0과 1사이의 값이 되도록 하는 시그모이드 함수를 사용한다. 두 클래스에 대해 승산비(odds)에 로그를 취하고, 이를 확률변수로 정리하면 시그모이드 함수를 도출할 수 있다. https://ukb1og.tistory.com/21 from sklearn.datasets import load_breast_cancer from sklearn.model_selection import train_test_spli.. 2024. 2. 19. 4-1. 회귀 모델 - 규제가 있는 선형 회귀 1. 다중 회귀(Multiple Regression) 종속변수에 영향을 미치는 다중의 독립변수가 있는 경우의 회귀분석을 말한다. 다중 회귀에서는 최적모델 결정을 위해 다양한 방법으로 변수를 선정하고, 모델이 복잡해지면 과적합의 가능성이 있어 이를 방지하고자 다양한 규제를 적용해 모델의 가중치를 제한한다. 1.1.릿지 Ridge 최소 제곱 적합식에 L2 페널티를 추가한 것이다. L2인 두 번째 항은 θ의 추정치를 0으로 수축하는 효과를 준다. 이 규제는 학습에만 사용되며 모델의 성능은 페널티가 없는 지표로 평가한다. α=0일 때 페널티항이 없어져 선형 회귀와 같아진다. α가 커질수록 규제항의 영향이 커져 릿지 회귀계수 추정치는 0에 가까워지므로 데이터의 평균을 지나는 선을 만든다. α가 증가하면 편향은 증.. 2024. 2. 19. 3. 머신러닝 평가지표 회귀분석 1. MAE(Mean Absolute Error) 실제값과 예측값의 차이의 절대값의 평균 에러의 크기가 그대로 반영됨 이상치에 영향을 받음 2. MSE(Mean Squared Error) 실제값과 예측값의 차이를 제곱한 평균 실제값과 예측값 차이의 면적 합을 의미 특이값이 존재하면 수치가 증가 3.RMSE(Root Mean Squared Error) 실제값과 예측값의 차이를 제곱해 평균한 것의 제곱근 에러에 제곱을 하면 에러가 클수록 그에 따른 가중치가 높이 반영 이때 손실이 기하급수적으로 증가하는 사오항에서 실제 오류평균보다 값이 더 커지지 않도록 상쇄하기 위해 사용 4. MSLE(Mean Squared Log Error) 실제값과 예측값의 차이를 제곱해 평균한 것에 로그 적용 RMSE와 같이.. 2024. 2. 15. 2-6. 데이터 전처리 - 데이터 불균형 문제 해결 분류 문제에 있어서 데이터에 불균형이 있다면 소수의 이상 데이터를 분류해내는 문제에서 정확도를 높이기 쉽지 않다. 이 때 소수의 범주 데이터의 수를 늘리는 오버샘플링과 상대적으로 많은 데이터의 일부만 사용하는 언더 샘플링을 사용해 보완할 수 있다. 1. 언더 샘플링 언더 샘플링을 사용하면 데이터 불균형으로 인한 문제는 피할 수 있지만 전체 데이터의 수가 줄어들어 학습 성능을 떨어뜨릴 수 있다. ## RandomUnderSampling import numpy as np import pandas as pd from sklearn.datasets import make_classification from collections import Counter from imblearn.under_sampling impo.. 2024. 2. 15. 2-5. 데이터 전처리 - 차원축소 보통 데이터셋은 여러 개의 설명변수를 가지고 있다. 데이터셋의 크기가 충분히 클 때 변수의 증가는 새로운 패턴을 발견하며 데이터셋을 더 정밀하게 설명할 수 있는 수단이 된다. 하지만 설명변수가 많아질 수록 좋은 것은 아니다. 오히려 알고리즘의 성능이 저하되는 현상이 생길 수 있다. 이러한 현상을 차원의 저주라고 한다. 차원의 저주 각 데이터(행)을 설명하는 변수가 늘어날 수록, 데이터 간의 거리가 멀어져 각 차원 별로 같은 영역의 자료를 갖고 있지만 전체 영역에서 설명할 수 있는 데이터의 비율은 즐어드는 'Sparsity'현상이 발생한다. 위 그림에서 오른쪽으로 갈 수록 차원이 하나씩 더 늘어난다. 각 차원축이 설명변수이므로, 차원이 늘어날 수록 데이터 간의 거리가 벌어지고 빈 공간이 증가한다. 이렇게 .. 2024. 2. 14. 2-4. 데이터 전처리 - 데이터 분할 및 스케일링 1. 데이터 분할 데이터는 보통 train : val : test = 6 : 2 : 2 로 분할해 사용하는데, 데이터의 양을 고려해 조정하기도 한다. train : 학습을 위한 데이터셋 val : 학습한 모델의 검증하는 셋으로, val 데이터셋으로 평가한 결과를 통해 모델링의 하이퍼파라미터를 조정한다.(학습에 포함된다고 생각) test : test from sklearn.datasets import load_iris iris_load = load_iris() iris = pd.DataFrame(iris_load.data, columns = iris_load.feature_names) iris['Class'] = load_iris().target iris['Class'] = iris['Class'].map.. 2024. 2. 14. 2-3. 데이터 전처리 - 범주형 변수 처리 범주형 변수는 질적 변수라고도 하며 그 자체로 수학적 의미를 가지지 않기 때문에 처리가 필요하다. 더미변수(One-Hot-Encoding) 더미변수는 범주형 변수의 범주 각각을 열로 변경하고, 원본 컬럼의 값이 해당 범주에 속하는지 여부에 따라 1 혹은 0으로 채운 변수이다. from sklearn.datasets import load_iris iris_load = load_iris() iris = pd.DataFrame(iris_load.data, columns = iris_load.feature_names) iris['Class'] = load_iris().target iris['Class'] = iris['Class'].map({0:'Setosa', 1:'Versicolour', 2:'Virgini.. 2024. 2. 14. 이전 1 2 다음