확률적 경사 하강법 구현

Beginner

This tutorial is from open-source community. Access the source code

소개

확률적 경사 하강법 (SGD) 은 머신 러닝에서 널리 사용되는 최적화 알고리즘입니다. 경사 하강법의 변형으로, 각 반복에서 훈련 데이터의 임의로 선택된 부분 집합을 사용합니다. 이로 인해 계산 효율이 높아지고 대규모 데이터셋을 처리하기에 적합합니다. 이 실습에서는 scikit-learn 을 사용하여 파이썬에서 SGD 를 구현하는 단계를 살펴볼 것입니다.

VM 팁

VM 시작이 완료되면 왼쪽 상단 모서리를 클릭하여 Notebook 탭으로 전환하여 연습용 Jupyter Notebook에 접근할 수 있습니다.

때때로 Jupyter Notebook 이 완전히 로드되기까지 몇 초 정도 기다려야 할 수 있습니다. Jupyter Notebook 의 제한으로 인해 작업의 유효성 검사를 자동화할 수 없습니다.

학습 중 문제가 발생하면 Labby 에게 문의하십시오. 세션 후 피드백을 제공하면 문제를 신속하게 해결해 드리겠습니다.

이것은 가이드 실험입니다. 학습과 실습을 돕기 위한 단계별 지침을 제공합니다.각 단계를 완료하고 실무 경험을 쌓기 위해 지침을 주의 깊게 따르세요. 과거 데이터에 따르면, 이것은 초급 레벨의 실험이며 완료율은 82%입니다.학습자들로부터 100%의 긍정적인 리뷰율을 받았습니다.

라이브러리 가져오기

먼저, 이 실습에 필요한 라이브러리를 가져와야 합니다. 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 는 대규모 문제에 대한 머신러닝에서 널리 사용되는 강력한 최적화 알고리즘입니다.