본문 바로가기

ML

불균형 데이터 모델링을 하다보면 라벨 비율이 한쪽으로 치우친 불균형 데이터를 자주 마주하게 된다.예를 들어 전체 데이터의 95%가 '0'이고 5%만 '1'이라면, 모델은 대부분의 경우 0이라고 예측해도 정확도가 높게 나올 것이다. 하지만 실제로 중요한 건 소수 클래스, 즉 1을 놓치지 않고 잘 맞추는 능력이다. 이럴 때 사용할 수 있는 대표적인 방법이 SMOTE, ADASYN, 그리고 Class Weight이다. 1. SMOTE SMOTE는 Synthetic Minority Over-sampling Technique의 약자로, 소수 클래스 근처의 데이터를 보간해서 새로운 샘플을 만들어내는 방식이다. 즉, 단순히 데이터를 복제하는 것이 아니라 원본 데이터와 유사한 새로운 데이터를 생성해 클래스 비율을 맞춘다. 데이.. 더보기
운영 환경에서 ML 모델 검증하기 머신러닝 모델은 학습 환경에서 높은 성능을 보여도, 실제 운영 환경에서는 예상치 못한 변수로 인해 기대만큼의 효과를 내지 못하는 경우가 많습니다. 따라서 모델을 안전하게 배포하고 효과를 검증하는 과정은 필수적입니다. 이 글에서는 섀도 배포, A/B 테스트, 카나리 릴리즈, 인터리빙 실험, 멀티 암 밴딧 등 대표적인 온라인 실험 기법들을 소개하고, 각각의 특징과 활용 상황을 정리했습니다. 1. 섀도 배포 (Shadow Deployment)섀도 배포는 새롭게 개발한 모델을 운영 환경에 실제로 배포하되, 그 결과는 사용자에게 노출하지 않고 백엔드에서만 실행하는 방식이다. 즉, 동일한 입력을 기존 모델과 신규 모델이 동시에 받아서 처리한 뒤, 기존 모델의 결과는 사용자에게 제공하고, 신규 모델의 출력은 내부.. 더보기
코드 작성 시 주의 사항 1. 전반적인 사항들- 코드 돌리기 전 데이터 흐름 생각 해보기- 재활용 여부를 기준으로 시간-퀄리티 Trade-Off 생각하며 코드 짜기 2. 함수 생성- 함수명은 동사로- 함수기능 / Input / Output 에 대한 설명을 주석처리 해주기- Input/Output 자료형 명시해주기 3. 솔루션 관점- UI에서 사용자 Input으로 받는 값들은 함수의 Input으로 넣어줘야함- 동일한 기능이라고 해도 선택하는 값에 따라 UI가 변화한다면 다른 함수로 구현 더보기
MySQL 함수 정리 1. SELECT문에 사용할 수 있는 함수1) 조건에 따라 다른 값- IFNULL(컬럼명, 대체값) AS 컬럼명- IF(조건, TRUE일때값, FALSE일때값) AS 컬럼명- CASE WHEN 조건 THEN TRUE일때값 ELSE FALSE일때값 END AS 컬럼명 2) 집계함수- AVG() : 평균- RANK () OVER (PARTITION BY 컬럼 ORDER BY 컬럼) AS (DENSE_RANK:중복순위이어서, RANK:중복순위뛰어넘음, ROW_NUMBER:중복순위없음) 3) 가공함수- ROUND(컬럼) : 반올림- TRUNCATE(컬럼, 버림할 자릿수) : 버림- FLOOR(컬럼) : 버림- CEIL(컬럼) : 올림 2. 날짜 관련- DATE_FORMAT(날짜,'%Y-%m-%d') .. 더보기
파일 불러오기 1. 폴더 내 특정 확장자 파일 모두 불러오기# 패키지 불러오기import globimport pprint# SettingsPATH = './data/' # 경로 설정EXT = 'xlsx' # 확장자 설정# 파일 불러온 후 확인하기filenames = glob.glob(f"{PATH}*.{EXT}")pprint.pprint(filenames)# 데이터프레임 한 개로 합치기df = pd.DataFrame()for file in filenames: df = pd.concat([df, pd.read_excel(file)])df = df.reset_index(drop=True)df.head() 더보기
파이썬 라이브러리 설치 여부 및 버전 확인 이 글에서는 간단한 명령어와 코드로 설치된 라이브러리를 확인하고, 원하는 라이브러리의 버전까지 체크하는 방법을 정리해 보았습니다. 1. 현재 설치된 라이브러리 확인하기bash# 설치 된 라이브러리 전체를 출력pip freeze# 특정한 라이브러리만 확인하는 방법pip freeze | grep [라이브러리]# (예) pandas 설치되었는지 확인pip freeze | grep pandas 2. 라이브러리 버전 확인하기pythonimport 라이브러리명라이브러리명.__version__ #언더바(_)2개씩# (예) pandas 라이브러리 버전 확인import pandaspandas.__version__ 더보기
Python 코딩 테스트 Cheat Sheet 이 글은 제가 직접 문제를 풀면서 정리한 파이썬 치팅 시트입니다.저처럼 코테를 준비하는 분들께 작은 도움이 되었으면 합니다 :) 1. 숫자형 자료1) 반올림, 올림, 버림- 버림 : int - 반올림 : round - 올림 : math.ceil, np.ceil 모두 사용 가능 2) 분수 계산from fractions import Fractiondef solution(numer1, denom1, numer2, denom2): n1 = Fraction(numer1, denom1) n2 = Fraction(numer2, denom2) n = n1+n2 answer = [n.numerator, n.denominator] return answer [참고 링크] 분수로 분수(유.. 더보기
XGBoost (eXtreme Gradient Boosting) 1. XGBoost란 (eXtreme Gradient Boosting)- 앙상블 학습 중 부스팅(Boosting)에 속하는 대표적인 알고리즘- GBM에 기반하여 예측 성능이 뛰어난 편- GBM보다 학습 속도가 빠름 (병렬 CPU 학습 가능하기 때문)- GBM보다 과적합에 강한 편임 (과적합 규제 기능이 있기 때문)- 하이퍼 파라미터 튜닝에 아주 약한 편은 아니지만, 과적합 문제를 조심해야 함 ★ 참고사항 ★Python에서는 'xgboost' 패키지를 사용하여 XGBoost 알고리즘을 사용할 수 있으며, 'xgboost' 패키지에는 다음과 같은 두 종류의 래퍼 클래스(Wrapper Class)가 있습니다. 1) 독자적인 방식으로 XGBoost 알고리즘을 사용할 수 있는 래퍼 클래스 (▶이하 'XGB.. 더보기