소개
이 실습에서는 대규모 및 희소 문제를 해결하기 위해 머신 러닝에서 일반적으로 사용되는 강력한 최적화 알고리즘인 확률적 경사 하강법 (Stochastic Gradient Descent, SGD) 을 탐색합니다. scikit-learn 라이브러리의 SGDClassifier 및 SGDRegressor 클래스를 사용하여 선형 분류기 및 회귀자를 학습하는 방법을 배웁니다.
VM 팁
VM 시작이 완료되면 왼쪽 상단 모서리를 클릭하여 Notebook 탭으로 전환하여 연습을 위한 Jupyter Notebook에 접근합니다.
때때로 Jupyter Notebook 이 완전히 로드되기까지 몇 초 정도 기다려야 할 수 있습니다. Jupyter Notebook 의 제한으로 인해 작업의 유효성 검사를 자동화할 수 없습니다.
학습 중 문제가 발생하면 Labby 에게 문의하십시오. 세션 후 피드백을 제공하면 문제를 신속하게 해결해 드리겠습니다.
필요한 라이브러리 가져오기
먼저, 필요한 라이브러리를 가져와야 합니다. 머신 러닝 및 데이터 전처리를 위해 scikit-learn 라이브러리를 사용할 것입니다.
import numpy as np
from sklearn.datasets import load_iris
from sklearn.linear_model import SGDClassifier, SGDRegressor
from sklearn.preprocessing import StandardScaler
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score, mean_squared_error
데이터 로드 및 전처리
다음으로, iris 데이터셋을 로드하고 StandardScaler 를 사용하여 특징을 스케일링하여 전처리합니다.
## iris 데이터셋 로드
iris = load_iris()
X, y = iris.data, iris.target
## 특징 스케일링
scaler = StandardScaler()
X_scaled = scaler.fit_transform(X)
## 데이터를 학습 및 테스트 세트로 분할
X_train, X_test, y_train, y_test = train_test_split(X_scaled, y, test_size=0.2, random_state=42)
SGD 를 사용한 분류기 학습
이제 SGDClassifier 클래스를 사용하여 분류기를 학습할 것입니다. log_loss 손실 함수와 l2 페널티를 사용할 것입니다.
## SGD 를 사용한 분류기 학습
clf = SGDClassifier(loss="log_loss", penalty="l2", max_iter=100, random_state=42)
clf.fit(X_train, y_train)
## 테스트 세트에서 예측 수행
y_pred = clf.predict(X_test)
## 분류기의 정확도 측정
accuracy = accuracy_score(y_test, y_pred)
## 정확도 출력
print("분류기 정확도:", accuracy)
SGD 를 사용한 회귀자 학습
다음으로, SGDRegressor 클래스를 사용하여 회귀자를 학습할 것입니다. squared_error 손실 함수와 l2 페널티를 사용할 것입니다.
## SGD 를 사용한 회귀자 학습
reg = SGDRegressor(loss="squared_error", penalty="l2", max_iter=100, random_state=42)
reg.fit(X_train, y_train)
## 테스트 세트에서 예측 수행
y_pred = reg.predict(X_test)
## 회귀자의 평균 제곱 오차 측정
mse = mean_squared_error(y_test, y_pred)
## 평균 제곱 오차 출력
print("회귀자 평균 제곱 오차:", mse)
요약
이 실습에서는 scikit-learn 라이브러리를 사용하여 확률적 경사 하강법 (SGD) 을 사용하여 선형 분류기와 회귀자를 학습하는 방법을 배웠습니다. 우리는 아이리스 데이터 세트에서 분류기를 학습하고 정확도를 측정했으며, 회귀자를 학습하고 평균 제곱 오차를 측정했습니다. SGD 는 대규모 및 희소 머신 러닝 문제를 효율적으로 처리할 수 있는 강력한 최적화 알고리즘입니다.