ml
Cross Learning
Cross Learning Cross Learning M5 accuracy competition: Results, findings, and conclusions, 4.2의 Finding 3을 참고 교차 학습이란 여러 모델 대신 단일 모델을 사용하는 것을 의미 각 모델은 다른 종류의 데이터를 사용해서 훈련 전체 계산 비용 절감 가능 M5 competition에서는 데이터가 교차 학습을 적용하기도 쉬웠고, 실제로 적용을 통해 우수한 결과를 달성함 References M5 accuracy competition: Results, findings, and conclusions
read moreml
RMSSE
RMSSE RMSSE Root Mean Squared Scaled Error의 약자, 주로 time-series forecasting에서 metric으로 사용 MAPE, SMAPE는 스케일링할 때 과대, 과소추정에 따른 패널티가 다름 RMSSE는 스케일링 시 분모에 예측 값이 아닌 실제 값을 활용 과대, 과소 추정에 따른 패널티가 없음 Last value prediction인 naive forecasting 방법을 수행하면, 이 값이 정확히 1이 나옴 1이라는 기준 값이 존재하기 때문에, 비교적 비교하기 수월 References https://pseudo-lab.github.io/Tutorial-Book/chapters/time-series/Ch1-Time-Series.html
read moreml
Data Distribution Shift
Data Distribution Shift Data Distribution Shift 지도 학습에서 모델이 동작하는 데이터가 시간에 따라 변하는 현상 데이터 분포가 달라지므로, 모델의 성능이 갈수록 감소 다음과 같은 유형 존재 공변량 시프트 레이블 시프트 개념 드리프트 공변량 시프트 (Covariate Shift) 입력의 분포가 변함 그러나 같은 입력에 대한 출력의 분포는 동일 데이터 선택 프로세스에 편향이 생기는 경우 이럴 수 있음 예를 들어 검사를 받으러 오는 사람들은 대부분 아픈 사람임 이 데이터로 훈련한 결과를 모든 사람에 대해 적용하면 안됨 레이블 시프트 (Label Shift) 출력의 분포가 변함 출력에 대한 입력의 분포는 동일 효과적인 치료약이 나와서, 전체적인 환자의 확률이 감소했다고 가정 이 경우 출력 분포만 변한거지, 입력 데이터의 분포가 변한 것은 아님 개념 드리프트 (Concept Drift) 입력의 분포는 동일 그러나 입력에 대한 출력의 분포는 변함 간단한 예로 코로나 전과 후의 비행기 표 가격이 될 수 있음 계절성을 띄는 데이터에서도 해당이 됨 기타 데이터 분포 시프트 피처가 제거되거나 피처의 범위가 변화하는 경우 레이블의 스키마 (ex: 문자열 값에 해당하는 정수값 등) 자체가 변화하는 경우 감지 방법 모델의 정확도 관련 지표(정확도, F1, 재현율 등)를 확인해서 데이터 분포 시프트를 감지 가능 두 분포가 다름을 확인하기 위해서 통계적 방법을 사용할 수도 있음 시간에 따라 분포가 달라졌는지 확인하기 위해, 시간 척도 윈도우를 사용 가능 윈도우를 너무 작게 잡으면, 시프트가 일어나지 않아도 시프트가 일어났다고 착각 가능 해결 방법 대부분의 기업은 데이터 시프트 정도와 상관 없이 모델을 주기적으로 재훈련 모델을 처음부터 다 재훈련하기는 힘드므로, fine-tuning을 수행할 수도 있음 당연히 시스템 자체를 시프트에 강건하게 설계하는 방법도 존재 성능을 조금 포기하더라도, 결과를 범주로 묶어서 안정성을 높이는 방법 존재 References 칩 후옌 - 머신러닝 시스템 설계
read moreml
Gradient Boosting
Gradient Boosting Gradient Boosting Boosting에 Gradient Descent를 합친 방법 Boosting 방법으로 weight가 아닌 함수를 근사 잔차를 줄이는 방향으로 학습하며, overfitting을 방지하기 위해 learning rate l을 둠 잔차가 h(x)라면, F_m(x) = F_m-1(x) + lh_m(x) 가 되는 셈 이외에도 Gradient Boosting은 subsampling, early stopping, shrinking 등으로 overfitting을 방지 LightGBM, XGBoost 등이 Gradient Boosting의 대표적인 모델 예시
read moreml
AdaBoost
AdaBoost AdaBoost Boosting의 초기 알고리즘 중 하나로, 틀리게 예측한 데이터에 대해 더욱 큰 가중치를 부여하는 방법 반대로 맞은 데이터에 대해서는 작은 가중치를 부여해서, 다음 모델이 틀린 데이터에 대해 더 잘 맞추도록 함 각 모델이 틀린 정도를 바탕으로, 모델의 중요도를 계산 각 모델의 중요도의 weighted sum을 수행해서, 최종 모델을 완섬 References https://yngie-c.github.io/machine%20learning/2021/03/20/adaboost/
read moreml
Gradient Boosting
Gradient Boosting Gradient Boosting Gradient 혹은 Residual을 통해 이전 모형의 약점을 보완하는 Boosting 방법 F_1 (x) 라는 함수와 실제 정답의 차이를 통해 h_1 함수를 학습하고, 이를 통해 F_2 = F_1 + h_2를 만듦 이 과정을 반복하고, h들은 의사결정 나무등의 모델이 될 수 있음 최종 F_M이 우리가 원하는 모형 실제 F를 찾기는 굉장히 어려우므로, 여러 함수의 선형 결합을 이용해 찾는 것 이 과정에서 Gradient Boosting은 h를 최소화 함에 있어 gradient descent를 사용 직접 손실 함수를 직접 미분하는 것이 아닌, 손실 함수의 Taylor 근사를 이용 References https://zephyrus1111.
read moreml
PySpark withColumn
PySpark withColumn PySpark withColumn pyspark에서는 withColumn이라는 메소드를 통해, 새 컬럼을 만들거나 기존 컬럼을 수정 가능 df = df.withColumn() 형태로 사용 첫 번째 인자로 추가 / 수정할 컬럼의 이름, 두 번째 인자로 컬럼을 제공하면 됨 이 메서드는 특정 열만 선택하는 projection이라는 방법을 쓰는데, 이 때문에 이 메서드를 여러 번 반복 호출하면 (e.g. for loop) 성능이 저하될 수 있음 References https://spark.apache.org/docs/3.1.3/api/python/reference/api/pyspark.sql.DataFrame.withColumn.html
read moreml
PySpark 소개
PySpark 소개 PySpark 소개 Apache Spark를 위한 파이썬에서 사용할 수 있게 한 API 파이썬 분산환경에서 큰 데이터를 빠르게 사용할 수 있게 함 다음과 같은 Spark의 주요 기능 제공 Spark SQL과 DataFrame으로 구조화된 데이터 다루기 Pandas API로 Pandas 작업을 여러 노드에서 수행 가능 Structured Streaming으로 stream 작업 머신러닝 (MLlib) 제공 Spark Core과 RDD 제공 References https://spark.apache.org/docs/latest/api/python/index.html
read moreml
좋은 피처 설계
좋은 피처 설계 좋은 피처 설계 피처가 많다고 항상 좋은 것이 아님 오히려 피처가 많을 수록 데이터 누수 가능성 및 과적합 가능성이 높음 메모리가 많이 소요되며, 레이턴시가 증가함 쓸모없는 피처는 결국 기술 부채로 이어짐 모델에 대한 피처의 중요도와 본 적 없는 데이터의 일반화가 중요 피처 중요도를 잘 측정하기 측정하는 가장 좋은 방법은 XGBoost의 내장 피처 중요도 함수를 이용하는 것 상위 n개의 중요한 피처만 사용하면 효율을 높일 수 있음 피처 일반화하기 본 적 없는 테스트 데이터에 대해 정확한 예측이 중요하므로, 일반화 성능이 중요 Coverage(피처 값의 존재 비율)가 높을 수록 좋음 훈련 데이터에 나타나는 피처의 분포와, 테스트 데이터에 나타나는 피처의 분포가 동일해야 함 References 칩 후옌 - 머신 러닝 시스템 설계
read more