Dropout
Dropout은 학습 중에 설정한 확률값에 따라서 일부 뉴런을 제거하여 과대적합을 방지하는 기법입니다.
특정 뉴런에만 집중해서 학습하지 않도록 과대적합을 방지하도록 사용합니다.
import torch
import torch.nn as nn
class Model(nn.Module):
def __init__(self):
super(Model, self).__init__()
self.fc1 = nn.Linear(10, 5)
self.dropout = nn.Dropout(0.5) # dropout 비율은 50%
self.fc2 = nn.Linear(5, 1)
def forward(self, x):
x = torch.relu(self.fc1(x))
x = self.dropout(x)
x = torch.sigmoid(self.fc2(x))
return x
Data-preprocessing
Garbage In Garbage Out, 분석 및 학습의 성능을 향상 시키기 위해 데이터 전처리가 중요합니다.
결측치 제거 및 채우기$($평균, 앞, 뒤 데이터, 예측 등$)$, 범위로 묶기/ 군집화, 정규화, 데이터 증폭 등이 있습니다.
import pandas as pd
from sklearn.preprocessing import StandardScaler, LabelEncoder
# 데이터 불러오기
data = pd.read_csv('data.csv')
# 결측치 처리
data.fillna(0, inplace=True)
# 범주형 데이터 인코딩
encoder = LabelEncoder()
data['category'] = encoder.fit_transform(data['category'])
# 숫자형 데이터 스케일링
scaler = StandardScaler()
data[['numeric1', 'numeric2']] = scaler.fit_transform(data[['numeric1', 'numeric2']])
Supervised / Unsupervised learning
지도 학습은 정답 레이블이 있고, 비지도 학습은 없습니다.
Regression / Classification
분류는 입력 데이터를 여러 클래스 중 하나로 분류하는 작업이고, 회귀는 연속된 값을 예측하는 작업입니다.
Hyperparameters
Hyperparameters는 learning rate, eopch, batch size, momemtum, loss function, optimizer 등 모델의 학습 과정을 조절하는 매개변수로, 사용자가 직접 세팅하는 값입니다.
Standardization, Normalization
Standardization은 정규분표를 표준정규분포로 변환하여 평균은 0, 분산은 1이 되도록 scale을 변환하는 것이고, Normalization은 scale이 0~1 사이의 값이 되도록 최댓값과 최솟값을 사용합니다.
Standardization은 feature가 정규분포일 때 유용하고, Normalization은 분포를 모를 때 유용합니다.
둘 다 scale이 큰 feature의 영향이 너무 커지지 않도록 방지하는데 쓰입니다.
아래 예시에서는 scikit-learn의 StandardScaler와 MinMaxScaler를 사용하여 Standardization과 Normalization을 적용한 예시를 보여줍니다. 입력 데이터는 2차원 배열로 구성되어 있으며, 각각의 스케일러를 사용하여 데이터를 변환한 결과를 출력합니다.
from sklearn.preprocessing import StandardScaler, MinMaxScaler
# 예제 데이터 생성
data = [[1, 2], [2, 3], [3, 4], [4, 5], [5, 6]]
# Standardization을 적용한 예시
scaler_standard = StandardScaler()
data_standardized = scaler_standard.fit_transform(data)
print("Standardization 결과:")
print(data_standardized)
# Normalization을 적용한 예시
scaler_minmax = MinMaxScaler()
data_normalized = scaler_minmax.fit_transform(data)
print("\nNormalization 결과:")
print(data_normalized)
>>>
Standardization 결과:
[[-1.41421356 -1.41421356]
[-0.70710678 -0.70710678]
[ 0. 0. ]
[ 0.70710678 0.70710678]
[ 1.41421356 1.41421356]]
Normalization 결과:
[[0. 0. ]
[0.25 0.25]
[0.5 0.5 ]
[0.75 0.75]
[1. 1. ]]
'IT > AI' 카테고리의 다른 글
딥러닝 기초 핵심 개념 1 (0) | 2024.03.08 |
---|---|
머신러닝 기초 (0) | 2024.03.07 |
인공 신경망 기초 (0) | 2024.03.06 |
[이미지] CustomDataset [Python] - cv2, PIL (0) | 2023.09.07 |