본문 바로가기
728x90
반응형
SMALL

Learning-driven Methodology112

[Machine Learning] 앙상블 (Ensemble) 앙상블 (Ensemble) 여러 개의 알고리즘들이 이용하여 하나의 값을 예측하는 기법을 통칭하며, 대중적인 데이터 분석 알고리즘이다. 선형 회귀나 로지스틱 회귀는 가장 대중적인 알고리즘이고, 그 다음이 의사결정 트리와 앙상블 계열 알고리즘이다. 최근 머신/딥러닝 분야에서 딥러닝 다음으로 부스팅 (boosting) 알고리즘이 핵심적으로 사용된다. 메타 분류기 (meta-classifier)라고도 부른다. 메타 (meta)는 일종의 상위 또는 추상화라는 개념이다. 여러 분류기들을 모아 하나의 분류기를 만들어 이를 메타 분류기라고 부른다. 시간이 많이 소요되지만 비교적 좋은 성능을 낸다. 하나의 데이터를 넣고 이를 여러 모델에 학습시킨다. 테스트 데이터를 각 모델에 입력하고 투표 또는 여러 가중치 기법을 적용.. 2022. 10. 4.
[Machine Learning] LightGBM LightGBM LightGBM은 GBM 계열의 트리 분할 방법과 다르게 리프 중심 트리 분할 방식을 사용한다. 기존의 대부분 트리 기반 알고리즘은 트리의 깊이를 효과적으로 줄이기 위한 균형 트리 분할 방식을 사용한다. 리프 중심 트리 분할은 트리의 균형을 맞추지 않고, 최대 손실 값을 가지는 리프 노드를 지속적으로 분할하면서 트리의 깊이가 깊어지고 비대칭적인 규칙 트리가 생성 된다. 예측 오류 손실을 최소화 할 수 있다. LightGBM의 특징 더 빠른 학습과 예측 수행 시간 더 작은 메모리 사용 카테고리형 피처의 자동 변환과 최적 분할 대용량 데이터에 대한 뛰어난 예측 성능 및 병렬 컴퓨팅 기능을 제공 최근에는 GPU까지 지원 XGBoost보다 학습에 걸리는 시간이 훨씬 적으며, 메모리 사용량도 상대.. 2022. 10. 4.
[Machine Learning] SVM 회귀 SVM 회귀 SVM을 회귀에 적용하는 방법은 제한된 마진 오류 (도로 밖 샘플) 안에서 도로 안에 가능한 많은 샘플이 들어가도록 학습한다. 도로 폭은 하이퍼파라미터 ϵ로 조절한다. 마진 안에서 훈련 샘플이 추가되어도 모델의 예측에는 영향이 없게 되면, ϵ에 민감하지 않다고 한다. from sklearn.svm import LinearSVR svm_reg = LinearSVR(epsilon=1.5) svm_reg.fit(X, y) LinearSVR(C=1.0, dual=True, epsilon=1.5, fit_intercept=True, intercept_scaling=1.0, loss='epsilon_insensitive', max_iter=1000, random_state=None, tol=0.0001.. 2022. 9. 30.
[Machine Learning] 비선형 SVM 분류 비선형 SVM 분류 데이터가 선형적으로 분류가 안되는 경우에 사용한다. 그림을 보면, 빨강색과 파란색 직선 둘 다 완벽한 분류기가 되지 않았다. 이와 같이 실생활에서는 선형적으로 분류할 수 없는 데이터가 많다. 따라서, 데이터를 분류하기 쉽게 (선형적으로 분류 가능하도록) 만드는 작업을 진행해야 한다. 간단한 방법인 X1과 X1의 제곱 값을 X2에 대입한다. 빨강색 선과 같이 분명하게 나누어 진다. 이와 같이 Scikitlearn에서는 PolynomialFeatures 방식을 제공한다. example 초승달 모양의 2개의 클러스터 생성 선형적으로 분류 불가능 데이터를 선형적인 분류가 되게끔 변형이 필요함 import numpy as np from sklearn import datasets from skl.. 2022. 9. 30.
[Deep Learning] Global Average Pooling (GAP) Global Average Pooling (GAP) GAP (global average pooling)은 Max (Average) Pooling 보다 더 급격하게 feature의 수를 줄인다. 하지만, GAP을 사용하는 이유는 Pooling과 조금 다르다. GAP의 목적은 feature를 1차원 벡터로 만들기 위함이다. 이 방식은 Location 정보를 FC Layer보다 적게 잃고 85%의 가중치를 없앤다. 이것으로 계산량과 모델의 무게와 파라미터가 줄어든다. 따라서, 오버피팅 방지 효과도 따라온다. 그리나 이것은 정보량 손실이 있다. 이미지의 모든 값을 평균을 내는 것인데, 정보를 잃지만 성능은 좋은 것으로 알려져 있다. 분류할 클래스 수만큼 feature map을 마지막에 생성하여 i번째 featu.. 2022. 8. 14.
[LightGBM] 매개변수 조정 (Parameters Tuning) (2) Grow Less Trees 모델에 트리 노드를 추가하는 데 필요한 시간을 줄여 학습 시간을 더욱 줄일 수 있다. 아래는 훈련 속도를 높이지만 훈련 정확도를 떨어뜨릴 수 있다. Decrease num_iterations 매개변수 num_iterations는 수행할 부스팅 라운드 수를 제어한다. LightGBM은 의사결정 트리를 학습자로 사용하기 때문에 "트리의 수"로 생각할 수도 있다. num_iterations을 변경하려고 하면 learning_rate도 바꾼다. learning_rate는 훈련 시간에는 영향을 미치지 않지만 훈련 정확도에는 영향을 미친다. 일반적으로 num_iterations를 줄이면 learning_rate을 늘려야 한다. num_iterations와 learning_rate의 올바.. 2022. 7. 4.
[LightGBM] 매개변수 조정 (Parameters Tuning) (1) 리프 방식 (최상 우선) 트리 매개변수 조정 LightGBM은 잎별 트리 성장 알고리즘을 사용하는 반면 다른 많은 인기 도구는 깊이별 트리 성장을 사용한다. 깊이별 성장과 비교할 때 잎별 알고리즘은 훨씬 빠르게 수렴할 수 있다. 그러나 적절한 매개변수와 함께 사용하지 않으면 잎사귀 성장이 과적합될 수 있다. 리프 방식 트리를 사용하여 좋은 결과를 얻으려면 다음과 같은 몇 가지 중요한 매개변수가 있다. num_leaves : 이는 트리 모델의 복잡성을 제어하는 ​​주요 매개변수이다. 이론적으로 깊이별 트리와 동일한 수의 잎을 얻도록 num_leaves = 2^(max_depth)을 설정할 수 있다. 그러나 이 간단한 변환은 실제로 좋지 않다. 그 이유는 고정된 수의 잎에 대해 leaf-wise tree가 .. 2022. 6. 28.
[LightGBM] Features (2) 네트워크 통신 최적화 (Optimization in Network Communication) LightGBM의 분산 학습에서 "All Reduce", "All gather" 및 "Reduce scatter"와 같은 일부 집합적 통신 알고리즘만 사용하면 된다. LightGBM은 최신 알고리즘을 구현한다. 이러한 집합적 통신 알고리즘은 지점간 통신보다 훨씬 더 나은 성능을 제공할 수 있다. 분산 학습 최적화 (Optimization in Distributed Learning) LightGBM은 기능과 데이터 병렬 분산 학습 알고리즘을 제공한다. 기능 병렬 (Feature Parallel) 1. 전통적인 알고리즘 (Traditional Algorithm) 기능 병렬은 의사 결정 트리에서 "최상의 분할 찾기"를.. 2022. 6. 28.
[LightGBM] Features (1) 속도 및 메모리 사용량 최적화 많은 부스팅 도구는 의사결정 트리 학습을 위해 사전 정렬 기반 알고리즘 (ex: xgboost의 기본 알고리즘)을 사용한다. 간단한 솔루션이지만 최적화하기가 쉽지 않다. LightGBM은 히스토그램 기반 알고리즘을 사용하여 연속적인 특징 (속성) 값을 개별 bin으로 묶는다. 이렇게 하면 훈련 속도가 빨라지고 메모리 사용량이 줄어든다. 히스토그램 기반 알고리즘의 장점은 다음과 같다. 각 분할에 대한 이득 계산 비용 절감 사전 정렬 기반 알고리즘에는 시간 복잡도 O(#data)가 있다. 히스토그램 계산에는 시간 복잡도 O(#data)가 있지만 이는 빠른 합계 연산만 포함한다. 히스토그램이 구성되면 히스토그램 기반 알고리즘은 시간 복잡도 O(#bins)를 가지며 #bins는 #.. 2022. 6. 28.
[LightGBM] Python 패키지 (2) 매개변수 설정 LightGBM은 사전을 사용하여 매개변수를 설정할 수 있다. # 부스터 매개변수: param = {'num_leaves': 31, 'objective': 'binary'} param['metric'] = 'auc' # 여러 평가 지표를 지정 param['metric'] = ['auc', 'binary_logloss'] 훈련 모델을 훈련하려면 매개변수 목록과 데이터 세트가 필요하다. num_round = 10 bst = lgb.train(param, train_data, num_round, valid_sets=[validation_data]) 학습 후 모델을 저장할 수 있다. bst.save_model('model.txt') 훈련된 모델은 JSON 형식으로 덤프할 수도 있다. json_mo.. 2022. 6. 28.
728x90
반응형
LIST