본 포스팅은 한빛미디어의 [머신러닝 시스템 설계] Chapter 7을 읽으면서 모델 배포 관련 내용을 정리한 글입니다. 머신러닝 모델을 배포하는 것은 ‘어려운 부분을 모두 무시하면’ 매우 간단하다. Flask나 FastAPI를 통해 POST 요청 엔드포인트로 예측 함수를 래핑하고, 예측 함수가 컨테이너에서 실행하는 데 필요한 종속성 패키지들을 배치한다. 그리고 모델 및 관련 컨테이너를 AWS나 GCP 같은 클라우드 서비스에 푸시해 엔드포인트를 노출하면 된다. 엔드포인트란? 사용자가 요청(입력 데이터)을 보내고 ML 모델의 추론 결과값을 수신하는 인터페이스(ex. HTTPS)를 제공하는 엔트리포인트 URL # FastAPI를 사용해 예측함수를 POST 엔드포인트로 변환하는 방법 예시 @app.route('..
데이콘에서 대회를 참여하다 보면 규칙 중에 Data Laekage 부정행위가 있다. 머신러닝을 공부하며 대회에 처음 참가하는 초보자 입장에서는 이게 무엇을 의미하는지 잘 모를 수 있다고 생각한다. (필자가 그랬기 때문이다..) 따라서 이 Data Leakage라는 부정행위에 대해 알아보고자 한다. Data Leakage란? Data Leakage는 train data 외의 정보가 모델을 만드는데 사용될 때 발생한다. 이러한 추가적인 정보를 통해 모델은 다른 방법으로는 알지 못하는 무언가를 배우거나 알 수 있으며, 생성되는 모델의 예측 성능을 무효화할 수 있다. 결론적으로 Data Leakge로 인해 엉뚱한 모델이 만들어지고, 이는 곧 해석이 무의미해짐을 의미한다. 간단하게 말하자면, test 데이터의 개..
Correlation Analysis 상관분석은 확률론과 통계학에서 두 변수 간에 어떤 선형적 관계를 갖고 있는지를 분석하는 방법이다. 두 변수는 서로 독립적인 관계로부터 서로 상관된 관계일 수 있으며, 이때 두 변수 간의 관계의 강도를 상관관계라고 한다. 상관관계의 정도를 나타내는 상관계수(Correlation coefficient)는 두 변수 간의 선형관계를 나타낼 뿐 인과관계를 설명하는 것은 아니다. Feature Importance feature importance는 트리기반 모델에서 사용된다. 즉 중요도를 구분하는 데에 트리의 분할과 밀접한 관련이 있다는 말이다. 쉽게 생각하면 특정 feature가 트리를 분할하는데 얼마나 기여를 했는지에 따라 중요도가 결정되는 것이다. 트리가 분할하는 원리는 ..
데이콘 대회를 진행하던 중 전처리 과정에서 피처 스케일링에 대한 의문점이 들었다. 주어진 데이터셋의 각 칼럼의 값들이 굉장히 넓은 범위를 가지고 있고, 회귀 분석을 할 것이기에 단순히 스케일링을 해줘야겠다고 생각했다. 하지만 스케일링을 진행한 모델의 성능과 진행하지 않은 모델의 성능이 동일했다. (모델링의 문제일 수도 있다) 이렇게 된 이유를 곰곰히 생각해보니 내가 사용한 모델은 Tree 기반의 XGBoostRegressor, CatBoostRegressor이었기 때문에 스케일링의 영향을 받지 않은 것 같다는 생각을 했다. 따라서 피처 스케일링에 대한 개념을 다시 제대로 정리하고자 이 포스팅을 쓴다. 피처 스케일링이란? 서로 다른 변수의 값 범위를 일정한 수준으로 맞추는 작업 피처 스케일링의 대표적인 방..
머신러닝(Machine Learning)의 개념은 다양하게 표현할 수 있으나, 일반적으로는 애플리케이션을 수정하지 않고도 데이터를 기반으로 패턴을 학습하고 결과를 예측하는 알고리즘 기법을 통칭한다. 현실 세계의 매우 복잡한 조건으로 인해 기존의 소프트웨어 코드만으로는 해결하기 어려웠던 많은 문제점들을 이제 머신러닝을 이용해 해결해 나가고 있다. 업무적으로 복잡한 조건/규칙들이 다양한 형태로 결합하고 시시각각 변하면서 도저히 소프트웨어 코드로 로직을 구성하여 이들을 관통하는 일정한 패턴을 찾기 어려운 경우에 머신러닝은 훌륭한 솔루션을 제공한다. 머신러닝 알고리즘은 데이터를 기반으로 통계적인 신뢰도를 강화하고 예측 오류를 최소화하기 위한 다양한 수학적 기법을 적용해 데이터 내의 패턴을 스스로 인지하고 신뢰도..