반응형

머신러닝 25

[Machine Learning][머신러닝] 로지스틱 회귀(Logistic Regression)

로지스틱 회귀 (LogisticRegression) 선형회귀 알고리즘을 이용한 이진 분류 모델 Sample이 특정 클래스에 속할 확률을 추정한다. 확률 추정 선형회귀 처럼 입력 특성(Feature)에 가중치 합을 계산한 값을 로지스틱 함수를 적용해 확률을 계산한다. import matplotlib.pyplot as plt xx = np.linspace(-10, 10, 100) sig = 1 / (1 + np.exp(-xx)) plt.figure(figsize=(15, 5)) plt.plot(xx,xx, color='g', label='linear') plt.plot(xx, sig, color='b', linewidth=2, label="logistic") plt.plot([-10, 10], [0, 0],..

[Machine Learning][머신러닝] 회귀모델개요와 평가지표

회귀(Regression) 지도 학습(Supervised Learning)으로 예측할 Target이 연속형(continuous) 데이터(float)인 경우 회귀의 주요 평가 지표 예측값과 실제 값간의 차이를 구한다 MSE (Mean Squared Error) 실제 값과 예측값의 차를 제곱해 평균 낸 것 mean_squared_error() 'neg_mean_squared_error' RMSE (Root Mean Squared Error) MSE는 오차의 제곱한 값이므로 실제 오차의 평균보다 큰 값이 나온다. MSE의 제곱근이 RMSE이다. scikit-learn은 함수를 지원하지 않는다. (MSE를 구한 뒤 np.sqrt()로 제곱근을 구한다.) R^2 (R square, 결정계수) 우리가 만든 모델이 ..

[Machine Learning][머신러닝] XGBoost의 개념과 예제 코드

XGBoost(Extra Gradient Boost)XGBoost란https://xgboost.readthedocs.io/Gradient Boost 알고리즘을 기반으로 개선해서 나온 모델.캐글 경진대회에서 상위에 입상한 데이터 과학자들이 사용한 것을 알려저 유명해짐.Gradient Boost의 단점인 느린수행시간을 해결하고 과적합을 제어할 수 있는 규제를 제공하여 성능을 높임.두가지 개발 방법Scikit-learn  XGBoost 모듈 사용파이썬 XGBoost 모듈 사용설치conda install -y -c anaconda py-xgboostXGBoost의 장점높은 성능 (실제로 Kaggle에서 XGboost가 상위권을 다수 차지)효율성, 유연성 ,휴대성이 뛰어남 여러 파라미터를 조절해 가며 최적의 Mo..

[Machine Learning][머신러닝][앙상블][부스팅] GradientBoosting

Boosting 부스팅(Boosting)이란 단순하고 약한 학습기(Weak Learner)들를 결합해서 보다 정확하고 강력한 학습기(Strong Learner)를 만드는 방식. 정확도가 낮은 하나의 모델을 만들어 학습 시킨뒤, 그 모델의 예측 오류는 두 번째 모델이 보완한다. 이 두 모델을 합치면 처음보다는 정확한 모델이 만들어 진다. 합쳐진 모델의 예측 오류는 다음 모델에서 보완하여 계속 더하는 과정을 반복한다. 약한 학습기들은 앞 학습기가 만든 오류를 줄이는 방향으로 학습한다. GradientBoosting 처음 모델은 y를 예측 두번째 부터는 앞 모델이 만든 오류를 예측하고 그것을 앞 모델에 업데이트하면 오류를 줄일 수 있다. 그 오류를 update할 때 뺄까 더할까를 gradient descent..

[Machine Learning][머신러닝] 최적화 / 경사하강법

최적화 (Optimize) 모델이 예측한 결과와 실제 값의 차이를 줄이기 위해서 모델을 수정해야 하는 작업을 최적화라고 한다. 모델의 예측값과 실제 값의 차이를 계산하는 함수를 만들고 그 값이 최소가 되는 지점을 찾는 작업을 한다. 최적화 문제 함수 f(x) 의 값을 최소화(또는 최대화) 하는 변수 x의 값을 찾는 것 import numpy as np import matplotlib.pyplot as plt def func(x): return (x-1)**2 + 2 plt.figure(figsize=(10,10)) xx = np.linspace(-3,4, 100) # xx.shape, f1(xx).shape plt.plot(xx, func(xx)) plt.plot(1,2, 'ro', markersize=..

[Machine Learning][머신러닝][앙상블] Voting

앙상블의 종류 1. 투표방식 여러개의 추정기(Estimator)가 낸 결과들을 투표를 통해 최종 결과를 내는 방식 종류 Bagging - 같은 유형의 알고리즘들을 조합하되 각각 학습하는 데이터를 다르게 한다. Voting - 서로 다른 종류의 알고리즘들을 결합한다. 2. 부스팅(Boosting) 약한 학습기(Weak Learner)들을 결합해서 보다 정확하고 강력한 학습기(Strong Learner)를 만든다. Voting Voting의 유형 hard voting 다수의 추정기가 결정한 예측값들 중 많은 것을 선택하는 방식 soft voting 다수의 추정기에서 각 레이블별 예측한 확률들의 평균을 내서 높은 레이블값을 결과값으로 선택하는 방식 일반적으로 soft voting이 성능이 더 좋다. Votin..

[Machine Learning][머신러닝][앙상블] 결정트리와 랜덤포레스트

의사결정나무(Decision Tree) 개요 데이터를 잘 분류할 수 있는 질문을 던져 가며 대상을 좁혀가는 '스무고개'와 비슷한 형식의 알고리즘. 분기해 나가는 구조가 Tree 구조와 같기 때문에 Decision Tree 라고 한다. 불순도 최대한 감소하는 방향으로 조건을 만들어 학습을 진행한다. 하위노드는 yes/no 두 개로 분기 된다. 머신러닝 모델들 중 몇안되는 White box 모델로 결과에 대한 해석이 가능하다. 과대적합(Overfitting)이 발생하기 쉽다. 앙상블기반 알고리즘인 랜덤 포레스트와 많은 부스팅(Boosting)기반 앙상블 모델들의 기반 알고리즘으로 사용된다. 순도(purity)/불순도(impurity) 서로 다른 종류의 값들이 섞여 있는 비율 한 종류(class)의 값이 많을..

[Machine Learning][머신러닝][지도학습] SVM(Support Vector Machine)

Support Vector Machine (SVM) 선형(Linear) SVM 딥러닝 이전에 분류에서 뛰어난 성능으로 가장 활용도가 높았던 분류모델 하나의 분류 그룹을 다른 그룹과 분리하는 최적의 경계를 찾아내는 알고리즘 중간크기의 데이터셋과 특성(Feature)이 많은 복잡한 데이터셋에서 성능이 좋은 것으로 알려져있다. 선 (1)과 (2)중 어떤 선이 최적의 분류 선일까? 목표: support vector간의 가장 넓은 margin을 가지는 초평면(결정경계)를 찾는다. 초평면 데이터가 존재하는 공간보다 1차원 낮은 부분공간 n차원의 초평면은 n-1차원 공간을 나누기 위해 초평면을 사용한다. 1차원-점, 2차원-선, 3차원-평면, 4차원이상 초평면 Support Vector: 경계를 찾아내는데 기준이 되..

[Machine Learning][머신러닝][지도학습] K-최근접 이웃(KNN)

K-최근접 이웃 (K-Nearest Neighbors, K-NN) 분류(Classification)와 회귀(Regression) 를 모두 지원한다. 예측하려는 데이터와 input 데이터들 간의 거리를 측정해 가장 가까운 K개의 데이터셋의 레이블을 참조해 분류/예측한다. 학습시 단순히 input 데이터들을 저장만 하며 예측 시점에 거리를 계산한다. 학습은 빠르지만 예측시 시간이 많이 걸린다. K-NN에서 K는 새로운 데이터포인트를 분류할때 확인할 데이터 포인트의 개수를 지정하는 하이퍼파라미터 K를 1로 하면 파란색, K를 3으로 하면 주황색 으로 분류한다. K가 너무 작으면 과적합(Overfitting)이 일어나고 K가 너무 크면 성능이 나빠진다. (Underfitting). 주요 하이퍼 파라미터 이웃 수..

[Machine Learning][머신러닝] 과적합/일반화/그리드서치/파이프라인

과대적합(Overfitting ) 일반화 (Generalization) 모델이 새로운 데이터셋(테스트 데이터)에 대하여 정확히 예측하면 이것을 (훈련데이터에서 테스트데이터로) 일반화 되었다고 말한다. 모델이 훈련 데이터로 평가한 결과와 테스트 데이터로 평가한 결과의 차이가 거의 없고 좋은 평가지표를 보여준다. 과대적합 (Overfitting) 모델이 훈련 데이터에 대한 예측성능은 너무 좋지만 일반성이 떨어져 새로운 데이터(테스트 데이터)에 대해선 성능이 좋지 않은 것을 Overfitting이라고 한다. 이는 모델이 훈련 데이터 세트의 특징을 너무 맞춰서 학습 되었기 때문에 일반화 되지 않아 새로운 데이터셋(테스트세트)에 대한 예측 성능이 떨져 발생한다. 과소적합 (Underfitting) 모델이 훈련 데..

반응형