본문 바로가기

ML36

XGB(Extreme Gradient Boosting) 먼저 XGB를 알기전에 GBM부터 알아야한다. https://lucian-blog.tistory.com/51?category=1002577 XGB는 GBM의 속도와 성능을 향상시킨 업그레이드 버전이라고 보면 된다. 앙상블 기법 중 Boosting 기법은 틀린 답 즉 오류(또는 오답)에 가중치를 부여하여, 순차적으로 다음 학습모델에 반영하여 강한 예측모형을 만드는 기법이다. 그 중 GBM은 이 가중치에 경사하강법을 도입하여 만든 모델이다. 그런데 이 부스팅 모델은 모델들을 순차적으로 학습하기 때문에 속도가 매우 느리다... 데이터가 많아질수록 더 많이 느려진다. 이를 업그레이드 한 것이 XGB이다. XGB는 GBM의 학습하는 모델을 병렬처리하여 학습하게 만든다. 즉 순차적으로 진행이 아닌 동시에 각각의 모.. 2021. 12. 30.
연속형 변수 -> 범주형 변수로 바꾸기 - df.apply(), pd.cut() 1. df.apply() def func(x): if x < 3: return 'lowest' elif x < 3.3: return 'low' elif x < 3.5: return 'normal' else : return'high' train['pH'] = train['pH'].apply(lambda x : func(x)) 2. pd.cut() & pd.qcut() 인자로 데이터, 구간의 갯수, 레이블명 구간의 갯수는 5개로 설정하여 1,2,3,4,5가 된다. labels=False로 설정할 시 그대로 숫자가 넣어지고 만약 labels=['a','b','c','d','e'] 일 경우 숫자 대신 리스트의 값이 넣어진다. cut은 레이블의 범위가 같다. qcut은 갯수가 같다. 만약 0과 99사이의 값을 3.. 2021. 12. 29.
올림, 내림, 반올림 함수 # math.ceil()함수 : 무조건 소수점 자리를 올린다. ex) ceil(99.2) => 100 # math.floor()함수 : 무조건 소수점 자리를 내린다. ex)floor(99.2) => 99 # math.round()함수 : 소수점을 반올림한다. 2021. 12. 29.
데이터프레임 열 또는 행에 함수 적용하기 - df.apply() 보호되어 있는 글 입니다. 2021. 12. 29.
차원 축소 차원축소 - 많은 feature 즉 속성(열)들로 구성된 다차원 데이터의 차원을 축소시켜(속성을 줄인다 = 열을 줄인다) 새로운 속성을 만드는 방법. 일반적으로 차원이 크면 -> 희소한(sparse) 구조를 가지게 된다. = 대부분의 값이 0인 것 이러면 작은 차원에서 학습된 모델보다 신뢰도가 떨어지고 각 속성별 상관관계가 높을 가능성이 크다. 선형회귀(선형모델)의 경우 독립변수간 상관관계가 높으면 다중공산성이 높다.(vif가 10 이상) -> 이러면 예측의 성능이 저하된다. 또한 변수들이 많다보니 시각적으로 표현하기도 어려워서 어떤 특성을 가지고 있는 데이터인지 파악하기가 어렵다. 이렇기에 차원을 축소하는 것. 차원 축소에는 feature selection(속성 선택) 과 feature extracti.. 2021. 12. 29.
다중공산성 해결 방법 전 포스트에서 다중공산성을 확인하는 3가지 방법에 대해 설명했다. scatterplot, heatmap, VIF 이렇게 총 3가지가 있다. 이번엔 다중공산성 해결 방법을 알아본다. 크게 3가지로 나뉘는데, 변수 정규화 변수 제거 PCA(주성분 분석) 먼저 변수 정규화 변수 정규화는 이전 수치형 데이터 정규화 포스트에서 다루었다. https://lucian-blog.tistory.com/48?category=1002577 보통 의사결정나무, 랜덤포레스트와 같이 트리기반 모델은 대소 비교를 통해 구분한다. 그렇기에 숫자와 단위에 크게 영향을 받지 않는다. 하지만 로지스틱 회귀, Lasso 등 평활함수모델(평활=smooth) 선형?함수같은 느낌인 것 같다. 여튼 이 모델들에는 숫자의 크기와 단위에 영향을 많이.. 2021. 12. 29.
다중공산성 다중공산성 상관관계가 높은 독립변수들이 다중으로 모델에 들어가 있을 때 발생한다. 즉 독립변수들이 강한 선형관계가 있을 때 발생하는 것이다. 다중공산성이 높다=같은 변수를 두번 넣은 것과 같다. 보통 다중 회귀방정식에서 다중공산성 문제가 발생한다. 다중회귀방정식을 변동성으로 표현한 그림이다. y=a1x1+a2x2+a3x3+c y : 종속변수 x1, x2, x3 : 독립변수 매출(Y)를 설명하는 독립변수들의 변동성들이 겹쳐지는 것을 볼 수 있는데, 다중공산성이 낮을 때는 이렇게 겹쳐져 있지 않고 매출(Y)의 변동성 안에서 고루게 분포되어 있다. 하지만 이처럼 변동성들이 겹쳐지면 이 종속변수를 설명하는 부분이 겹쳐지게 되므로 같은 변수를 두번 쓴 것과 같은 현상이 발생한다는 것이다. 이러면 모델의 신뢰도가 .. 2021. 12. 17.
Bayesian Optimization 한글로 베이지안 최적화 이다. 어렵다... 기본틀만 이해하자. 하이퍼 파라미터의 다양한 튜닝 방법 중 grid optimization, random optimization 다음으로 bayesian optimization이다. 저번 포스트인 랜덤포레스트에서 그리드 최적화로 적절한 하이퍼 파라미터를 찾은적이 있다. https://lucian-blog.tistory.com/44?category=1002577 랜덤포레스트(RandomForestRegressor) 앙상블 기법 - 배깅, 부스팅, 랜덤포레스트 등의 기법 중 랜덤포레스트에 대해 알아보자. 랜덤포레스트는 의사결정나무를 여러개를 모아다 합쳐놓은 것이다. 일종의 배깅인데, 각 의사결정나무 lucian-blog.tistory.com 그리드 최적화는 내가 설.. 2021. 12. 16.
Hold-out, 교차검증(K-Flod), Stratified K-fold 먼저 Hold out에 대해 알아보자. Hold-out 전체(train) 데이터를 훈련과 검증 데이터로 나뉘는 것을 말한다.(여기서 전체 데이터셋은 train과 test 데이터 중 train만 말함. - 즉 데이터가 train=(훈련, 검증), test=(테스트)로 나뉜다는 뜻) 기본적으로 8:2, 7:3으로 나눠 훈련(train)데이터는 모델을 훈련 시킬 때, 검증(valid) 데이터는 모델이 얼마나 잘 훈련되었는지 확인할 때 쓴다. 이렇게 하면 모델의 예측성능을 측정할 수 있다.이 모델이 과대적합이 일어났는지 제대로 훈련되고 좋은 성과를 냈는지 test 데이터를 넣기 전에 알 수 있기 때문에 나뉜다. 하지만 이 Hold-out방식은 데이터 자원을 낭비한다는 문제가 있다. 왜냐면 검증으로 쓸 데이터는 .. 2021. 12. 9.