[혼공머신]2-1 -추가학습(데이터분할 방법)

[혼공머신]2-1 -추가학습(데이터 분할 방법) 데이터 분할의 종류와 기준 데이터 분할은 모델의 성능을 평가하고, 과적합을 방지하기 위해 필수적인 단계입니다. 데이터 분할의 주요 종류와 각 방법의 기준은 다음과 같습니다. 1. 홀드아웃 방법 (Holdout Method) 정의: 데이터를 훈련 세트와 테스트 세트로 한 번만 나누는 방법입니다. 분할 기준: 훈련 세트: 전체 데이터의 70-80%를 차지합니다. 테스트 세트: 전체 데이터의 20-30%를 차지합니다. 장점: 간단하고 빠릅니다. 단점: 데이터의 특정 부분이 훈련 세트나 테스트 세트에 치우칠 수 있습니다. 코드 예시: from sklearn.model_selection import train_test_split train_input, test_input, train_target, test_target = train_test_split(data, target, test_size=0.2, random_state=42) 2. 교차 검증 (Cross-Validation) 정의: 데이터를 여러 번 분할하여 각각 다른 훈련 세트와 테스트 세트를 사용하는 방법입니다. 분할 기준: K-폴드 교차 검증: 데이터를 K개의 폴드로 나누고, 각 폴드를 한 번씩 테스트 세트로 사용합니다. 스트래티파이드 K-폴드 교차 검증: 분류 문제에서 각 클래스 비율이 동일하게 유지되도록 데이터를 나눕니다. 장점: 데이터의 모든 부분이 훈련 및 테스트에 사용되어 더 안정적인 평가를 제공합니다. 단점: 계산 비용이 많이 들 수 있습니다. 코드 예시: from sklearn.model_selection import cross_val_score, KFold, StratifiedKFold # K-폴드 교차 검증 kf = KFold(n_splits=5, shuffle=True, random_state=42) scores = cross_val_score(model, data, target, cv=kf) # 스트래티파이드 K-폴드 교차 검증 skf = StratifiedKFold(n_splits=5, shuffle=True, random_state=42) stratified_scores = cross_val_score(model, data, target, cv=skf) 3. 시간 기반 분할 (Time-Based Split) 정의: 시간 순서가 중요한 시계열 데이터에서 사용되는 방법입니다. 과거 데이터를 훈련 세트로, 미래 데이터를 테스트 세트로 사용합니다. 분할 기준: 훈련 세트: 과거 데이터 테스트 세트: 미래 데이터 장점: 시계열 데이터의 특성을 반영하여 적합한 모델 평가가 가능합니다. 단점: 데이터가 충분하지 않으면 어려울 수 있습니다. 코드 예시: # 예시로 시계열 데이터를 80:20으로 분할 train_size = int(len(data) * 0.8) train, test = data[:train_size], data[train_size:] 4. 부트스트래핑 (Bootstrapping) 정의: 데이터에서 중복을 허용하여 여러 번 샘플링을 수행하는 방법입니다. 훈련 세트와 테스트 세트를 여러 번 재샘플링하여 모델을 평가합니다. 분할 기준: 훈련 세트: 원본 데이터에서 샘플링된 데이터 테스트 세트: 샘플링에서 제외된 데이터 장점: 데이터의 여러 샘플에 대해 모델의 성능을 평가할 수 있습니다. 단점: 원본 데이터가 충분히 크지 않으면 샘플링 편향이 발생할 수 있습니다. 코드 예시: from sklearn.utils import resample # 부트스트래핑 예시 n_iterations = 1000 n_size = int(len(data) * 0.8) for i in range(n_iterations): train = resample(data, n_samples=n_size) test = [x for x in data if x not in train] model.fit(train) score = model.score(test) 데이터 분할 시 고려 사항 데이터 균형: 분류 문제에서 각 클래스의 비율이 훈련 세트와 테스트 세트에서 동일하게 유지되도록 합니다. 무작위성: 데이터 분할 시 랜덤성을 도입하여 특정 패턴이 훈련 세트나 테스트 세트에 치우치지 않도록 합니다. 데이터 크기: 데이터가 충분히 클수록 더 작은 테스트 세트로도 모델의 일반화 성능을 평가할 수 있습니다. 시간 순서: 시계열 데이터의 경우, 시간 순서를 고려하여 데이터를 분할해야 합니다. 이러한 다양한 분할 방법과 기준을 이해하고 상황에 맞게 적절히 사용하는 것이 중요합니다. 이를 통해 모델의 성능을 더 정확하게 평가하고, 과적합을 방지할 수 있습니다.

2024-07-07 · 3 분 · ICE ICE BEAR

[혼공머신]2-1 -추가학습(지도학습 및 비지도학습)

[혼공머신]2-1 -추가학습(지도학습 및 비지도학습) 지도 학습 (Supervised Learning) 알고리즘 1 선형 회귀 (Linear Regression) 특징: 입력 변수와 출력 변수 간의 선형 관계를 모델링 회귀 계수를 사용하여 예측 간단하고 빠르며 해석이 용이함 용도: 연속형 변수 예측 (예: 집값 예측, 매출 예측) 예시코드: import numpy as np from sklearnlinear_model import LinearRegression # 예제 데이터 X = nparray([[1], [2], [3], [4], [5]]) y = nparray([1, 4, 9, 16, 25]) # 모델 훈련 model = LinearRegression() modelfit(X, y) # 예측 predictions = modelpredict(nparray([[6], [7]])) print(predictions) 2 로지스틱 회귀 (Logistic Regression) 특징: 이진 분류 문제에 사용 시그모이드 함수로 출력값을 0과 1 사이로 변환 결과를 확률로 해석할 수 있음 용도: ...

2024-07-07 · 4 분 · ICE ICE BEAR

[혼공머신]2-2

[혼공머신]2-2 데이터 전처리 및 핵심 패키지와 함수 데이터 전처리 데이터 전처리는 머신러닝 모델에 훈련 데이터를 주입하기 전에 가공하는 단계를 말합니다. 데이터 전처리에는 결측값 처리, 데이터 정규화, 이상치 제거 등이 포함됩니다. 때로는 데이터 전처리에 많은 시간이 소모되기도 합니다. 표준점수: 표준점수는 훈련 세트의 스케일을 바꾸는 대표적인 방법 중 하나입니다. 표준점수를 얻으려면 특성의 평균을 빼고 표준편차로 나눕니다. 이 때 반드시 훈련 세트의 평균과 표준편차로 테스트 세트를 변환해야 합니다. 핵심 개념 브로드캐스팅: 크기가 다른 넘파이 배열에서 자동으로 사칙 연산을 모든 행이나 열로 확장하여 수행하는 기능입니다. 핵심 패키지와 함수 scikit-learn train_test_split( ) ...

2024-07-07 · 2 분 · ICE ICE BEAR

[혼공머신]2-2 -추가학습(데이터 전처리)

[혼공머신]2-2 -추가학습(데이터 전처리) 데이터 전처리 기술 표준점수 외에도 여러 가지 데이터 전처리 기술이 있습니다. 주요한 몇 가지를 소개하고 예시 코드를 함께 설명하겠습니다. 1. Min-Max 스케일링 Min-Max 스케일링은 데이터를 최소값과 최대값을 사용하여 0과 1 사이의 값으로 변환하는 방법입니다. from sklearn.preprocessing import MinMaxScaler # 데이터 생성 X, y = np.random.rand(100, 2), np.random.randint(0, 2, 100) # Min-Max 스케일링 scaler = MinMaxScaler() X_scaled = scaler.fit_transform(X) print("Original Data:", X[:5]) print("Scaled Data:", X_scaled[:5]) 2. 로버스트 스케일링 로버스트 스케일링은 중간값과 사분위수를 사용하여 스케일링합니다. 이는 이상치에 덜 민감하게 작용합니다. from sklearn.preprocessing import RobustScaler # 로버스트 스케일링 scaler = RobustScaler() X_robust_scaled = scaler.fit_transform(X) print("Original Data:", X[:5]) print("Robust Scaled Data:", X_robust_scaled[:5]) 3. 정규화 (Normalization) 정규화는 각 샘플의 길이를 1로 만들어줍니다. 이는 주로 텍스트 데이터나 유클리드 거리를 사용하는 알고리즘에서 사용됩니다. ...

2024-07-07 · 3 분 · ICE ICE BEAR