본문 바로가기

데이터와 함께 탱고를/머신러닝

(11)
회귀 모델에 대한 성능 평가 지표들 MSE (Mean Squared Error) 가장 일반적이고 직관적인 에러 지표. 에러를 제곱하여 평균을 계산하니, 값은 낮을수록 좋다. 장점 지표 자체가 직관적이고 단순하다. 단점 스케일에 의존적이다. 예를 들어, 삼성전자의 주가가 1000000원이고 네이버가 70000원일 때, 두 주가를 예측하는 각각 모델의 MSE 가 똑같이 5000이 나왔을 경우, 분명 동일한 에러율이 아님에도, 동일하게 보여짐. 에러를 제곱하기 때문에, 1미만의 에러는 더 작아지고, 그 이상의 에러는 더 커진다. 즉 값의 왜곡이 있음. RMSE (Root Mean Squared Error) MSE 에 Root 를 씌운 에러 지표. 마찬가지로 값은 낮을수록 좋다. 장단점은 MSE 를 거의 그대로 따른다. 다만, 여기서는 제곱된 에..
분류 모델에 대한 성능 평가 지표들 Precision & Recall Precision 은 모델의 예측 값 중, 실제 값과 같은 데이터의 비율을 말하고, Recall 은 실제 값 중, 모델의 예측 값과 같은 데이터의 비율을 말한다. 다시 정리하면, 예측해야할 값의 클래스가 A, B, C 가 있다고 할 때, Precision = (예측 데이터 중, 실제 클래스 A 인 데이터의 수) / (클래스 A 로 예측된 값들의 데이터 수) Recall = (실제 데이터 중, 클래스 A 로 예측된 값들의 데이터 수) / (실제 클래스 A 인 데이터의 수) 일반적으로 각 클래스 A, B, C 에 대한 각각의 성능 지표를 구한 뒤, 평균을 내어 하나의 지표로 통합하여 표현한다. 평균 외에 다른 방법도 있긴 하다. 이 두 값 모두 0~1 사이의 값을 가지며 1..
Word2Vec 과 Doc2Vec 1. W2V (Word2Vec) 개념 2013년 구글 연구팀이 발표한 단어 임베딩 모델이다. 주변에 있는 단어들끼리 코사인 유사도가 높도록 임베딩한다. 방법 기본적으로, 주위에 있는 단어들을 예측하는 과정에서 각 단어 벡터가 학습된다. 예측하는 방법에는 CBOW 와 Skip-gram 두 방식이 있다. CBOW 주위에 있는 단어들을 가지고 중간에 위치하는 하나의 단어를 예측한다. Skip-gram 중간에 위치하는 하나의 단어를 가지고 주위에 있는 단어를 예측한다. 일반적으로 Skip-gram 이 학습 데이터가 더 많아서 CBOW 보다 임베딩 품질이 더 우수하다. Skip-gram 에서 학습 데이터를 구축하는 방법은 다음과 같다. 형태소 분석이 끝난 문장 코퍼스(단어 단위로 띄어쓰기가 되어있는 글 모음)가 ..
코사인 vs 유클리디안 유사도, 케이스로 이해하기 벡터 간 유사도 측정에는 여러가지 방법이 있지만, 여기서는 코사인 유사도와 유클리디안 유사도만 다룬다. 기본 개념은 구글링 치면 훌륭한 글들이 많으니, 거기서 참고하면 된다. 여기서는 직접 두 벡터를 가지고 요리조리 굴려보며, '직관적으로' 어떻게 다른지 느껴보고자 한다. 먼저 두 벡터가 완전히 동일한 경우를 보자. a = np.array([[1, 0, 0]]) b = np.array([[1, 0, 0]]) print(cosine_similarity(a, b)) print(euclidean_similarity(a, b)) # output [[1.]] [[1.]] 두 유사도 값 모두 1이 나온다. 그 값만 조금 다른 경우를 보자. a = np.array([[1, 0, 0]]) b = np.array([[2..
Catboost 주요 개념과 특징 이해하기 비교적 가장 최근에 등장한 Catboost 에 대해 관심이 생기던 찰나, 최근에 Medium Article 로 Catboost 를 잘 정리해놓은 글이 있어, 이를 참고하여 Catboost 에 관한 내용들을 정리해본다. (참고가 아니라 사실상 거의 번역일 거 같다...) Catboost 하면 그냥 데이터에 범주형 변수 많을 때 유용한 모델 정도로만 알고 있었는데, 이 Article 에서 개념부터 특징까지 잘 설명해주고 있으니, Catboost 에 대해 관심이 있으셨던 분들도 같이 읽어보시면 좋을 것 같다. 글의 구성은 Catboost 이 기존 부스팅 기법과 다른점 위주로 설명하면서, 이러한 다른점으로 인한 특징과 장점을 설명하는 방식이 되겠다. 1. 기존의 부스팅 기법 1.1. 방법 기존의 부스팅 기법을 ..
Categorical Value Encoding 과 Mean Encoding 이번 글에서는, 가장 인기있는 Categorical Value Encoding 을 하나씩 정리해보려고 한다. 다음의 내용을 다룬다. One-hot Encoding Label Encoding Mean Encoding 특히 마지막에 3.Mean Encoding 은 최근 Kaggler 들에 의해 많이 쓰이고 있다. 무엇이 Mean Encoding 이고, 어떻게 쓰는지, 장단점은 무엇인지 살펴본다. 한편, Mean Encoding 은 특히 Gradient Boosting Tree 계열에 많이 쓰이고 있다. 앞으로 모델 학습 성능을 말할 때, 별다른 말이 없으면 Tree 기반 모델을 두고 말하는 것이라 보면 되겠다. 글로만 설명하지 않고, 직접 눈으로 Encoding 을 확인하기 위해, Titanic Datase..
Gradient Boost 이 글은 StatQuest with Josh Starmer 의 StatQuest: Gradient Boost Part1 영상을 보고 정리한 글이다. 모든 사진과 설명에 대한 출처는 여기에 있다. 이번 글에서는, Boosting 중, 비교적 최근에 많이 쓰이는 Gradient Boost 에 대해 정리해보려고 한다. Kaggle 에서 많이보이는 XGboost 와 Light GBM 이 Gradient Boost 를 바탕으로 나온 모델이다. 사실상 현재 제일 많이쓰이는 Tree 계열의 모델을 이해하는데 기초적인 지식을 쌓는다고 볼 수 있다. 1. AdaBoost 다시 상기해보기. Gradient Boosting 은 이전에 포스팅한 AdaBoost 와 비슷한 부분이 있기 때문에, 먼저 AdaBoost 를 빠르게 ..
AdaBoost 이 글은 StatQuest with Josh Starmer 의 StatQuest: AdaBoost 영상을 보고 정리한 글이다. 모든 사진과 설명에 대한 출처는 여기에 있다. 이번에는 Boosting 기법에서 대표적이고 비교적 쉬운 개념인 AdaBoost 에 대해 정리해보려고 한다. 항상 Boosting 기법 중 가장 이해하기 쉽기도 하고, 기본 틀이 되는 느낌이라, 가장 먼저 등장하는 것 같다. 하지만 'Boosting 모델 중' 비교적 쉽다는 거지, 이전의 Bagging 모델인 Random Forest 랑 비교하면 조금 복잡하다. 따라서, 글도 매우 길어질 것 같으나... 일단 시작해보겠다. 1. 개념 1.1. Stump 잠깐, Random Forest 를 기억해보면, Random For..