Scikit-Learn 의 선형 모델

Intermediate

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

소개

이 실습에서는 scikit-learn 의 선형 모델을 탐색합니다. 선형 모델은 회귀 및 분류 작업에 사용되는 방법 집합입니다. 이 모델들은 목표 변수가 특징의 선형 결합이라고 가정합니다. 이러한 모델은 단순성과 해석 가능성으로 인해 머신 러닝에서 널리 사용됩니다.

다음 주제를 다룰 것입니다:

  • 최소 제곱법
  • 릿지 회귀
  • 라쏘
  • 로지스틱 회귀
  • 확률적 경사 하강법
  • 퍼셉트론

머신 러닝에 대한 사전 경험이 없으시면 지도 학습: 회귀를 참고하세요.

VM 팁

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

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

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

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

최소 제곱법

머신 러닝에 대한 사전 경험이 없으시면 지도 학습: 회귀를 참고하세요.

최소 제곱법 (OLS) 은 관측된 목표값과 예측된 목표값 간의 제곱 차이 합을 최소화하는 선형 회귀 방법입니다. 수학적으로 다음과 같은 형태의 문제를 해결합니다: $$\min_{w} || X w - y||_2^2$$

선형 회귀 모델을 OLS 를 사용하여 적합해 보겠습니다.

from sklearn import linear_model

reg = linear_model.LinearRegression()
X = [[0, 0], [1, 1], [2, 2]]
y = [0, 1, 2]
reg.fit(X, y)

print(reg.coef_)
  • scikit-learn 에서 linear_model 모듈을 가져옵니다.
  • LinearRegression의 인스턴스를 생성합니다.
  • fit 메서드를 사용하여 모델을 학습 데이터에 적합시킵니다.
  • 선형 모델의 계수를 출력합니다.

릿지 회귀

릿지 회귀는 일반 최소 제곱법 목적 함수에 페널티 항을 추가하는 선형 회귀 방법입니다. 이 페널티 항은 계수를 0 으로 수축하여 과적합을 줄이는 데 도움이 됩니다. 모델의 복잡도는 정규화 매개변수로 제어할 수 있습니다.

릿지 회귀 모델을 적합해 보겠습니다.

reg = linear_model.Ridge(alpha=0.5)
reg.fit([[0, 0], [0, 0], [1, 1]], [0, 0.1, 1])

print(reg.coef_)
  • 정규화 매개변수 alpha를 0.5 로 설정한 Ridge의 인스턴스를 생성합니다.
  • fit 메서드를 사용하여 모델을 학습 데이터에 적합시킵니다.
  • 릿지 회귀 모델의 계수를 출력합니다.

Lasso

Lasso 는 일반 최소 제곱법 목적 함수에 페널티 항을 추가하는 선형 회귀 방법입니다. 페널티 항은 일부 계수를 정확히 0 으로 설정하는 효과가 있어 특징 선택을 수행합니다. Lasso 는 희소 모델 추정에 사용될 수 있습니다.

Lasso 모델을 적합해 보겠습니다.

reg = linear_model.Lasso(alpha=0.1)
reg.fit([[0, 0], [1, 1]], [0, 1])

print(reg.coef_)
  • 정규화 매개변수 alpha를 0.1 로 설정한 Lasso의 인스턴스를 생성합니다.
  • fit 메서드를 사용하여 모델을 학습 데이터에 적합시킵니다.
  • Lasso 모델의 계수를 출력합니다.

로지스틱 회귀

로지스틱 회귀는 로지스틱 함수를 사용하여 가능한 결과의 확률을 추정하는 분류 방법입니다. 이는 일반적으로 이진 분류 작업에 사용됩니다. 로지스틱 회귀는 다중 클래스 분류 문제를 처리하도록 확장될 수도 있습니다.

로지스틱 회귀 모델을 적합해 보겠습니다.

clf = linear_model.LogisticRegression(random_state=0).fit(X, y)
print(clf.coef_)
  • random_state 매개변수를 0 으로 설정한 LogisticRegression의 인스턴스를 생성합니다.
  • fit 메서드를 사용하여 모델을 학습 데이터에 적합시킵니다.
  • 로지스틱 회귀 모델의 계수를 출력합니다.

확률적 경사 하강법 (SGD)

확률적 경사 하강법 (SGD) 은 선형 모델을 학습시키는 간단하지만 효율적인 방법입니다. 특히 샘플과 특징의 수가 매우 많을 때 유용합니다. SGD 는 각 반복에서 학습 데이터의 작은 부분집합을 사용하여 모델 매개변수를 업데이트합니다. 이는 온라인 학습 및 외부 메모리 학습에 적합합니다.

SGD 를 사용하여 로지스틱 회귀 모델을 적합해 보겠습니다.

clf = linear_model.SGDClassifier(loss="log_loss", max_iter=1000)
clf.fit(X, y)

print(clf.coef_)
  • 로지스틱 회귀를 수행하기 위해 loss 매개변수를 "log_loss"로 설정한 SGDClassifier의 인스턴스를 생성합니다.
  • fit 메서드를 사용하여 모델을 학습 데이터에 적합시킵니다.
  • SGD 를 사용하여 얻은 로지스틱 회귀 모델의 계수를 출력합니다.

퍼셉트론

퍼셉트론은 대규모 학습에 적합한 단순한 선형 분류 알고리즘입니다. 오류에 대해서만 모델을 업데이트하므로, 허용 손실 (hinge loss) 을 사용한 확률적 경사 하강법 (SGD) 보다 학습 속도가 더 빠릅니다. 결과 모델 또한 더 희소합니다.

퍼셉트론 모델을 적합해 보겠습니다.

clf = linear_model.Perceptron(alpha=0.1)
clf.fit(X, y)

print(clf.coef_)
  • 정규화 매개변수 alpha를 0.1 로 설정한 Perceptron의 인스턴스를 생성합니다.
  • fit 메서드를 사용하여 모델을 학습 데이터에 적합시킵니다.
  • 퍼셉트론 모델의 계수를 출력합니다.

요약

이 실험에서 scikit-learn 의 선형 모델을 탐색했습니다. 일반 최소 제곱, 릿지 회귀, 라쏘, 로지스틱 회귀, 확률적 경사 하강법, 퍼셉트론에 대해 배웠습니다. 이러한 모델은 회귀 및 분류 작업 모두에 사용될 수 있습니다. 또한 온라인 학습 및 특징 선택과 같은 다양한 알고리즘과 기법을 사용하여 이러한 모델을 어떻게 적합시키는지 살펴보았습니다.