etc/머신러닝 이론

etc/머신러닝 이론

문자 카테고리형 데이터 처리 (Label Encoding, One-Hot Encoding)

머신러닝 알고리즘은 문자열 데이터 속성을 입력받지 않으며 모든 데이터는 숫자형으로 표현되어야 한다.따라서 문자형 카테고리형 속성은 모두 숫자 값으로 변환/인코딩 되어야 한다. scikit-learn을 사용한 변환 방식에는 대표적으로 2가지가 있다. 레이블 인코딩 (Label Encoding) 원-핫 인코딩(One-Hot Encoding) 이 두 가지의 차이점을 한눈에 살펴보면 다음과 같다. 이제 자세히 하나씩 살펴보자. 레이블 인코딩 (Label Encoding) Label Encoding은 feature의 유형에 따라 숫자를 부여한다. 수행 방법 from sklearn.preprocessing import LabelEncoder items=['트와이스','BTS','레드벨벳','신화','GOD','GO..

etc/머신러닝 이론

머신러닝 회귀 모델의 성능 평가 지표 (MAE, MSE, RMSE, R-squred)

회귀모델을 평가하는 평가지표 회귀모델은 그 모델이 잘 학습되어졌는지 확인하기 위한 회귀모델의 평가지표들이 4가지 있다. 이를 하나씩 살펴보자. MAE(Mean Absolute Error) 모델의 예측값과 실제값의 차이의 절대값의 평균 절대값을 취하기 때문에 가장 직관적으로 알 수 있는 지표이다. (해석에 용이하다.) 절대값을 취하기 때문에 모델이 Underperformance(실제보다 낮은 값으로 예측)인지 Overperformance(실제보다 높은 값으로 예측)인지 알 수 없다. from sklearn.metrics import mean_absolute_error mean_absolute_error(y, y_pred) MSE(Mean Squared Error) 제곱을 하기 때문에 MAE와는 다르게 모델..

etc/머신러닝 이론

머신러닝 분류 모델의 성능 평가 지표 (Accuracy, Recall, Precision, F1)

분류를 수행할 수 있는 기계 학습 알고리즘을 만들고 나면, 그 분류기의 예측력을 검증/평가 해봐야 한다. 모델의 성능을 평가하려면 모델을 생성하기 전부터 애초에 데이터를 학습 세트와 평가 세트로 분리해서, 학습 세트로 모델을 만들고 평가 세트로 그 모델의 정확도를 확인하는 절차를 거친다. (자세한 내용은 이 포스팅을 참고) 그런데 분류 모델 성능 평가 지표를 소개하기 전에 정답을 맞히거나 틀리는 경우의 수들을 먼저 이해해야 한다. True Positive : 실제 Positive인 정답을 Positive라고 예측(True) True Negative : 실제 Negative인 정답을 Negative라고 예측 (True) False Positive : 실제 Negative인 정답을 Positive라고 예측 ..

etc/머신러닝 이론

K-Means++ 클러스터링 쉽게 이해하기

이전 포스팅에서 K-Means 클러스터링의 개념이나 원리를 다뤘다. K-Means 클러스터링 알고리즘은 소개된지 거의 반세기가 지났지만, 여전히 머신러닝에 가장 널리 사용되는 클러스터링 알고리즘 중 하나이다. 그러나 K-Means 알고리즘의 가장 큰 단점은 처음에 지정하는 중심점(centroid)의 위치를 무작위로 결정하기 때문에 최적의 클러스터로 묶어주는 데에는 한계가 있다는 것이다. 그래서 이번에는 K-Means의 새로운 버전이라고 할 수 있는 K-Means++ 알고리즘에 대해 살펴보려고 한다. K-Means++는 전통적인 K-Means의 문제, 즉 중심점 무작위 선정의 문제를 해결하기 위해 생겨난 거라고 보면 되겠다. K-Means++ 클러스터링의 원리 전통적인 K-Means는 아래와 같은 원리로 ..

etc/머신러닝 이론

K-Means 클러스터링 쉽게 이해하기

본 포스팅에서는 데이터 클러스터링(군집화)로 널리 사용되는 비지도학습 알고리즘 K-Means 클러스터링에 대해 최대한 쉽게 설명해보고자 한다. 파이썬 라이브러리 scikit-learn 사용법도 간략히 소개한다. 클러스터링, 군집화란 무엇인가 만약 우리가 다루는 데이터에 '레이블'이 붙어 있다면 지도학습, 즉 미리 가지고 있는 데이터와 레이블을 기반으로 예측이나 분류를 수행하는 모델을 만들 수 있다. 그러나 실제로는 레이블(분류)이 없는 경우가 더 많다. 물론 이렇게 별도의 레이블이 없는 데이터 안에서 패턴과 구조를 발견하는 비지도 학습도 머신러닝의 큰 축이고, 그 중 가장 대표적인 비지도 학습 기술이 바로 Clustering(군집화)이다. 참고로 지도학습 Classification(분류)과 엄연히 다른 ..

etc/머신러닝 이론

랜덤 포레스트(Random Forest)

이전 포스팅에서 분류에 널리 사용되는 머신러닝 알고리즘 의사결정나무(Decision Tree)에 대해 알아보았다. 의사결정나무는 매우 훌륭한 모델이지만, 학습 데이터에 오버피팅하는 경향이 있다. 가지치기(pruning)같은 방법을 통해 그런 부작용을 최소화하는 전략이 있긴하나 역시나 좀 부족하다. 그래서 본 포스팅에서는 의사결정트리의 오버피팅 한계를 극복하기 위한 전략으로 **랜덤 포레스트(RandomForest)라는 방법을 아주 쉽고 간단하게 소개하고자 한다. 내용이 짧으니 후딱 살펴보자. 랜덤 포레스트란 랜덤 포레스트는 분류, 회귀 분석 등에 사용되는 앙상블 학습 방법의 일종으로, 훈련 과정에서 구성한 다수의 결정 트리로부터 분류 또는 평균 예측치(회귀)를 출력함으로써 동작한다. ('무작위 숲'이라는..

etc/머신러닝 이론

나이브 베이즈(Naive Bayes)를 활용한 문서 분류 예제

이전 포스팅에서 나이브 베이즈를 사용해서 텍스트를 어떻게 분류할 수 있는지 정말 간단한 예제를 통해 살펴보았다. 이번에는 파이썬 머신러닝 라이브러리 scikit-learn에서 실제로 어떻게 구현하고 동작하는지 코드를 알아볼 차례. scikit-learn 사용법 1. CounterVectorizer scikit-learn에서 Naive Bayes 분류기를 사용하기 전에 일단 자연어(텍스트)로 이루어진 문서들을 1과 0 밖에 모르는 컴퓨터가 이해할 수 있는 형식으로 변환해야 할 거다. feature extraction, 어휘(특성) 추출 과정이라 볼 수 있다. .fit() 일단 CounterVectorizer라는 객체를 만든 후, fit() 메소드를 호출해서 학습 데이터 세트에 등장하는 어휘를 가르쳐놓아야 ..

etc/머신러닝 이론

나이브 베이즈(Naive Bayes)를 확용한 문서 분류 쉽게 이해하기

나이브 베이즈 분류기(Naive Bayes Classifier)는 '베이즈 정리'를 활용하여 분류를 수행하는 머신러닝 지도학습 알고리즘이다. 특히 텍스트(문서)의 분류에 많이 사용되는데, 실제로 어떤 계산을 통해 분류하게 되는지 그 과정을 최대한 쉽게 소개해본다. 베이즈 정리 '베이즈 정리'에 대해서는 이 포스팅을 보자. 공식을 다시 살펴보자. B라는 조건이 주어졌을 때 A의 확률을 구하는 거다. 그런데 여기서 만약 B를 데이터라고 생각하고, A를 레이블이라고 생각하면 일종의 분류기가 되는 셈이다. B라는 데이터가 주어졌을 때 A라는 레이블로 분류될 확률을 계산하는 거니까. 본 포스팅에서는 어떤 쇼핑몰에 새로 작성된 리뷰를 읽고, 그게 긍정 리뷰인지 부정 리뷰인지 분류하는 예를 살펴보자. (텍스트를 분류..

hyesoup
'etc/머신러닝 이론' 카테고리의 글 목록