앙상블 학습(Ensemble Learning)을 통한 분류는 여러개의 분류기를 생성해 그 예측을 결합하여 더 정확한 예측을 도출하기 위한 방법이다. 보팅(Voting) 보팅의 경우 일반적으로는 서로 다른 알고리즘을 가진 분류기를 결합한다. 배깅(Bagging) 방식 단일 알고리즘으로 여러 분류기가 개별학습을 진행한다. 학습하는 데이터셋도 voting과 방식이 다른데 학습 데이터는 원복 데이터를 샘플링해 추출한다. 이런식의 개별 분류기에게 데이터를 샘플링해서 추출하는 방식을 부트스트래핑(Bootstrapping) 분할 방식이라고 한다. 각각 예측후 결과를 Voting하는 것이 결국 배깅 앙상블 방식이다. 부스팅(Boosting) 방식 여러 분류기가 순차적으로 학습을 수행하되, 앞에서 학습한 분류기가 예칙이..
다양한 알고리즘 중에서 우리는 앙상블 방법(Ensemble Method)을 다루겠다. 앙상블 방법의 기본 알고리즘이며 일반적으로 많이 사용하는것이 바로 결정 트리(Decision Tree) 이다. 결정 트리 ML 알고리즘 중 직관적으로 이해하기 쉽다. 위 사진은 결정 트리 구조를 간략하게 나타낸 것이다. 리프 노드(Leaf Node)는 결정된 클래스 값이다. 그리고 새로운 규칙마다 사진에보이는 Internal Node로 나눠진다. 많은 규칙은 과적합으로 이어질 수 있으니 Depth가 높으면 예측 성능이 저하될 수 있다. 간단한 동작 방식 1. 데이터 집합의 모든 아이템이 같은 분류에 속하는지 확인 2-1. if True : 리프 노드로 만들어서 분류를 결정 2-2. Else : 데이터를 분할하는 데 가장..
정밀도와 재현율은 이전의 Negative의 정확도가 높게 나오는 수치적 판단 오류를 해결하기 위해 Positive 데이터 세트의 예측 성능에 좀 더 초점을 맞춘 평가 지표이다. 정밀도와 재현율 정밀도 = TP / (FP + TP) 재현율 = TP / (FN + TP) 글로 조금 더 쉽게 풀어말하면 정밀도 = (예측값 1, 실제값 1) / (1로 예측한 모든 데이터) 정밀도는 Positive 예측 성능을 더욱 정밀하게 측정하기 위한 평가 지표로 사용된다. 정밀도가 높다는 건 1로 예측했지만 0인 데이터의 수가 낮은 것을 뜻한다. 즉, FP를 낮춰야 높아질 수 있다. 재현율 = (예측값 1, 실제값 1) / (실제값이 1인 모든 데이터) 재현율은 민감도 또는 TPR(True Positive Rate)라고도 ..
정확도는 실제 데이터에서 예측 데이터가 얼마나 같은지를 판단하고 또한 직관적으로 모델 예측 성능을 나타내는 평가 지표이다. accuracy = 예측 결과가 동일한 데이터 / 전체 예측 데이터 모델 성능의 왜곡 전부 짚고 넘어가진 않지만 불균형한 레이블 데이터 세트에서는 성능 수치로 사용되선 안된다. 아래 결과 데이터가 1이 45개 밖에 없는 데이터 즉, 불균형한 데이터에서 모든 값을 0으로 예측해도 정확도는 90%가 나오는 기이한 현상이 있기에 이런 한계점을 극복하기 위해 여러 가지 분류 지표로 성능을 평가해야 한다. 그러기 위해서 나온 것이 오차행렬이다. 오차 행렬(confusion matrix) 처음 보면 뭔가 싶지만 아주 잘 만들어진 것이다. 각각 간단하다. - TN(True Negative)는 N..
캐글 데이터를 통해 타이타닉 탑승자 데이터를 기반으로 생존자 예측을 해보자. 데이터 전처리 DATA 확인 모델을 만들기 전 데이터를 불러오고 확인하는 작업을 거쳐야 한다. import numpy as np import pandas as pd import matplotlib.pyplot as plt import seaborn as sns titanic_df = pd.read_csv('train.csv') titanic_df.head(3) 데이터를 잘 불러왔다. null값을 확인해서 데이터 교체 print(titanic_df.info()) print(titanic_df.shape) 데이터를 확인해 보니 몇 개의 column항목에서 null이 존재한다. 이를 전부 교체해 주자. titanic_df['Age']..
데이터 전처리 데이터 전처리는 ML 알고리즘 급으로 중요한데 내부에 있는 값들을 깔끔하게 정리해 준다고 생각하면 편하다. 그리고 사이킷런 의 ML 알고리즘은 문자열 값을 입력값으로 허용하지 않기 때문에 우리는 모든 문자열을 인코딩하여 숫자로 만들 것이다. 데이터 인코딩 레이블 인코딩(Label Encoding) from sklearn.preprocessing import LabelEncoder items=['TV','냉장고','전자레인지','컴퓨터','컴퓨터','선풍기','믹서','믹서'] encoder = LabelEncoder() encoder.fit(items) labels = encoder.transform(items) print('인코딩 변환값:',labels) print('인코딩 클래스 값 :..
교차 검증 교차검증이 필요한 이유 학습데이터와 검증데이터를 분류한다 해도 과적합에 취약하다. 과적합이란 모델이 학습 데이터에만 과도하게 최적화되어 다른 데이터를 예측할 때 성능이 상당히 떨어지는 것을 말한다. 이러한 편향모델이 생기지 않도록 교차 검증을 이용한다. K 폴드(KFold) 교차검증 k-음식, k-팝 그런 k 아니다. 아무튼. KFold cross validation은 가장 보편적으로 사용되는 교차 검증 방법이다. 아래 사진처럼 k개의 데이터 폴드 세트를 만들어서 k번만큼 각 폴드 세트에 학습과 검증 평가를 반복적으로 수행하는 방법이다. from sklearn.datasets import load_iris from sklearn.tree import DecisionTreeClassifier f..
이 글의 내용은 필자가 공부하는 책의 내용을 추후에 복습용도로 보기 위하여 사용하는 것이다.(참고바람) 첫 번째 머신러닝 만들기 딥러닝 알고리즘이 많이 나오긴 하지만 사이킷런도 못지않게 유명한 ML 라이브러리이기에 학습하는 단계를 한번 짚고 넘어가도록 한다. 사용되는 알고리즘에 대한 내용은 추후에 더 많이 설명할 예정이지만 가장 간단한 ML예시를 위해서 그냥 넘어가도록 한다. from sklearn.datasets import load_iris from sklearn.tree import DecisionTreeClassifier from sklearn.model_selection import train_test_split sklearn.datasets은 사이킷런에서 자체적으로 제공하는 데이터 세트를 생성..