Python-이론(118)
-
[핸즈온 머신러닝 ch9]9강텐서플로우 사용해보기 2편
9.6 경사 하강법 구현 이번에는 정규방정식이 아닌 경사하강법을 사용하여 회귀 문제를 해결해보겠습니다. 9.6.1 직접 그레디언트 계산 import numpy as np import tensorflow as tf from sklearn.datasets import fetch_california_housing from sklearn.preprocessing import StandardScaler n_epochs = 1000 learning_rate = 0.01 scaler = StandardScaler() housing = fetch_california_housing() m, n = housing.data.shape # 데이터 개수, 특성 수 scaled_housing_data = scaler.fit_tr..
2018.09.03 -
[핸즈온 머신러닝 ch9]9강텐서플로우 사용해보기 1편
ch9 텐서플로우 사용해보기 1편 텐서플로우란? 구글에서 인공지능을 더 편하게 사용하기위해서 강력한 오픈소스 소프트웨어 라이브러리로 특히 머신러닝에 맞춰 세밀하게 튜닝되어 있습니다. 텐서플로우에 기본원리 먼저 파이썬으로 수행할 계산 그래프를 정의한 다음 텐서플로가 최적화된 C++ 코드를 사용해 이 그래프를 효율적으로 실행시킵니다. 간단한 계산 그래프의 예시 그리고 좋은 점이 계산 그래프를 여러 부분으로 나누어 여러 CPU나 GPU에서 병렬로 실행할 수 있습니다. 또한 분산 컴퓨팅도 지원하므로 수백 대의 서버에 계산을 나누어 납득할만한 시간 안에 대규모 데이터셋으로 거대한 신경망을 훈련시킬 수 있습니다. 그리고 수백만 개의 특성들을 가진 수십억 개의 샘플로 구성된 데이터셋에서 수백만 개의 파라미터를 가진 ..
2018.09.02 -
[핸즈온 머신러닝]8강 차원축소 2편
차원축소8.3.7 압축을 위한 PCA 차원을 축소하고 난 후에는 훈련 세트의 크기가 줄어듭니다. 예를 들어 MNIST 데이터셋에 분산의 95%를 유지하도록 PCA를 유지하도록 PCA를 적용해보겠습니다. 각샘플은 원래 784개 특성이 아니라 150개 정도만 가지고 있을 것입니다. 대부분의 분산은 유지되었지만 데이터셋은 원본크기의 20% 미만이 되었습니다. 이는 상당한 압축률이고 svm등에 훈련 속도를 높일 수 있습니다. 또한 압축된 데이터에 PCA투영의 변환을 반대로 적용하여 784개의 차원으로 되돌릴 수 있습니다. 물론 PCA압축을 하면서 분산 5%정도의 손실이 일어날 수 있습니다. 그러므로 원래 데이터와 완전히 같진 않겠지만 원본데이터와 매우 비슷할 것 입니다. 원본데이터와 복원된 데이터 사이의 평균 ..
2018.08.04 -
[핸즈온 머신러닝]8강 차원축소 1편
차원 축소 머신러닝을 사용할 때 훈련데이터는 수천개에서 ~ 수백만개의 특성을 갖고 있습니다. 이 부분은 훈련의 속도를 늦추거나 더 나은 솔루션을 찾기 힘들게 합니다. 이런 문제를 차원의 저주라고 합니다. 예를 들어 Mnist를 사용할 때 흰바탕의 특성을 줄인다고 해도 검사를 하는데 많은 문제가 되지 않을 것입니다. 하지만 머신러닝을 공부하면서 느끼지만 항상 양날의 검이 있는 것 같습니다. 차원 축소에서도 분명히 차원을 줄여주면 시간 단축이 될 수 있겠지만 시스템의 성능이 나빠질 수 있습니다. 차원을 축소하다 중요한 특성을 지워버릴 수 도 있으니깐요. 그래서 항상 자신의 상황과 데이터를 잘고려해서 차원 축소를 잘진행해주어야 하는 것 같습니다. 그리고 훈련 속도를 높이는 것 이외에도 데이터를 고차원으로 보여..
2018.08.04 -
[핸즈온 머신러닝] 7강 앙상블 학습과 랜덤 포레스트(ensemble, RandomForest)
앙상블 학습과 랜덤 포레스트 앙상블 학습이란 하나로 이어진 여러개의 (SVM, 결정트리, 로지스틱 회귀, 경사하강법)예측기를 사용하여 분류, 회귀등을 하는 것을 앙상블학습이라고 부릅니다. 예를 들어 각기 다른 데이터 셋으로 여러개의 결정트리를 개별적으로 훈련시키고 예측을 구하면 됩니다. 이를 랜덤 포레스트라고 합니다. 7.1 투표 기반 분류기 만약에 80%의 분류기 여러 개를 훈련시켰다고하면 예측기들은 로지스틱회귀, SVM분류기, 경사하강법 등등으로 훈련시킬 수 있습니다. 투표 기반이라는 이름 그대로 각 분류기의 예측을 모아서 가장많이 예측된 클래스를 반환해주면 됩니다. 이렇게 다수결 투표로 이루어지는 것을 직접투표라고 합니다. 위의 사진과 같이 4개의 분류기중 3개가 1번 클래스를 예측하고 있습니다. ..
2018.07.27 -
[핸즈온 머신러닝] 6강 결정트리 ( Decision tree)
결정 트리 결정트리는 분류, 회귀, 다중 출력도 할 수 있는 만능 머신러닝 알고리즘이다. 그리고 결정트리는 자주 이용하는 RandomForest의 기본 구성요소 중 하나이다. 6.1 결정 트리 학습과 시각화 붓꽃 데이터 훈련하기 from sklearn.datasets import load_iris from sklearn.tree import DecisionTreeClassifier iris = load_iris() X = iris.data[:, 2:] #꽃의 길이와 넓이 Y = iris.target # 종류를 라벨로 tree_clf = DecisionTreeClassifier(max_depth=2) #트리의 깊이를 tree_clf.fit(X, Y) 처음으로 판단 해주는 것은 꽃잎 길이 두번째로 판단하는 ..
2018.07.25