반응형 Artificial Intelligence/Machine Learning26 핸즈온 머신러닝(5) - 선형 회귀와 경사 하강법 2 이전 포스트에서 경사 하강법 알고리즘을 간단히 구현해 보았다. 코드를 다시 가져와보면 eta = 0.1 n_iterations = 1000 m = 100 theta = np.random.randn(2,1) for iteration in range(n_iterations): gradients = 2/m * X_b.T.dot(X_b.dot(theta) - y) theta = theta - eta * gradients 여기서 eta 변수, 즉 학습률 $\eta$ 을 나타내는 변수의 값이 0.1로 설정되어 있는데, 학습률 $\eta$ 를 바꿔보면 어떻게 될까? 임의로 다른 학습률을 사용하여 경사 하강법의 스텝 처음 10개를 그래프로 그려보면 다음과 같다. theta_path_bgd = [] def plot_gr.. 2020. 1. 23. 핸즈온 머신러닝(5) - 선형 회귀와 경사 하강법 1 이번 장에서는 신경망(neural network)을 이해하고 구축, 훈련시키는데 필수적인 기반 지식이 되는 알고리즘의 작동 원리에 대해서 다루기로 한다. 구현체가 어떻게 작동하는지 잘 이해하면 적절한 모델, 올바른 훈련 알고리즘, 작업에 맞는 좋은 하이퍼파라미터를 빠르게 찾을 수 있으며, 디버깅이나 에러를 효율적으로 분석하는 데 도움이 된다. # 선형 회귀 일반적으로 선형 모델은 입력 특성의 가중치 합과 편향(bias)라는 상수를 더해 예측을 만든다. (사진 참고) 사진에 나와있는 것 처럼 선형 모델의 방정식은 벡터 형태로 간단하게 쓸 수 있다. 모델을 훈련시킨다는 것은 모델이 훈련 세트에 가장 잘 맞도록 모델 파라미터를 설정하는 것이다. 이를 위해서는 먼저 모델의 훈련 데이터에 대한 성능을 측정해야 하.. 2020. 1. 23. 핸즈온 머신러닝(4) - 연습문제 1 # MNIST 데이터셋으로 분류기를 만들어 테스트 세트에서 97% 정확도를 달성하라 97%의 정확도를 달성하기 위해서는 먼저 적절한 분류기 모델을 설정해야 한다. MNIST 데이터셋은 숫자 손글씨를 분류하는 것이며, 각각의 데이터들은 유사성을 띈 군집 하에 동일한 레이블을 가지므로, 이번 연습문제 풀이에서는 K-최근접 이웃 알고리즘 (KNeighborsClassifier)을 사용하도록 한다. 프로젝트를 처음부터 다시 시작하므로 데이터셋을 내려받도록 한다. from sklearn.datasets import fetch_openml import numpy as np mnist = fetch_openml('mnist_784', version=1) X, y = mnist["data"], mnist["target.. 2020. 1. 22. 핸즈온 머신러닝(4) - 분류 2 # 다중 분류 다중 분류기를 구현하는 기법으로는 랜덤 포레스트 분류기나 나이브 베이즈(naive Bayes)분류기 같은 알고리즘으로 여러 개의 클래스를 직접 처리하거나, 이진 분류기를 여러 개 사용해 다중 클래스를 분류하는 방법이 있다. 이진 분류기를 여러 개 사용하여 다중 클래스를 분류할 때에는 각 분류기의 결정 점수 중에서 가장 높은 것을 클래스로 선택하게 되는데, 이를 일대다(one-versus-all, OvA)전략 이라고 한다. 혹은 숫자를 분류할 때 0과 1 구별, 0과 2 구별, 1과 2 구별 등과 같이 각 클래스의 조합마다 이진 분류기를 훈련시키는 방법이 있는데, 이를 일대일(one-versus-one, OvO)전략이라고 한다. 이때 클래스가 N 개라면 분류기는 N(N-1)/2 개가 필요하다.. 2020. 1. 21. 핸즈온 머신러닝(4) - 분류 1 # MNIST 이번 포스트에서는 너무나도 유명한 MNIST 손글씨 데이터셋을 사용하여 분류 시스템에 대해 다뤄보려고 한다. 사이킷런에서 제공하는 여러 헬퍼 함수를 사용해 잘 알려진 데이터셋을 내려받을 수 있다. 다음은 MNIST 데이터셋을 내려받는 코드이다. from sklearn.datasets import fetch_openml mnist = fetch_openml('mnist_784', version=1) 데이터셋에서 이미지 하나를 확인해보기 위해 샘플의 특성 벡터를 추출하여 28*28 배열로 크기를 바꾸고 matplotlib의 imshow() 함수를 사용해 그릴 수 있다. %matplotlib inline import matplotlib import matplotlib.pyplot as plt s.. 2020. 1. 21. 핸즈온 머신러닝(3) - 머신러닝 프로젝트 6[마무리] # 모델 선택과 훈련 지금까지 문제를 정의한 후 데이터를 읽어 들이고 탐색하였으며, 훈련 세트와 테스트 세트로 나누고 머신러닝 알고리즘에 주입할 데이터를 자동으로 정제하고 준비하기 위해 변환 파이프라인을 작성하였다. 이번 포스트에서는 머신러닝 모델을 선택하고 훈련시키는 과정에 대해 다룰 것이다. # 훈련 세트에서 훈련하고 평가하기 이전 포스트에서 했던 것처럼 선형 회귀 모델(Linear Regression)을 훈련시켜 본다. from sklearn.linear_model import LinearRegression lin_reg = LinearRegression() lin_reg.fit(housing_prepared, housing_labels) # LinearRegression(copy_X=True, f.. 2020. 1. 21. 이전 1 2 3 4 5 다음 반응형