[혼공머신]3-3 -추가학습(L1 규제와 L2 규제)

[혼공머신]3-3 -추가학습(L1 규제와 L2 규제) L1 규제와 L2 규제는 머신러닝 모델, 특히 선형 회귀 모델에서 과대적합을 방지하고 모델의 일반화 성능을 향상시키기 위해 사용하는 두 가지 주요 규제 방법입니다. L1 규제 (L1 Regularization, Lasso Regression) 정의: L1 규제는 비용 함수에 계수의 절대값 합을 추가합니다. $$ \text{L1 규제 비용 함수} = \text{기본 비용 함수} + \lambda \sum_{i=1}^{n} |\beta_i| $$ 여기서 $ \lambda $는 규제 강도를 조절하는 하이퍼파라미터이고, $ \beta_i $는 모델의 계수입니다. ...

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

[혼공머신]3-3 다중회귀

[혼공머신]3-3 다중회귀 다중 회귀는 여러 개의 특성을 사용하는 회귀 모델입니다. 단순 회귀가 하나의 특성만을 사용하는 반면, 다중 회귀는 여러 개의 특성을 동시에 고려하여 종속 변수에 대한 예측을 수행합니다. 이는 예측의 정확도를 높일 수 있으며, 다양한 실제 문제에서 유용하게 사용됩니다. 데이터 준비 데이터를 준비하는 과정은 머신러닝 모델의 성능에 큰 영향을 미칩니다. 여기서는 pandas 라이브러리를 사용하여 CSV 파일을 로드하고, 필요한 전처리 과정을 수행합니다. import pandas as pd # CSV 파일 로드 data = pd.read_csv('data.csv', sep=',', header=0, skiprows=0, nrows=100) print(data.head()) 위 코드에서는 pandas의 read_csv 함수를 사용하여 데이터를 로드합니다. sep, header, skiprows, nrows 등의 매개변수를 통해 CSV 파일의 형식에 맞게 데이터를 읽을 수 있습니다. ...

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

[혼공머신]1-3

[혼공머신]1-3 머신러닝의 기본 개념 특성 특성은 데이터를 표현하는 하나의 성질입니다. 예를 들어, 생선 데이터를 길이와 무게 특성으로 나타낼 수 있습니다. 훈련 머신러닝 알고리즘이 데이터에서 규칙을 찾는 과정을 훈련이라고 합니다. 사이킷런에서는 fit() 메서드를 사용합니다. k-최근접 이웃 알고리즘 k-최근접 이웃 알고리즘은 가장 간단한 머신러닝 알고리즘 중 하나로, 특정 규칙을 찾기보다는 전체 데이터를 메모리에 저장해 둡니다. 모델 머신러닝 프로그램에서 알고리즘이 구현된 객체를 모델이라고 부릅니다. 종종 알고리즘 자체를 모델이라고 부르기도 합니다. 정확도 정확도는 정확한 답을 몇 개 맞혔는지를 백분율로 나타낸 값입니다. 사이킷런에서는 0~1 사이의 값으로 출력됩니다. ...

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

[혼공머신]2-1

[혼공머신]2-1 1. 지도 학습과 비지도 학습 지도 학습 (Supervised Learning) 정의: 입력 데이터와 해당 타깃(라벨) 데이터를 사용하여 모델을 훈련한 후, 새로운 입력 데이터에 대한 예측을 수행합니다. 예시: K-최근접 이웃 알고리즘 (K-Nearest Neighbors) 입력 데이터와 그에 따른 레이블(타깃)을 사용하여 새로운 데이터의 레이블을 예측합니다. from sklearn.neighbors import KNeighborsClassifier knn = KNeighborsClassifier(n_neighbors=3) knn.fit(train_input, train_target) prediction = knn.predict(test_input) score = knn.score(test_input, test_target) 비지도 학습 (Unsupervised Learning) 정의: 타깃 데이터가 없으며, 예측보다는 데이터의 구조나 패턴을 찾는 데 중점을 둡니다. 예시: 클러스터링 알고리즘 (K-Means Clustering) 데이터를 몇 개의 그룹으로 묶는 작업을 수행합니다. from sklearn.cluster import KMeans kmeans = KMeans(n_clusters=3) kmeans.fit(data) labels = kmeans.labels_ 2. 데이터 분할 훈련 세트 (Training Set) 정의: 모델을 훈련하는 데 사용하는 데이터입니다. 일반적으로 전체 데이터의 70-80%를 차지합니다. 중요성: 훈련 세트가 클수록 모델이 더 잘 학습할 수 있습니다. 코드 예시: 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) 테스트 세트 (Test Set) 정의: 모델을 평가하는 데 사용하는 데이터입니다. 전체 데이터의 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) 3. 핵심 패키지와 함수 NumPy seed() ...

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

[혼공머신]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

첫 포스팅 입니다. 설레네요

오늘 처음 블로그를 만들었어요 앞으로 열심히 해보겠습니다 프로필 이미지 이미지 세부 목차1 이미지 입니다.

2024-06-11 · 1 분 · ICE ICE BEAR