사이킷런에서는 분류를 위한 결정트리 클래스인 DecisionTreeClassifier와, 회귀를 위한 결정트리클래스인DecisionTreeRegression을 제공한다. 두가지 클래스는 다음의 하이퍼파라미터를 동일하게 제공한다. 대부분의 알고리즘이 직면한 문제가 과적합인 만큼 결정트리의 하이퍼 파라미터 외에도 대부분의 머신러닝 알고리즘들의 하이퍼 파라미터는 과적합을 제어하기 위한 목적으로 설정해준다고 생각을 하면 이해하기 쉽다. 결정트리 하이퍼 파라미터 - min_samples_split : 노드를 분할하기 위한 최소한의 샘플 데이터 수. -> 과적합을 제어하는 데 사용됨. 디폴트는 2이고 작게 설정할수록 분할되는 노드가 많아져서 과적합 가능성 증가 과적합 제어. 1로 설정할 경우 분할되는 노드가 많아져..
기계학습 검색 결과
앙상블러닝 앙상블이라는 단어는 머신러닝을 접하면서도 종종 들어본 경우가 많았을 것이다. 과연 앙상블 러닝은 어떤 기법일까? 기존의 문제점 (과적합) 앞에서 머신러닝을 통해서 예측을 하는 경우에, 과적합(Overfitting)이라는 문제가 항상 존재하고 있다는 것을 언급했었다. 과적합에 대한 원인은, 모델이 데이터를 기반으로 학습을 수행하는 과정에서 너무 세부적인 부분까지 학습데이터에 초점을 맞춘 나머지, 처음 보는 테스트 데이터는 제대로 예측을 못한다는 것이었다. 그렇다고, 너무 큰 단위로 학습을 하고 세부적인 부분을 무시해버린다면, 전체적인 ML 알고리즘 모델의 성능이 떨어지는 문제도 동시에 존재했다. 과적합에 대한 해결책 => 앙상블 러닝 따라서, 사람들은 이 문제를 해결하려고 시도하던 도중, 여러개..
이전 포스팅에서 정밀도와 재현율에 대해서 알아보았다. 또한, 각 경우마다 재현율이나, 정밀도의 상대적 중요성이 다르다는 것 또한 알 수 있었다. 하지만, 정밀도와 재현율만으로 완벽하게 머신러닝 분류 알고리즘을 평가할 수 있을까? 이전 포스팅의 마지막 부분에서 다루었듯이, 정밀도 혹은 재현율 중 하나를 극단적으로 증가시키는 경우, 정밀도-재현율 트레이드오프로 인해 다른 하나의 수치가 급격하게 감소하게 된다. 따라서, 이들 중 하나만 가지고 성능을 측정하는 것은 성능의 전체를 대변할 수 없다. 이런 문제점을 해결하기 위해서 나온 개념이 F1 Score이다. F1 Score F1 Score는 정밀도와 재현율을 결합한 지표이다. 이 지표는 정밀도와 재현율이 어느 한쪽으로 치우치지 않을 떄 상대적으로 높은 값을 ..
이전의 포스팅에서 실생활에 많이 쓰이는 정확도가 왜 머신러닝 분류쪽에서 주요한 성능 평가 지표로 사용될 수 없는지에 대해서 알아보았고, 정밀도와 재현율을 이해하기 위해서 오차 행렬의 각 요소(FN, FP, TN, TP)들이 의미하는 바를 알아보았다. 오차 행렬의 각 요소에 기반하여 정밀도와 재현율을 표현하자면, 정밀도 = TP / (FP + TP) 재현율 = TP / (FN + TP) 이렇게 수식처럼 나타내는 것이 계산을 하는 경우에는 편리하게 사용이 될 수 있으나, 정밀도와 재현율을 처음 접하는 사람들에게는 어떤 의미인지 이해하기 어려울 수 있다. 정밀도 = TP / (FP + TP) 분모를 보면 FP + TP 이다. FP는 Positive로 예측했지만 틀린 것을 의미하고, TP는 Positive로 예..
머신러닝 평가 크게 보았을 때, 머신러닝의 과정 : 데이터 가공 / 변환 -> 모델 학습 / 예측 -> 평가 머신러닝 모델은 회귀와 분류로 나뉘어지는데, 회귀는 주로 실제 값과 예측 값의 오차 평균값에 기반하여 평가가 이루어진다. 분류는 우리가 직관적으로 알 수 있는 정확도(맞은 예측의 수 / 전체 예측의 수)로 평가하기도 하지만, 정확도보다는 다른 평가 지표를 사용하는 경우가 더 많다. 분류의 성능 평가 지표에는 - 정확도(Accuracy) - 오차행렬(Confusion Matrix) - 정밀도(Precision) - 재현율(Recall) - F1 스코어 - ROC AUC 분류에는 2개의 결괏값을 가지는 이진분류와 다수의 결괏값을 가지는 멀티분류가 있는데, 위의 여섯가지 성능 측정 지표는 이진 분류에 ..
데이터 전처리란 무엇인가? 데이터 전처리는 머신러닝 알고리즘에 비해 알려져 있는 정도가 작지만, 중요도는 ML 알고리즘에 맞먹는 중요도를 가지고 있다. 왜냐하면 머신러닝을 통해서 예측을 한다는 것은 데이터 기반이기 때문에, 어떤 데이터를 입력으로 가지는가가 성능에 매우 중요하다. 그럼 어떤 데이터 처리가 필요할까? 1. "결손값", "NaN", "Null"값을 채워 넣는것이다. 머신러닝에 데이터를 입력으로 넣기 전에 해당 값들을 고정된 다른 변환 값으로 바꾸어야 한다. 다른 변환 값이라는 것은 또 무엇을 의미하는가? 이 값은 머신러닝을 제작하는 사람이 직접 고려해야 하는 부분이다. 예를 들어, 피처의 값이 얼마되지 않는 경우에는 피처의 평균값으로 결손값을 대체하는 경우가 있고, 결손값이 일정 수준의 비율..
※ HyperParameter(하이퍼 파라미터)란? 머신러닝 알고리즘을 공부를 하다보면 배운지 많이 듣는 용어 중에 하나이다. 1. 파라미터 VS 하이퍼 파라미터 일단, 파라미터는 일반 함수에서 결과값을 얻기 위해 넣어야 하는 요소들을 의미하는 용어로 사용되는 경우가 많다. 둘의 차이점을 머신러닝, 딥러닝 알고리즘의 범위로 제한한다면, 파라미터들은 측정되거나 데이터로부터 학습되어지는 요소들을 의미하고, 파라미터는 수작업으로 이루어지지 않는다. 즉, 사용자가 직접 입력하지 않는다는 의미이다. 데이터를 얻어 그 데이터의 평균이나, 표준편차 등이 파라미터에 속한다고 볼 수 있다. 하이퍼 파라미터는 머신러닝, 딥러닝 알고리즘에서 쓰이는 용어이다. 이것들은 대부분 해당 알고리즘이 어떻게 학습을 해야하는지에 대한 ..
머신러닝에서 학습한 데이터들을 가지고 학습한 모델의 성능을 학습 데이터로 사용한다면 당연히 성능은 100% 정확하게 나올 수 있다. 하지만, 실제로는 이미 학습한 데이터를 가지고 하는 것이 아니라, 처음 접한 데이터를 예측을 해야 하기 때문에, 그 성능을 측정하기 위해서는 학습 당시에 사용하지 않은 데이터를 가지고 성능 테스트를 해야 한다. 하지만, 가지고 있는 데이터는 한정적이기 때문에, 가지고 있는 데이터 안에서 학습에 이용할 데이터와 성능 테스트에 이용할 데이터를 분리해야 한다. 이 과정을 수행하는 것이 sklearn.model_selection의 train_test_split이다. 실제로 거의 모든 머신러닝 과정에서 위 함수를 사용하게 된다. train_test_split() 함수에서는 2가지 파..
Scikit-learn 가장 많이 쓰이는 파이썬 머신러닝 라이브러리 특징 쉽고 파이썬스러운 API 제공 다양한 알고리즘과 편리한 프레임워크 API 오랜시간에 걸쳐 여러 사용자들에게 검증 다향한 환경에서 사용가능하다. ※ Anaconda를 설치하면 기본으로 설치되어 있다. 사이킷 런의 버전을 확인하는 방법은 import sklearn print(sklearn.__verison__) 이다. 데이터 다루기 처음 머신러닝을 배울 때에는 데이터를 어디서 가져와야 할지 조차 모를수도 있다. 또한, 데이터를 외부 사이트에서 가져오더라도 정제되지 않은 것들이 많아 입문자가 바로 머신러닝 실습을 하기에는 어려움이 있다. 이런 이유에서 scikit-learn 패키지는 몇 가지의 데이터셋을 내장하고 있다. 여기에서는 붓꽃(..
※머신러닝의 목적 무엇(X)으로 무엇(Y)를 예측하고 싶다! 이때, 데이터는 주로 행렬, 배열 등의 형태로 되어있다. 머신러닝의 목적을 간단하게 수식으로 표현을 한다면 Y = F(X) 이다. X : 우리가 가지고 있는 데이터를 의미하며, 입력변수 / 독립변수 / Feature이라고 부른다. Y : 우리가 예측하고 싶은 데이터를 의미하며, 출력변수 / 종속변수 / 반응변수라고 부른다. F : X를 통해서 Y를 예측할 수 있도록 입력변수와 출력변수간 관계를 의미한다. 머신러닝은 주어진 데이터를 통해 입력변수와 출력변수 간 관계를 만드는 함수 F를 만드는 것이라고 볼 수 있다. ※머신러닝이 필요한 이유 데이터의 양이 기하급수적으로 늘어나고 있는 상황에서 모든 분야의 모집단을 전수조사한다는 것은 거의 불가능하고..
최근댓글