소개
확률적 경사 하강법 (SGD) 은 머신 러닝에서 널리 사용되는 최적화 알고리즘입니다. 경사 하강법의 변형으로, 각 반복에서 훈련 데이터의 임의로 선택된 부분 집합을 사용합니다. 이로 인해 계산 효율이 높아지고 대규모 데이터셋을 처리하기에 적합합니다. 이 실습에서는 scikit-learn 을 사용하여 파이썬에서 SGD 를 구현하는 단계를 살펴볼 것입니다.
VM 팁
VM 시작이 완료되면 왼쪽 상단 모서리를 클릭하여 Notebook 탭으로 전환하여 연습용 Jupyter Notebook에 접근할 수 있습니다.
때때로 Jupyter Notebook 이 완전히 로드되기까지 몇 초 정도 기다려야 할 수 있습니다. Jupyter Notebook 의 제한으로 인해 작업의 유효성 검사를 자동화할 수 없습니다.
학습 중 문제가 발생하면 Labby 에게 문의하십시오. 세션 후 피드백을 제공하면 문제를 신속하게 해결해 드리겠습니다.
라이브러리 가져오기
먼저, 이 실습에 필요한 라이브러리를 가져와야 합니다. scikit-learn 을 포함합니다.
import numpy as np
from sklearn.linear_model import SGDClassifier
from sklearn.datasets import load_iris
from sklearn.preprocessing import StandardScaler
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score
데이터 로드
다음으로, scikit-learn 에서 아이리스 (iris) 데이터셋을 로드합니다. 이 데이터셋은 붓꽃 (iris) 꽃의 측정값과 종 분류 레이블로 구성된, 머신 러닝 분야에서 전통적으로 사용되는 데이터셋입니다.
iris = load_iris()
X = iris.data
y = iris.target
데이터 전처리
SGD 를 적용하기 전에 데이터를 전처리하는 것이 종종 유용합니다. 이 경우 scikit-learn 의 StandardScaler 를 사용하여 특징을 표준화합니다.
scaler = StandardScaler()
X = scaler.fit_transform(X)
데이터 분할
데이터셋을 학습용 데이터셋과 테스트용 데이터셋으로 분할합니다. 학습용 데이터셋은 SGD 분류기를 학습하는 데 사용되고, 테스트용 데이터셋은 분류기의 성능을 평가하는 데 사용됩니다.
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
분류기 학습
이제 scikit-learn 의 SGDClassifier 클래스를 사용하여 SGD 분류기를 생성하고 학습할 수 있습니다. 선형 분류기에 일반적으로 사용되는 'hinge' 손실 함수를 사용합니다.
clf = SGDClassifier(loss='hinge', random_state=42)
clf.fit(X_train, y_train)
예측 수행
분류기가 학습되면 새로운 데이터에 대한 예측을 수행할 수 있습니다. 여기서는 테스트 데이터셋에 대한 타겟 클래스를 예측하는 데 사용합니다.
y_pred = clf.predict(X_test)
성능 평가
마지막으로, 테스트 데이터셋에 대한 예측 정확도를 계산하여 분류기의 성능을 평가합니다.
accuracy = accuracy_score(y_test, y_pred)
print("Accuracy:", accuracy)
요약
이 실습에서는 scikit-learn 을 사용하여 확률적 경사 하강법 (SGD) 을 구현하는 방법을 배웠습니다. 아이리스 데이터셋을 로드하고, 데이터를 전처리한 후 학습 및 테스트 데이터셋으로 분할하고, SGD 분류기를 학습시키고, 예측을 수행하며, 분류기의 성능을 평가했습니다. SGD 는 대규모 문제에 대한 머신러닝에서 널리 사용되는 강력한 최적화 알고리즘입니다.