본문 바로가기

분류 전체보기

(174)
머신러닝 강좌 #15] 랜덤 포레스트 (Random Forest) 배깅(Bagging)은 여러 개의 분류기를 만들어서 보팅으로 최종 결정하는 알고리즘으로 대표적인 알고리즘으로 랜덤 포레스트가 있습니다. 앙상블 알고리즘 중 비교적 빠른 수행 속도를 가지고 있으며, 다양한 영역에서 높은 예측 성능을 보이고 있습니다. 랜덤포세스트의 기반 알고리즘은 결정 트리입니다. (부스팅 기반의 다양한 앙상블 알고리즘 역시 대부분 결정 트리 알고리즘을 기반 알고리즘으로 채택하고 있습니다.) 랜덤 포레스트는 여러 개의 결정 트리 분류기가 전체 데이터에서 배깅 방식으로 각자의 데이터를 샘플링해 개별적으로 학습을 수행한 뒤 최종적으로 모든 분류기가 보팅을 통해 예측 결정을 하게 됩니다. 랜덤 포레스트는 개별적인 분류기의 기반 알고리즘은 결정 트리이지만 개별 트리가 학습하는 데이터 세트는 전체 ..
머신러닝 강좌 #14] 앙상블 학습(Ensemble Learning)과 보팅(Voting) 앙상블 학습(Ensemble Learning)을 통한 분류는 여러 개의 분류기(Classifier)를 생성하고 그 예측을 결합함으로써 보다 정확한 최종 예측을 도출하는 기법을 말합니다. 앙상블 학습의 목표는 다양한 분류기의 예측 결과를 결합함으로써 단일 분류기 보다 신뢰성이 높은 예측값을 얻는 것입니다. 이미지, 영상, 음성 등의 비정형 데이터의 분류는 딥러닝이 뛰어난 성능을 보이고 있지만, 대부분의 정형 데이터 분류 시에는 앙상블이 뛰어난 성능을 나타내고 있습니다. 앙상블 알고리즘의 대표 격인 랜덤포레스트와 그래디언트 부스팅 알고리즘은 활용도가 높습니다. 앙상블 학습의 유형은 전통적으로 보팅(Voting), 배깅(Bagging), 부스팅(Boosting)의 세 가지로 나눌 수 있으며, 이외에도 스태깅을..
머신러닝 강좌 #13] 결정 트리 실습 - 사용자 행동 인식 [Human Learning Repository] 결정 트리를 이용해 UCI Machine Learning Repository에서 제공하는 Human Activity Reconition데이터 세트에 대한 예측 분류를 수행해 보겠습니다. import pandas as pd import matplotlib.pyplot as plt feature_name_df = pd.read_csv('./data/UCI_Har/features.txt', sep='\s+', header=None, names=['column_index', 'coulmn_name']) feature_name = feature_name_df.iloc[:,1].values.tolist() print(feature_name_df.info()) # print(feature_name_df.head())..
머신러닝 강좌 #12] 결정트리(DecisionTree)와 과적합에 대해 결정 트리는 ML알고리즘 중 직관적으로 이해하기 쉬운 알고리즘입니다. 규칙 노드(Decision Node)로 표시된 노드는 규칙 조건이 되는 것이고, 리프 노드(Leaf Node)로 표시된 노드는 결정된 클래스 값입니다. 그리고 새로운 규칙 조건마다 서브 트리(Sub Tree)가 생성됩니다. 데이터 세트에 피처가 있고 이러한 피처가 결합해 규칙 조건마다 서브 트리(Sub Tree)가 생성됩니다. 데이터 세트에 피처가 있고 이러한 피처가 결합해 규칙 조건을 만들 때마다 규칙 노드가 만들어집니다. 하지만 많은 규칙이 있다는 것은 곧 분류를 결정하는 방식이 더욱 복잡해진다는 뜻이며 과적합으로 이어지기 쉽습니다. 즉, 트리의 깊이(depth)가 깊어질수록 결정 트리의 예측 성능이 저하될 가능성이 높습니다. 가능..
머신러닝 강좌 #11] 분류(Classification)의 개요 지도 학습(Supervised Learning)은 레이블(Label), 즉 명시적인 정답이 있는 데이터가 주어진 상태에서 학습하는 머신러닝 방식입니다. 지도 학습의 대표적인 유형인 분류(Classification)는 학습 데이터로 주어진 데이터의 피처와 레이블 값(결정 값, 클래스 값)을 머신러닝 알고리즘으로 학습해 모델을 생성하고, 이렇게 생성된 모델에 새로운 데이터 값이 주어졌을 때 미지의 레이블 값을 예측하는 것입니다. 즉, 기존 데이터가 어떤 레이블에 속하는지 패턴을 알고리즘으로 인지한 뒤에 새롭게 관측된 데이터에 대한 레이블을 판별하는 것입니다. 분류를 사용하는 머신러닝 알고리즘에는 베이즈 통계와 생성 모델에 기반한 나이브 베이즈 독립변수와 종속변수의 선형 관계성에 기반한 로지스틱 회귀 데이터 ..
머신러닝 강좌 #10] 피마 인디언 당뇨병 예측 실습과 마무리 피마 인디언 당뇨병(Pima Indian Diabetes) 데이터 세트를 이용해 당뇨병 여부를 판단하는 머신러닝 예측 모델을 수립하는 연습을 해보겠습니다. 관련 소스는 아래와 같습니다. http://localhost:8888/notebooks/Lecture_ML/Lecture_9_PimaIndian.ipynb 이진 분류의 레이블 값이 불균형하게 분포될 경우(즉 0이 매우 많고, 1이 매우 적을 경우 또는 반대의 경우) 단순히 예측 결과와 실제 결과가 일치하는 지표인 정확도만으로는 머신러닝 모델의 예측 성능을 평가할 수 없습니다. 오차행렬은 Negative와 Positive값을 가지는 실제 클래스 값과 예측 클래스 값이 True와 False에 따라 TN, FP, FN, TP로 매칭되는 4분면 행렬을 기반으..
머신러닝 강좌 #9] 머신러닝 모델 성능 평가 - F1, ROC-AUC F1 Score F1 스코어(Score)는 정밀도와 재현율을 결합한 지표입니다. F1스코어는 정밀도와 재현율이 어느 한쪽으로 치우치지 않는 수치를 나타낼 때 상대적으로 값을 가집니다. F1 스코어의 공식은 다음과 같습니다. 만일 A예측 모델의 경우 정밀도가 0.9. 재현율이 0.1로 극단적인 차이가 나고, B예측 모델은 정밀도가 0.5, 재현율이 0.5로 정밀도와 재현율이 큰 차이가 없다면 A예측 모델의 F1스코어는 0.18이고, B예측 모델의 F1 스코어는 0.5로 B모델이 A모델에 비해 매우 우수한 F1 스코어를 가지게 됩니다. ROC - AUC ROC, AUC Curve에 대해 : Receiver Operating Characteristic, Area Under the Curve AUC-ROC Cu..
머신러닝 강좌 #8] 머신러닝 모델 성능 평가 - 정밀도(Precision), 재현율(Recall) 정밀도와 재현율은 Positive 데이터 세트의 예측 성능에 좀 더 초점을 맞춘 평가 지표입니다. 본 장을 진행하기 전 간략하게 내용을 보려면 페이지(https://nicola-ml.tistory.com/88?category=861724) 하단을 다시 한번 복습해주세요. 정밀도 = TP / (FP+TP) 재현율 = TP / (FN+TP) 정밀도는 예측을 Positive로 한 대상 중에 예측과 실제 값이 Positive로 일치한 데이터의 비율을 뜻합니다. 공식의 분모인 FP+TP는 예측을 Positive로 한 모든 데이터 건수이며, 분자인 TP는 예측과 실제 값이 Positive로 일치한 데이터 건수입니다. Positive예측 성능을 더욱 정밀하게 측정하기 위한 평가 지표로 양성 예측도라고도 불립니다. 재..
머신러닝 강좌 #7] 머신러닝 모델 성능 평가 - 정확도 (Accuracy), Confusion Matrix 머신러닝 모델은 여러 가지 방법으로 예측 성능을 평가할 수 있습니다. 성능 평가 지표(Evaluation Metrics)는 일반적으로 모델이 분류냐 회귀냐에 따라 여러 종류로 나뉩니다. 회귀의 경우 대부분 실제값과 예측값의 오차 평균값에 기반합니다. 예를 들어 오차에 절댓값을 씌운 뒤 평균 오차를 구하거나 오차의 제곱 값에 루트를 씌운 뒤 평균 오차를 구하는 방법과 같이 기본적으로 예측 오차를 가지고 정규화 수준을 재가공하는 방법이 회귀의 성능 평가 지표 유형입니다. 분류의 평가방법도 일반적으로는 실제 결과 데이터와 예측 결과 데이터가 얼마나 정확하고 오류가 적게 발생하는가에 기반하지만, 단순히 이러한 정확도만 가지고 판단했다가는 잘못된 평가 결과에 빠질수 있습니다. 특히 0과 1로 결정값이 한정되는 이..
머신러닝 강좌 #6] 타이타닉 생존자 예측 실습 기본적인 ML의 과정을 복습하기 위해 타이타닉 생존자 예측을 실습을 하겠습니다. 데이타는 https://www.kaggle.com/c/titanic/data 이곳에서 다운로드하거나 아래의 데이터를 다운로드 하여 실습합니다. 실습에 사용한 ipny화일은 아래와 같습니다. 다운로드 하여서 jupyter notebook에 오픈하거나 colab에서 불러오시면 됩니다.
머신러닝 강좌 #5] 피처스케일링 (표준화 / 정규화) / StandardScler, MinMaxScaler 서로 다른 변수의 값 범위를 일정한 수준으로 맞추는 작업을 피처 스케일링이라고 합니다. 대표적인 방법으로 표준화(Standardiaztion)와 정규화(Normaliaztion)가 있습니다. 일반적으로 정규화는 서로 다른 피처의 크기를 통일하기 위해 크기를 변환해주는 개념입니다. 즉, 개별 데이터의 크기를 모두 똑같은 단위로 변경하는 것입니다. 사이킷런에서 제공하는 대표적인 피처 스케일 클래스인 StandardScaler와 MinMaxScaler를 알아보겠습니다. 1. StandardScler StandardScaler : 피처스케일링 정규화 서로 다른 변수의 값 범위를 일정한 수준으로 맞추는 작업을 피처 스케일링(Feature Scaling)이라고 합니다. 대표적인 방법으로 표준화(Standardiza..
머신러닝 강좌 #4] 데이터 전처리 - 레이블 인코딩, 원-핫 인코딩 데이터 전처리(Data Preprocessing)은 머신러닝을 하는 데 있어 매우 중요합니다. 머신러닝에서는 결손값, 즉 NaN, Null값은 허용되지 않습니다. 따라서 이러한 Null값은 고정된 다른 값으로 변환해야 합니다. Null값을 어떻게 처리해야 할지는 경우에 따라 다릅니다. Feature값 중 Null값이 얼마 되지 않는다면 피처의 평균값 등으로 간단하게 대체될 수 있으나 Null값이 대부분이라면 오히려 해당 피처는 드롭하는 것이 더 좋습니다. 이렇게 사이킷런의 머신러닝 알고리즘은 문자열 값을 입력 값으로 허용하지 않습니다. 그래서 모든 문자열 값은 인코딩 돼서 숫자 형으로 변환해야 합니다. 카테고리형 피처는 코드값으로 표현하는 게 더 이해하기 쉬울 것 같습니다. 반면 텍스트형 피처는 피처 벡..
머신러닝 강좌 #3] GridSearchCV - 교차 검증과 최적 하이퍼 파라미터 튜닝을 한 번에 하이퍼 파라미터는 머신러닝 알고리즘을 구성하는 주요 구성 요소이며, 이 값을 조정해 알고리즘의 예측 성능을 개선할 수 있습니다. 사이킷런은 GridSearchCV API를 이용해 Classifier나 Regressor와 같은 알고리즘에 사용되는 하이퍼 파라미터를 순차적으로 입력하면서 편리하게 최적의 파라미터를 도출할 수 있는 방안을 제공합니다. 예를 들어 DecisionTree 알고리즘의 여러 하이퍼 파라미터를 순차적으로 변경하면서 최고 성능을 가지는 파라미터 조합을 찾고자 한다면 다음과 같이 파라미터의 집합을 만들고 이를 순차적으로 적용하면서 최적화를 수행할 수 있습니다. grid_parameters = {'max_depth': [1,2,3], 'min_samples_split': [2,3]} 이럴경우..
머신러닝 강좌 #2] 교차검증에 대해 알고리즘을 학습시키는 학습 데이터와 이에 대한 예측 성능을 평가하기 위한 별도의 테스트용 데이터가 필요합니다. 이를 위해 train_test_split 함수를 많이 사용을 하는데요. 하지만 이 방법 역시 과적합(Overfitting)에 취약한약점을 가지고 있습니다. 하지만 이 방법 역시 과적합(Overfitting)의 우려가 있습니다. 과적합은 모델이 학습 데이터에만 과도하게 최적화되어, 실제 예측을 다른 데이터로 수행할 경우에는 예측 성능이 떨어지는 경우를 말합니다. 이런 과적합의 오류를 수정하기 위해 교차 검증은 이러한 데이터 편증을 막기 위해서 별도의 여러 세트로 구성된 학습 데이터 세트와 검증 데이터 세트에서 학습과 평가를 수행하는 것입니다. 이런 교차검증 방법에는 K-Fold, Stratifie..
코딩테스트 이론: 그리디 알고리즘 (Greedy Algorithm) 탐욕 알고리즘은 최적해를 구하는 데에 사용되는 근사적인 방법으로, 여러 경우 중 하나를 결정해야 할 때마다 그 순간에 최적이라고 생각되는 것을 선택해 나가는 방식으로 진행하여 최종적인 해답에 도달한다. 순간마다 하는 선택은 그 순간에 대해 지역적으로는 최적이지만, 그 선택들을 계속 수집하여 최종적(전역적)인 해답을 만들었다고 해서, 그것이 최적이라는 보장은 없다. 하지만 탐욕알고리즘을 적용할 수 있는 문제들은 지역적으로 최적이면서 전역적으로 최적인 문제들이다. Greedy Algorithms(탐욕법, 탐욕 알고리즘) Greedy Algorithm은 문제를 해결하는 과정에서 그 순간순간마다 최적이라고 생각되는 결정을 하는 방식으로 진행하여 최종 해답에 도달하는 문제 해결 방식이다. 위의 그림에서는 가장 숫..
머신러닝 강좌 #1] 나의 첫번째 머신러닝 프로그램 sklearn을 이용한 첫 번째 머신러닝 프로그램은 대중적으로 많이 알고 있는 iris Data Set을 이용한 꽃받침의 길이와 너비 피처(feature)를 기반으로 꽃의 품종을 예측하는 내용입니다. 분류(Classification)는 대표적인 지도 학습(Supervised Learning) 방법의 하나입니다. 지도 학습은 학습을 위한 다양하 피처와 분류 결정 값인 레이블(Label) 데이터로 모델을 학습한 뒤, 별도의 테스트 데이터 세트에서 미지의 레이블을 예측합니다. 즉 지도 학습은 명확한 정답이 주어진 데이터를 먼저 학습 한 뒤 미지의 정답을 예측하는 방식입니다. 이때 학습을 위해 주어진 데이터 세트를 학습 데이터 세트, 머신러닝 모델의 예측 성능을 평가하기 위해 별도로 데이터 세트를 테스트 데이터..