오늘 할 일: 끝내주게 숨쉬기
article thumbnail
[모니터링] 1) model drift의 개념과 원인(data drift, label drift, concept drift)

들어가며 머신러닝 프로젝트을 수행할 때 성능이 좋은 모델을 개발하고 배포했다고 해서 할 일이 다 끝난 것은 아닙니다. 배포한 모델이 잘 돌아가고 있는지, 예상한대로 결과를 주고 있는지 관찰하는 "모니터링"은 유지보수를 위해 필수적인 과정이죠. 본 포스트에서는 머신러닝 모델을 모니터링할 때 사용하는 "드리프트(drift)"라는 개념과 그 원인에 대해 알아보겠습니다. 모델 드리프트 우리가 개발한 머신러닝 모델이 항상 완벽한 데이터를 입력으로 받지는 않습니다. 모델을 개발할 때 수행하는 여러 전처리 과정들을 생각하면 바로 이해가 되죠. 이런 전처리를 수행하고도 완전히 비어있거나 불완전하거나 혹은 개발 때 학습하지 못했었던 데이터들이 들어올 수도 있습니다. 데이터 엔지니어링 절차에 문제가 없었고 데이터가 만들어..

article thumbnail
[metric] 군집분석 평가 지표 1: 실루엣 계수(Silhouette Coefficient)

군집분석과 실루엣 계수 군집분석(Clustering)은 범주형 타겟에 대한 사전 정보가 없는 경우, 전체를 몇 개 군집으로 그룹화하여 각 군집의 특징을 파악하는 분석 방법론입니다. 그룹화를 수행할 때는 주어진 관측값들 사이의 거리 또는 유사성을 이용합니다. 동일한 군집에 속하는 데이터는 특징이 서로 비슷하고, 서로 다른 군집에 속한 데이터는 그렇지 않도록 구성해야 합니다. 군집분석에 사용되는 대표적인 알고리즘으로는 KMeans, DBSCAN이 있습니다. 일반적인 회귀나 분류 문제의 경우 타겟이 명확하게 존재하는 비지도 학습으로, 모델의 결과와 그 타겟을 비교하여 모델의 성능을 평가할 수 있습니다. 하지만 군집분석의 경우 비지도 학습으로, 비교할 수 있는 타겟이 존재하지 않습니다. 다행히 군집화가 효율적으..

article thumbnail
RFE와 REFCV: 유의미한 변수를 선택하는 방법

머신러닝으로 타겟을 예측하기 위해 수십, 수백개의 변수를 준비했습니다. 이 많은 변수들을 전부 머신러닝에 인풋 변수로 넣으면 최고의 성능이 나올까요? 항상 그렇지는 않습니다. 타겟과 연관성이 높은 변수도 있지만, 그 중에는 타겟을 예측하는 데에 혼선을 주는 변수들도 있을 수 있기 때문입니다. 게다가 입력변수가 너무 많으면 학습하는 속도도 느려지겠죠. 수집한 많은 변수들 중, 타겟을 예측할 때 유의미하게 사용될 수 있는 변수들을 분석가가 하나씩 살펴보며 취사선택할 수도 있지만 변수가 너무 많은 경우는 수작업이 어렵습니다.. 이때 사용하는 방법으로는 RFE(Recursive Feature Elimination)이 있습니다. RFE (Recursive Feature Elimination) RFE는 변수 선택 ..

article thumbnail
이진분류 모형평가 방법: confusion matrix와 정확도, 재현율, 정밀도, F1 score

이진분류(binary classification)는 클래스가 0일지, 혹은 1일지를 맞추는 문제로, 실제 클래스와 예측 클래스의 조합에 따라 이진분류 모델의 성능을 정량화할 수 있습니다. 그 조합을 표로 나타낸 것을 혼동 행렬, 오차 행렬 또는 정오분류표(confusion matrix)이라고 하는데요. 아래와 같이 각 조합에 따라 실제 양성, 실제 음성, 거짓 양성, 거짓 음성으로 분류할 수 있습니다. 예측 클래스 Positive Negative 실제 클래스 Positive TP (True Positive) FN (False Negative) Negative FP (False Positive) TN (True Negative) TP(True Positive) 모델이 positive라고 예측했는데, 실제로..

article thumbnail
배치 학습(오프라인 학습)과 온라인 학습 비교

머신러닝은 입력 데이터의 스트림(stream)으로부터 점진적으로 학습할 수 있는지에 따라 배치학습 또는 온라인학습으로 분류될 수 있습니다. 아래에서 각각에 대해 알아보겠습니다. 1. 배치 학습(Batch Learning) = 오프라인 학습 시스템이 점진적으로 학습할 수 없는 학습입니다. 이용 가능한 데이터를 학습할 시점에 모두 사용하여 훈련시켜야 합니다. 시간과 자원을 많이 소모하므로 보통 오프라인에서 수행됩니다. 모델을 훈련시키고 적용하면 더 이상의 학습없이 실행됩니다. 새로운 데이터에 대해 학습하려면 새로운 데이터뿐만 아니라 이전 데이터도 모두 포함한 전체 데이터를 사용해 처음부터 다시 학습시켜야 합니다. 데이터를 업데이트하고 시스템의 새 버전을 서비스 운영에 필요한 만큼 자주 훈련시키면 됩니다. 다..

article thumbnail
[MLOps] 2) ML의 생애주기와 구성요소

지난 MLOps 개념에 이어 이번 포스팅에서는 ML 생애주기를 알아보겠습니다. ML 프로젝트는 모델을 만드는 것만이 전부가 아닙니다. 가장 먼저 문제를 정의하는 과정이 필요하고, 데이터를 정의/수집/준비하는 과정을 진행합니다. 이후 모델을 어떻게 만들 것인지 살펴보게 되고, 모델이 만들어지면 평가를 하고, 이걸 서비스로 만드는 것입니다. 모델이 만들어지면 운영으로 올라갔다고 끝나지 않습니다. 지속적으로 서비스를 모니터링하고, 다시 루프를 돌아 재학습을 하고 재배포를 하는 일련의 과정 전체가 MLOps를 이루는 것이죠. ML 생애주기는 크게 3단계로 구성되어 있습니다. 데이터 준비 실험과 학습 배포와 서빙 각 단계마다 차근차근 구성요소를 알아보겠습니다. 1. 데이터 준비 데이터 준비는 데이터 가져오기, 데..

article thumbnail
[MLOps] 1) MLOps의 개념

머신러닝은 데이터의 숨어잇는 패턴을 감지하여 함수(모델)로 나타내고 미래 사건을 예측하는 알고리즘입니다. 그렇다면 머신러닝 프로젝트는 예측을 잘하는 모델을 만드는 것이 전부일까요? 그렇지 않습니다. 흩어져있는 데이터들을 어떻게 가져올 것이며, 그 중 어떤 데이터들을 가져올 것인지, 어떻게 가공할 것인지, 모델은 어떻게 만들고 평가는 어떤 방식으로 할지, 모델을 만든 뒤에는 서비스로 어떻게 연결할 것인지까지 모두 머신러닝 프로젝트에서 고민해야 되는 문제입니다. MLOps는 머신러닝 모델 자동화 프로세스로, 우리가 만든 모델이 실제 서비스로 이어질 수 있도록 해주는 파이프라인입니다. 본 포스팅에서는 MLOps가 무엇인지, 역할과 중요성에 대해 알아보겠습니다. MLOps(Machine Learning Oper..

article thumbnail
[추천시스템] 4) 협업필터링 - 이웃기반 협업필터링

지난 추천시스템 3편에서는 컨텐츠 기반 필터링에 대해 알아보았습니다. 컨텐츠 기반 필터링은 아이템의 정보를 이용하여 과거에 사용자가 좋아했던 아이템과 유사한 다른 아이템을 추천하는 방식이죠. 본 포스팅에서는 컨텐츠 기반 필터링과 함께 널리 쓰이는 추천시스템인 협업필터링, 그 중 이웃기반 협업필터링에 대해 알아보겠습니다. 협업필터링(Collaborative Filtering) 먼저 협업 필터링이 무엇인지 다시 떠올려보겠습니다. 협업 필터링의 정의는 추천시스템 2편에서도 다룬 적이 있었는데요, '특정 상품에 대한 선호도가 유사한 고객들은 다른 상품에 대해서도 선호도가 비슷할 것이다’ 라는 가정하에 사용자의 아이템 평가 데이터를 이용해 비슷한 선호도를 갖는 다른 사용자가 선택한 아이템을 추천하는 방식을 협업 ..

article thumbnail
imblearn 모듈을 이용한 불균형 데이터 다루기

머신러닝에서 분류 문제를 다룰 때 가장 먼저 데이터의 분포를 확인하죠. 타겟이 두가지 범주를 갖는지(-> binary classification), 세 개 이상의 범주를 갖는지(-> multi-class classification), 하나의 데이터가 여러가지 범주를 동시에 가질 수도 있는지(-> multi-label classification) 살펴봅니다. 그리고 각 범주가 전체의 몇 퍼센트를 차지하고 있는지 비율을 살펴봅니다. 전체 자산 중에 부동산이 50%이고 주식이 30%, 그리고 현금이 20%를 차지한다! 이런 식으로요. 각 범주의 비율이 균일하게 나올 수도 있지만, 현실의 많은 데이터들은 불균형한 비율을 갖고 있습니다. 예를 들어 회원들에게 쿠폰을 주는 앱푸시를 보냈는데 그 알람을 누른 회원은 ..

article thumbnail
[시각화] subplots와 반복문을 이용하여 그래프 여러개 그리기

데이터를 파악하기 위해서는 시각화가 필수입니다. 데이터가 어떻게 생겼는지 확인하기 위해 여러 그림을 그리다보면 한번에 그리고 싶을 때가 있죠. 본 포스팅에서는 matplotlib의 subplots 함수와 seaborn 라이브러리를 이용하여 그래프를 한번에 여러개 그려보도록 하겠습니다. 먼저 필요한 라이브러리들과 데이터를 불러옵니다. 데이터는 캐글에서 가져온 HR 자료를 사용했습니다. import pandas as pd import numpy as np import seaborn as sns import matplotlib.pyplot as plt df = pd.read_csv('./data/HR_comma_sep.csv') display(df.shape, df.head()) 위 데이터로부터 부서(Depa..

반응형