목록분류 전체보기 (413)
오답노트
Random Forest Bagging 알고리즘에서 모델에 Dicision Tree를 사용한 것이 Random Forest다. 기존 Dicision Tree는 모든 Feature들 중에서 Information gain이 제일 높은 Feature를 선택했다. 하지만 Random Forest에서는 무작위로 선택된 n개의 Feature들 중에서 Information gain가 제일 높은 Feature를 선택한다. Information gain가 상대적으로 낮은 Feature도 모델링 된다는 것을 의미한다. 이 때 무작위로 선택하는 n의 개수가 작을 수록 더 랜덤한 모델이, 클 수록 대부분 비슷한 모델이 만들어진다. RandomForestClassifier(Regressor) from sklearn.ensemb..

앙상블 여러 개의 모델을 학습시켜 그 모델들의 예측 결과로 더 정확한 모델을 반드는 방법이다. Bagging (Bootstrap Sample Aggergating) Bagging 이라는 단어는 Bootstrap Sample Aggergating의 줄임말이다. Bootstrap Sample은 train 데이터에서 여러 개의 샘플 데이터로 나누는 것을 의미한다. 그리고 여러 개의 샘플 데이터를 각각의 모델을 사용해 학습한다. 여러 개의 모델에서 예측된 결과들을 평균(투표)을 구하는 것이 Aggergating이다. (출처 : https://www.geeksforgeeks.org/ml-bagging-classifier/)

복잡도 모델의 복잡도는 train 데이터의 패턴을 반영하는 정도이다. 알고리즘 마다 복잡도를 조절하는 방법은 다르다. 모델의 복잡도가 높다고 무조건 성능이 좋은 모델이라고 할 수 없다. 과적합 복잡도가 높아질 수록 과적합이 나타나기 쉽다. 그렇다고 복잡도가 너무 낮으면 접합도가 너무 낮아 예측을 제대로 못 할 가능성이 크다. 즉 적절한 적합도를 찾아야 성능이 좋은 모델을 만든다고 볼 수 있다. 그렇다면 어떻게 해야 적절한 적합도를 찾을 수 있을까? 위 그래프는 복잡도가 증가함에 따라 train과 validation 데이터에 대한 Accuracy 변화량을 표현한 그래프이다. 복잡도가 커짐에 따라 train 데이터의 Accuracy는 1에 가까워져 더 정확한 예측을 하지만, validation 데이터의 Ac..

Learning Curve Cross Valdation을 통해서 모델 성능 편차를 줄였다면, 모델 예측에 대한 오차를 줄여야한다. 이 때 데이터를 늘리는 것으로 오차(Bias)를 줄일 수 있다. (출처 : https://www.geeksforgeeks.org/using-learning-curves-ml/) 위 그래프는 KNN 알고리즘으로 범주형 데이터를 예측했을 때 데이터의 크기와 Accuracy에 대한 관계를 나타내는 그래프이다. 데이터의 크기가 어느정도 충족되면 Accuracy가 더 이상 증가하지 않는다는 것을 보여주고 있다. 즉, 데이터가 많다고 좋은 것이 아닌 적절한 데이터의 양으로도 충분히 신뢰성이 높은 Accuracy를 얻을 수 있다. 또, Accuracy가 낮다고 판단되면 데이터를 추가하여 ..

k-fold Cross Validation 모델링을 할 때, 데이터 셋을 train과 test로 나누고, train 데이터는 다시 train 과 validation 데이터로 나눠서 모델링한다. k-fold Cross Validation은 train을 k개로 나누고 차례대로 validation으로 선택하고 성능을 평가한다. 이렇게 k 개의 Accuracy 평균을 측정한다. Cross Validation은 Accuracy의 편차를 많이 줄여준다. Accuracy 편차가 줄어든다는 의미는 모델의 성능의 신뢰도가 올라간다는 의미다. k 값은 보통 5 ~ 10 사이에서 많이 사용된다. from sklearn.model_selection import cross_val_score from sklearn.tree im..
HyperParameter Tuning Hyper Parameter를 설정하여 모델을 최적화할 수 있는 알고리즘에서 모델을 최적하기 위한 Hyper Parameter 설정하는 것을 말한다. Random Search Random Search 는 값의 범위와 시도 횟수를 정해서, 값의 범위 내에서 시도 횟수만큼 무작위로 값을 선택해서 모델링을 하고, 그 중 가장 성능이 좋은 모델을 선정하는 방법이다. cv 는 교차검증할 때 데이터 셋을 나눌 개수다. n_iter는 임의로 시도할 횟수를 지정할 수 있다. from sklearn.tree import DecisionTreeClassifier, plot_tree # 값의 범위 설정 params2 = {'max_depth' : range(1,10), 'min_sam..
AIC (아카이케 통계량) AIC = - 모델적합도 + 변수의 개수 AIC는 위와 같은 식으로 표현할 수 있다. 모델 적합도가 높을 수록 아카이케 통계량이 낮아진다. 즉 아카이케 통계량이 낮을 수록 모델이 적합하다는 뜻이다. 또, 변수의 개수가 많을 수록 아카이케 통계량은 증가하는데 변수의 개수가 많다고 무조건 좋은 모델은 아니라는 뜻이다. 전진 선택법 (후진 소거법) feature 마다 모델을 생성하고, 각각 feature를 하나씩 늘려가며 AIC 통계량을 측정한다. 그중 AIC 통계량이 가장 낮은 모델을 선정하는 것이다. 후진 소거법은 반대로 feature를 모두 사용한 모델부터 feature를 하나씩 줄여가며 AIC 통계량을 측정하고 그 중 가장 AIC가 가장 낮은 모델을 선정한다. # 아래 함수는..
SVC, SVR sklearn 의 svm 의 객체들로 각각 Support Vector Machine Classfication (SVC), Support Vector Machine Regressor (SVR)로 정의되어 있다. 용도는 뜻 그대로 각각 범주형 데이터, 수치형 데이터 예측에 사용된다. from sklearn.svm import SVC from sklearn.metrics import * model = SVC() model.fit(x_train, y_train) pred = model.predict(x_val) confusion_matrix(y_val, pred) print(classification_report(y_val, pred)) Hyper Parameter C값과 gamma값을 조절하여..

SVM (출처 : https://towardsdatascience.com/breaking-down-the-support-vector-machine-svm-algorithm-d2c030d58d42) 데이터를 두 개로 분류하여 분류한 데이터 사이에 선을 긋고, 분류된 데이터와 선 사이에 여백을 만드는 것으로 설명할 수 있다. 데이터를 벡터(Vector), 분류된 벡터 사이에 선을 결정경계(Decision Boundary or Hyper plane)라고 하고, 분류된 벡터와 선 사이에 여백을 마진이라고 한다. 마진을 고려했을 때, 결정경계와 가장 가까운 벡터를 서포트 벡터(Support Vector)라고 한다. 마진을 넓게 해서 벡터가 조금 넘어가더라도 안정적으로 분류하는 것이 더 좋다고 할 수 있다. 하지만..

plot_tree Decision Tree를 직접 트리형태로 볼 수 있게 해주는 함수다. import matplotlib.pyplot as plt from sklearn.tree import DecisionTreeClassifier, plot_tree from sklearn.metrics import * m3 = DecisionTreeClassifier(max_depth=5,min_samples_leaf=150) m3.fit(x_train,y_train) pred3 = m3.predict(x_val) print(classification_report(y_val,pred3)) plt.figure(figsize = (30,15)) # 그림 사이즈 조절 plot_tree(m3, feature_names = l..