전체 글 76

Attention in RNN (Bahadanau, Luong)

Attention 어느 시점 정보가 RNN의 최종 출력 값에 영향을 미치는지를 알려줄 수 있는 메커니즘 ① 각각의 hidden state가 어느 정도의 중요도를 갖는지(=attention score) 산출하는 NN ② α = attention score ③ 기존 hidden state를 그대로 가져오는게 아니라, 현재 시점의 output을 만드는데 중요하게 역할을 하는 시점이 어느 시점인지를 scalar 값으로 산출하고, 이렇게 산출된 scalar 값(α)과 hidden state 들을 선형 결합해서 하나의 vector로 표현함 → context vector Luong attention은 attention score를 따로 학습하지는 않지만, Bahdanau attention 의 성능과 크게 차이가 나지..

Ensemble model - CatBoost

Gradient Boosting Model (GBM)의 Background 마지막 행 : negative gradient는 잔차를 의미한다. 잔차를 target value로 두고 squared loss를 최소화하는 함수를 찾아내는 것. train data에 대한 t-1 시점의 함수값과 test data에 대한 t-1 시점의 함수값이 shift 된다, 다르다는 것. 같아야 통계적으로 좋은 모델이다. Gradint Boosting의 두 번째 issue Ordered TS 만약, categorical 변수의 값이 c 인게 1개 있으면, TS로 계산하면 1이 된다 이 경우를 우려하는 거다. outlier로 c가 1개 들어왔는데, TS로 계산하면 1의 값을 가지게 된다. 그래서 a와 p라는 파라미터를 사용하여 s..

Ensemble model - LightGBM

Microsoft 에서 개발 되었고, XGBoost 보다 나중에 제안된 모델 Category 변수가 많은 데이터에 대해서 상당한 효과를 보는 알고리즘이다. 데이터의 특성을 잘 살펴서, 범주형 변수가 많을 경우 LightGBM을 우선순위로 염두에 두는 것도 좋다. 그래서 XGBoost에서도 모든 데이터를 스캔하지 않고, 부분부분으로 나누어서 스캔했었다. Gradient-based One-Side Sampling (GOSS) 상대적으로 gradient가 클 수록, 많이 틀렸다는 의미이니까 걔네들에 대한 정보를 많이 반영해야함 graidnet가 작을수록 틀린 정도가 크지 않기 때문에 해당 데이터 포인트들은 다음 모델을 구축할 때 덜 중요하게 생각되어도 된다. 따라서, Large gradient를 가진 데이터는..

Ensemble model - XGBoost

XGBoost : A Scalable Tree Boosting System XGBoost는 Gradient Boosting Machine 인데, 어떻게 하면 제한된 computing resource 하에서 좀더 빠르게 더 많은 데이터를 활용할 수 있을까 고민해낸 technique 이라고 보면 된다. GBM이 가지고 있는 장점을 다 흡수했기 때문에, XGBoost를 더 많이 사용한다. XGBoost : An optimized versioni of GBM enabling GBM에 대한 opimized version. 소프트웨어적인 부분 뿐만 아니라 하드웨어적인 부분도 최적화. Split Finding Algorithm Decision tree는 위와 같이 각 변수를 오름차순 정렬한 후에, 하나씩 분기를 지정..

Ensemble model - GBM (Gradient Boosting Machine)

Random Forest와 함께 굉장히 널리 사용되는 기법 중 하나 GBM에서 파생된 중요 알고리즘 세 가지 : XGBoost, LightGBM, CatBoost Gradient Boosting = Gradient Descent + Boosting Motivation (for regression problem) (classification도 가능) 만일 회귀 모형의 잔차를 다음 단계에서 학습하는 모델을 구축한다면? 즉, 현재 모델이 못 맞춘 것 만큼만 맞추는 모델을 만들어서 결합하면 맞출 수 있는것 아닌가? 핵심 아이디어 즉, 충분히 에러값이 작아질 때까지 모델을 충분히 만들어서 합하면 되지 않나? (y=f1(x)+f2(x)+...) Adaboost는 못 맞추는 객체의 선택 확률값을 조정해서, 즉 선택 ..

Ensemble model - Adaboost (Adaptive Boosting)

Strong models v.s. Weak models Weak model이란 랜덤 모델에 비해 약간의 성능 개선이 있는 모델을 의미하며, 이 모델은 적절한 조치를 취함으로 인해 성능이 우수한 모델로 boosted 될 수 있음 Adaboost (Adaptive boosting)는 weak learner을 base learner로 사용함 Adaboost는 weak model 중에서도 stumpt tree를 사용함 stumtp tree : split을 1회만 하는 tree 그냥 DT 사용해도 된다. 어떤 알고리즘을 사용해도 가능하다. 예측하지 못한 샘플의 선택 확률만 증가시키면 되는 것. bagging은 병렬적으로 boostrap 만들고 학습 가능했다. boost 기법은 sequential하게 간다. 현재 ..

Ensemble model - Bagging

Bagging : Bootstrap Aggregating 앙상블의 각 멤버(모델)는 서로 다른 학습 데이터셋을 이용 각 데이터셋은 복원 추출(sampling with replacement) 를 통해 원래 데이터의 수 만큼의 크기를 갖도록 샘플링 개별 데이터셋을 붓스트랩(bootstrap)이라 부름 이론적으로 한 개체가 하나의 붓스트랩에 한번도 선택되지 않을 확률 즉, 하나의 붓스트랩에 약 2/3 샘플이 선택되어 들어가 있음 선택되지 않은 샘플 : Out Of Bag (OOB) 개별 모델의 분산은 높고 편향이 낮은 알고리즘 (복잡도가 높은 알고리즘)에 적절함 (인공신경망, SVM(RBF, kernel width가 작은) 등) ***** 배깅은 학습 데이터의 분포를 왜곡해서 noise를 주기 때문에, noi..

Ensemble model - 핵심 아이디어/효과, 배깅-부스팅 비교

앙상블의 목적 : 다수의 모델을 학습하여 오류의 감소를 추구 분산의 감소에 의한 오류 감소 : 배깅(Bagging), 배깅의 special case인 랜덤 포레스트(Random Forest) 편향의 감소에 의한 오류 감소 : 부스팅(Boosting) - Adaboost, GBM, XGboost, LightGBM, Catboost 등 분산과 편향의 동시 감소 : Mixture of Experts - 존재하기는 하나, 실제로 모델링할 때 control이 상당히 어려움 앙상블 구성의 두 가지 핵심 아이디어 다양성(diversity)을 어떻게 확보할 것인가? 최종 결과물을 어떻게 결합(combine, aggregate)할 것인가? 앙상블의 효과 앙상블의 다양성 Implicit : train data를 다르게 s..

Anomaly Detection - Extended Isolation Forest

Isolation Forest 첫번째 그림 : 구 형태로 등고선이 그려지는게 맞을 것 오른쪽 그림 : 정상 데이터가 없는데도 불구하고, 정상으로 판단할 수 있는 영역이 생김 마지막 그림 : sin 함수 곡선의 사이사이 모두 정상으로 판단 Extended IF 기존의 IF는 변수의 값으로 split 하기 때문에, 각 축에 대해서 수직 혹은 수평인 방향으로 split을 하게 됨 기울기를 적용하자. 기울기도 random하게 적용할 것이다. Example Standard IF : 항상 축에 수직인 직선을 이용해서 영역을 분할함 Extended IF : 분할하는 직선의 slope가 random하게 적용되어 분할 동그라미친 부분은 상대적으로 split을 많이 필요로 하는 구간이기 때문에 anomaly score가 ..