머신러닝 평가 크게 보았을 때, 머신러닝의 과정 : 데이터 가공 / 변환 -> 모델 학습 / 예측 -> 평가 머신러닝 모델은 회귀와 분류로 나뉘어지는데, 회귀는 주로 실제 값과 예측 값의 오차 평균값에 기반하여 평가가 이루어진다. 분류는 우리가 직관적으로 알 수 있는 정확도(맞은 예측의 수 / 전체 예측의 수)로 평가하기도 하지만, 정확도보다는 다른 평가 지표를 사용하는 경우가 더 많다. 분류의 성능 평가 지표에는 - 정확도(Accuracy) - 오차행렬(Confusion Matrix) - 정밀도(Precision) - 재현율(Recall) - F1 스코어 - ROC AUC 분류에는 2개의 결괏값을 가지는 이진분류와 다수의 결괏값을 가지는 멀티분류가 있는데, 위의 여섯가지 성능 측정 지표는 이진 분류에 ..
기계학습/Machine Learning 검색 결과
데이터 전처리란 무엇인가? 데이터 전처리는 머신러닝 알고리즘에 비해 알려져 있는 정도가 작지만, 중요도는 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를 만드는 것이라고 볼 수 있다. ※머신러닝이 필요한 이유 데이터의 양이 기하급수적으로 늘어나고 있는 상황에서 모든 분야의 모집단을 전수조사한다는 것은 거의 불가능하고..
모델 선택과 평가, 교차 검증 파이프라인(pipeline), 특성 스케일링(feature scaling), fit, transform, fit_transform() 메서드의 차이 데이터 변환기, Pipeline 만들기 계층적 샘플링 (Stratified Sampling) 데이터 셋이 충분히 크다면 일반.. dsbook.tistory.com 가능성 있는 모델들을 모두 추렸다고 가정한 후, 이제 이 모델들을 세부 튜닝하기 위한 방법을 몇 가지 살펴보자. 하이퍼 파라미터 튜닝 1. GridSearchCV (그리드 탐색) 가장 단순한 방법은 만족할 만한 하이퍼 파라미터 조합을 찾을 때까지 수동으로 하이퍼 파라미터를 조정하는 것이다. 이는 매우 지루한 작업이고 또 많은 경우의 수를 탐색하기에는 시간이 부족할 수도..
파이프라인(pipeline), 특성 스케일링(feature scaling), fit, transform, fit_transform() 메서드의 차이 데이터 변환기, Pipeline 만들기 계층적 샘플링 (Stratified Sampling) 데이터 셋이 충분히 크다면 일반 훈련 데이터 셋을 무작위로 샘플링 하여도 큰 문제가 발생하지 않는다. 하지만 그렇지 않으면 데�� dsbook.tistory.com 위에서 전처리한 데이터들로 학습시켜보자. 모델 선택과 평가(교차검증) 1. LinearRegression (선형 회귀) from sklearn.linear_model import LinearRegression lin_reg = LinearRegression() #준비된 데이터와 레이블로 모델 학습 lin_..
데이터 변환기, Pipeline 만들기 계층적 샘플링 (Stratified Sampling) 데이터 셋이 충분히 크다면 일반 훈련 데이터 셋을 무작위로 샘플링 하여도 큰 문제가 발생하지 않는다. 하지만 그렇지 않으면 데이터 편향이 생길 가능성이 크다. 예를들어 여론 설문조사 기관 dsbook.tistory.com 계층적 샘플링에서 다루었던 housing 데이터들을 가지고 예를 들어보자. 현재 이 데이터들은 StratifiedShuffleSplit 객체에 의해 훈련 세트와 테스트 세트로 나뉘어진 상태이며, 훈련 세트는 다시 housing으로 초기화하였고, 훈련 세트의 레이블은 housing_label로 초기화하였다. 이 데이터들을 전처리하기 위한 파이프라인을 만들어보자. housing = strat_tra..
데이터 셋이 충분히 크다면 일반 훈련 데이터 셋을 무작위로 샘플링 하여도 큰 문제가 발생하지 않는다. 하지만 그렇지 않으면 데이터 편향이 생길 가능성이 크다. 예를들어 여론 설문조사 기관에서 무작위로 1,000명을 선정해 조사를 한다고 가정하자. 무작위로 선정한 1,000명이, 물론 그럴 가능성은 거의 없겠지만 한 성별로만 이루어져 있거나 특정 연령대에 집중되어 있는 경우, 그 데이터 셋에 충분히 신뢰가 가진 않을 것이다. 이를 위해 전체 인구를 계층이라는 동질의 그룹으로 나누고, 테스트 세트가 전체 인구를 대표하도록 각 계층에서 올바른 수의 샘플을 추출한다. 인구 계층을 성별에 따라 남성와 여성으로 나눈다고 가정하자. 2020년 우리나라 남녀 성비는 남자가 50.1%, 여자가 49.9%이다. 여기서 전..
최근댓글