인공지능(32)
-
9-1. 군집(Clustering) - K평균 클러스터링(1)
이전 장에서는 샘플마다 레이블링이 되어있는 데이터셋에 대해 살펴보았다. 비지도 학습은 레이블이 없는 데이터를 분류하는 알고리즘이다. 비지도 학습에는 크게 군집(Clustering), 이상치 탐지(Outlier Detection), 밀도 추정(Density estimation)이 있다. 군집(Clustering) 출처 : https://kevin-c-lee26.medium.com/machine-learning-101-classification-vs-clustering-e11b12c71243 군집(Clustering)이란 데이터셋에서 비슷한 샘플들을 하나의 클러스터 또는 비슷한 샘플의 그룹으로 할당하는 작업이다. 대표적인 군집 알고리즘으로 K-mean 클러스터링과 DBSCAN이 있다. K-mean 클러스터링..
2021.05.20 -
8-2. PCA(Principal Component Analysis)
주성분 분석(Principal Component Analysis, PCA)는 데이터에 가장 가까운 초평면을 정의하고, 이 초평면에 데이터를 투영시키는 기법이다. 출처 : laptrinhx.com/dimensionality-reduction-principal-component-analysis-359354885/ 위 그림은 투영시켰을 때 데이터셋과의 평균제곱거리가 가장 적은 초평면을 찾고 투영시키는 과정을 나타냈다. PCA의 과정은 다음과 같다. 출처 : medium.com/xebia-engineering/principal-component-analysis-autoencoder-257e90d08a4e 1. 데이터셋의 분산을 최대한 보존하는 축을 찾는다. (1번째 주성분) 2. 1번째 주성분에 직교하고, 남은..
2021.05.12 -
8-1. 차원 축소(Dimensionality Reduction)
예측 모델을 훈련시킬 때, 훈련시킬 데이터셋이 너무 고차원이라면(특성 수가 과도하게 많다면) 훈련 시간이 지나치게 길어지거나 과대적합의 위험이 존재한다. 이 훈련 세트의 특성 수를 줄임에도 해당 데이터셋의 특질을 잘 파악할 수 있다면 특성의 수를 줄이는 것이 좋은 방법일 것이다. 이를 차원 축소(Dimensionality Reduction)라고 한다. 투영(Projection) 투영(Projection)은 차원 축소의 한가지 방법이다. 대부분의 실전 문제에서는 훈련 샘플은 모든 차원에 균일하게 퍼져있지 않고 고차원 공간 안의 저차원 부분공간(subspace)에 놓여있다. 투영은 이러한 고차원 공간 안에서 데이터의 양상을 최대한 보존하면서 차원을 축소시키는 방법이다. 매니폴드 학습(Manifold Lear..
2021.05.12 -
7-5. 부스팅(Boosting) - 그레이디언트 부스팅(Gradient Boosting)
출처 : docs.paperspace.com/machine-learning/wiki/gradient-boosting 그레이디언트 부스팅(Gradient Boosting)이란 이전 예측기가 만든 잔여 오차(Residual Error)에 새로운 예측기를 학습시키는 기법이다. X = 2*np.random.randn(100,1) y = 2 * X ** 2 + X * 4 + 10 + np.random.randn(100, 1) 노이즈가 섞인 2차 다항식을 결정 트리로 추정하는 모델에 그레이디언트 부스팅을 적용해보겠다. tree_reg1 = DecisionTreeRegressor(max_depth=2) tree_reg1.fit(X,y) 가장 먼저 기초적인 결정 트리를 훈련시켰다. y2 = y - tree_reg1.p..
2021.05.12 -
7-4. 부스팅(Boosting) - 에이다부스트(Adaboost)
부스팅(Boosting)이란 약한 학습기 여러 개를 연결하여 강한 학습기로 만드는 기법을 말한다. 대표적으로 에이다부스트, 그레이디언트 부스트가 있다. 에이다부스트(Adaboost) 출처 : vitalflux.com/adaboost-algorithm-explained-with-python-example/ 에이다부스트(Adaboost)의 예측 기법은 다음과 같다. 1. 첫 번째 분류기를 훈련 세트에서 훈련시키고 예측을 만든다. 2. 잘못 분류된 샘플의 가중치를 상대적으로 높인다. 3. 그 다음 예측기에서 업데이트된 가중치를 통해 훈련하고, 예측을 만든다. 4. 반복한다. 상세한 가중치 업데이트의 과정은 아래와 같다. 출처 : stackoverflow.com/questions/55318330/why-is-t..
2021.05.12 -
7-3. 랜덤 포레스트(Random Forest)
랜덤 포레스트는 기존 결정 트리에서 배깅이나 페이스팅을 적용한 앙상블 학습 방법이다. 출처 : www.kaggle.com/getting-started/176257 랜덤 포레스트는 먼저 특성의 서브셋을 무작위로 구성한 뒤에 노드 분할 시 최선의 특성을 찾음으로써 무작위성을 더한다. from sklearn.ensemble import RandomForestClassifier rnd_clf = RandomForestClassifier(n_estimators=500, max_leaf_nodes=16, n_jobs=-1) rnd_clf.fit(X_train, y_train) y_pred = rnd_clf.predict(X_valid) BaggingClassifier를 사용할 수도 있지만, 사이킷런에서는 Rando..
2021.05.12