본문 바로가기

전체 글

[Imbalance Data] 불균형데이터를 극복하고 모델을 학습하는 방법 real world의 데이터를 분석하고 모델링을 하다보면, 가장 흔하게 발생하는 문제중 하나가 바로 'Imbalance Dataset'이다. 머신러닝 모델이 적절하게 학습하기 위해서는, 학습데이터가 예측하고자 하는 목적과 카테고리에 부합한 데이터가 균형있게 분포해야하고, 또 학습하기에 충분한 양을 가져야한다. 하지만 real world데이터에서는 불균형한 데이터의 사례가 매우 많다. 대표적으로 '이상거래 탐지(Fraud Detection)'를 예로들 수 있다. 횡령이나, 보이스피싱으로 발생하는 이상거래는 전체 거래중 0.1%도 되지않아, 대표적인 데이터불균형 사례로 꼽힌다. 이런 과제의 경우, 모델을 개발하고 정확도를 높이기 이전에, 불균형 데이터를 어떻게 처리할 것인지가 관건이 된다. 오늘은 이러한 불.. 더보기
[행렬곱/행렬과 벡터의 곱]행렬곱이 딥러닝이랑 무슨 관계이길래? 딥러닝을 공부하다보면 모든 계산에 행렬곱 공식이 포함되어있는것을 볼 수 있다. 딥러닝의 neural network은 모두 행렬곱을 기반으로 계산 된다는데, 도대체 어떻게 계산되는건지, 한번 자세하게 알아보자. 먼저, 행렬곱을 알아보기전에 행렬곱이라는 개념이 포함된 '선형대수학'을 간단히 정리해보면 아래와 같다. 선형대수학(線型代數學, 영어: linear algebra)은 벡터 공간, 벡터, 선형 변환, 행렬, 연립 선형 방정식 등을 연구하는 대수학의 한 분야이다. 현대 선형대수학은 그중에서도 벡터 공간이 주 연구 대상이다. 즉, 행렬곱은 선형대수학의 주 연구대상인 벡터공간에서 '선형변환'(벡터공간의 모든 벡터를 다른벡터로 매핑함)을 표현하는 역할을 한다. 여기서, 행렬곱이 벡터공간에서 '선형변환'을 수행.. 더보기
[AutoML] AutoGluon으로 빠르게 여러 ML모델들을 비교 테스트해보자! ML 프로젝트를 진행할때, 가장 많은 시간이 소요되는 스텝을 꼽아본다면, 아래 과정들을 떠올릴 수 있다. 1) 데이터 전처리 2) 최적의 성능을 담보할 수 있는 model Architecture를 테스트하고 확정하는 과정 * AutoML이 많은 사용자들에게 관심받기 시작한 것도, 바로 이러한 과정을 자동화해야할 필요가 있었기때문이다. ...현실의 머신러닝 모델링은 문제 정의 과정에서부터 데이터 수집, 전처리, 모델 학습 및 평가를 거쳐 서비스 적용에 이르기까지에는 여러 분야 전문가들의 많은 시간과 노력이 요구된다. AutoML은 머신러닝을 적용 할 때 마다 이러한 과정을 되풀이하면서 발생하는 비효율적인 작업을 최대한 자동화하여 생산성과 효율을 높이기 위하여 등장하였습니다. 특히, 데이터 전처리 과정에서부.. 더보기
[Pytorch Profiler]파이토치 프로파일러를 통해 모델 성능 모니터링하기! 보통 PoC단계의 모델개발에서 실제 프로덕트단으로 넘어가는 과정에서 반드시 고려해야할 사항들이 있다. 바로 모델의 속도와 리소스이다. 프로덕트단에서 서비스로서 제공되는 모델은 정확도는 기본이고, 유저의 이벤트에 빠르게 반응해야하며, 대규모의 트래픽에도 운용될 수 있는 적은 리소스로 운용될 수 있어야한다. 이를 위해서는 모델 개발환경에서부터 모델의 성능, 속도, 리소스에 대한 모니터링과 함께 반복적인 개선작업이 수반되어야한다. 오늘은 내 모델의 속도와 리소스에 대해 모니터링 할 수 있는 Pytorch Profiler를 활용하기 위해 진행한 튜토리얼 과정에 대해 정리해보려 한다. 1. Profiler? 먼저 프로파일러의 개념에 대해서 잠깐 이해해보도록 하자. 프로파일러는 "머신러닝 모델의 학습과 실행 과정에.. 더보기
[ML 확률과 통계] 확률 변수와 확률 분포 오늘은 '확률 변수' 와 '확률 분포'에 대해서 정리해보도록 하자. 확률에 대해서 이해하기 위해서는 먼저 시행(trial)과 사건(event)를 이해해야한다. 예를들어, 주사위를 던져서 특정 눈금값을 구한다 라는 행위를 할때, 주사위를 던지는 행위는 '시행(trial)'이라고 할 수 있고, 그 결과로 나온 눈금값이 나온 결과를 '사건(event)'라고 정의할 수 있다. 즉, '확률'이라는 것은 '어떤 사건이 일어날 가능성'을 수치로 표현한 것이다. 첫번째 알아볼 개념 : 확률변수(Random Variable)와 확률 함수 확률변수란 '시행(trial)할 때마다 변할 수 있는 값'을 의미한다. 그리고 '확률 함수'란 각 확률변수에 따라서 '확률 값'을 부여하는 함수를 의미한다. 이때, 확률함수는 일반적으로.. 더보기
[ML 확률과 통계] 순열과 조합 오늘부터, 통계의 중요한 요점들에 대해서 공부하고 정리해보려한다. 가장 기본적인 통계 개념부터 부터 가볍게 지나치지않고 상세하게 정리해가보도록 하자. 먼저, 확률이란? 확률이란, 특정한 사건이 일어날 가능성을 수로 표현한것을 의미한다. 그리고, 확률은 0부터 1사이의 실수로 표현되는데, 어떤 사건에 대해 수치표현을 통해 객관적이고 합리적인 의사결정을 할 수 있는 근거가 된다. 기계학습 모델을 확률적으로 이해해보자 우리는 N개의 학습 데이터로 기계학습 모델을 학습한다. 이때, 일반적으로 기계학습 모델의 출력은'확률'형태를 띤다. ex) image classification model 'θ'가 이미지 x에 대해서 0.75의 확률로 '고양이'일것이라고 예측했다.ex) text generation model '.. 더보기
Drift를 감지하는 방법 (2) Concept Drift Detection (+ADWIN, Page-Hinkley Test, CUSUM, DDM) 오늘은 concept drift를 detectioin하는 여러가지 방법론들을 살펴보려한다. 'concept drift'는 시간이 지남에 따라 모델에 input되는 데이터의 통계적 특성이 달라지거나, feature와 label간의 관계가 달라질때 model의 성능이 저하되는 경우를 일컫는다. concept drift가 data drift에 비해 갖는 특징중 하나는, 모델의 도메인에 따라 중요성이 달라질 수 있다는 것이다. 가령, 얼굴인식 또는 STT, TTS, 언어모델과 같은 경우에는 데이터의 특성이 달라지지 않기 때문에 concept drift가 발생할 확률이 낮다. 하지만, 그 외 과제를 해결하기 위한 예측모델의 경우 데이터 분포나 feature와 label의 관계에 변화가 생기는 concept dr.. 더보기
Drift를 감지하는 방법 (1) Data Drift Detection 지난 포스팅에서는 Model Drift의 개념과 발생원인에 대해서 정리해보았다. > Model Drift의 개념과 원인 (+ Data Drift, Label Drift, Concept Drift) https://familia-89.tistory.com/69 잠깐 리마인드해보자면, model drift가 발생했을때, 가장 대표적인 원인으로는 data drift, label drift, concept drift를 꼽을 수 있었다. data drift는 학습당시의 데이터분포와 프로덕트단에서 input되는 데이터의 분포가 상이할 때 발생하는 성능 저하 현상이다. label drift는 target데이터 분포가 학습당시와 프로덕트 단에서 차이가 있을 경우, 발생하는 성능 저하 현상이다. 마지막으로, concept.. 더보기