Python Machine Learning/분류
-
분류 - 8Python Machine Learning/분류 2020. 8. 14. 17:09
분류에 마지막은 스태킹 앙상블에 관해 설명하겠습니다. 스태킹이란? - 개별적인 여러 알고리즘을 서로 결합해 예측 결과를 도출하는 점에서 배깅과 부스팅과 공통점을 가지고 있지만 개별 알고리즘으로 예측한 데이터를 기반으로 다시 예측을 수행한다는 점에서 차이가 존재합니다 - 즉 스태킹 모델은 개별적인 기반 모델과 이 개별 기반 모델의 예측 데이터를 학습 데이터로 만들어서 학습하는 최종 메타 모델이 필요합니다. - 스태킹을 적용할 때는 많은 개별 모델이 필요하며, 스태킹을 적용한다고 해서 반드시 성능 향상이 되리라는 보장 은 없으며 비교적 좀 더 나은 성능 향상을 도출하기 위해 적용하는 방법입니다. 기본 스태킹 모델 다음 예제는 위스콘신 암 데이터 세트에 기본 스태킹 모델을 적용한 예제입니다. ==> 개별 모델..
-
분류 - 7Python Machine Learning/분류 2020. 8. 13. 19:47
이상치 데이터 제거 후 모델 학습/예측/평가 - 이상치 데이터는 전체 데이터의 패턴에서 벗어난 이상 값을 가진 데이터이며, 이상치를 찾는 방법 중 IQR( Inter Quantile Range )방식에 대해서 설명드리겠습니다. IQR방식은 사분위 값의 편차를 이용하는 기법으로 흔히 박스 플롯방식으로 시각화할 수 있습니다. - 많은 피처들 중 결정값 ( 즉 레이블)과 가장 상관성이 높은 피처들을 위주로 이상치를 검출하는 것이 좋습니다. - 피처들의 상관도를 구하기 위해서는 데이터프레임의 corr( )을 이용해 구할 수 있습니다. 4분위란? - 전체 데이터를 값이 높은 순으로 정렬하고, 이를 1/4씩( Q1, Q2, Q3, Q4 )으로 구간을 분할하는 것을 지칭하며 Q1~ Q3의 범위를 IQR이라 합니다. ..
-
분류 - 7Python Machine Learning/분류 2020. 8. 12. 19:48
신용카드 사기 검출 - 이번에는 신용카드 데이터 세트를 이용해 신용카드 사기 검출 분류 데이터 세트를 이용해보겠습니다. 일반적으로 사기 검출이나 이상 검출과 같은 데이터 세트는 레이블 값이 극도로 불균형한 분포를 가지기 쉽습니다. 왜냐하면 사기와 같은 이상 현상은 전체 데이터에서 차지하는 비중이 매우 적기 때문입니다. 신용카드 사기 검출 데이터 세트에서도 사기가 아닌 정상적인 신용카드 트랜잭션 데이터를 0, 신용카드 사기 트랜잭션 을 1으로 의미하는데 사기 데이터는 전체 데이터의 약 0.173%입니다. ==> 이처럼 불균형한 분포를 가진 데이터 세트를 학습시킬 때는 예측 성능의 문제가 발생할 수 있으며 문제점을 해결하기 위해서는 적절한 학습 데이터를 확보하는 방안이 필요하며 대표적으로 오버 샘플링( ov..
-
분류 - 5Python Machine Learning/분류 2020. 8. 12. 16:17
Light GBM - XGBoost보다 학습에 걸리는 시간이 훨씬 적은 것이 장점이며 또한 메모리 사용량도 상대적으로 적습니다. 하지만 적은 데이터 세트에 적용할 경우 과적합이 쉽게 발생하는 단점이 있습니다. ( 대략 10,000건 이하의 데이터 세트? ) - GBM 계열의 트리 분할 방법과 다르게 리프 중심 트리 분할 ( Leaf Wise ) 방식을 사용하며 이러한 방식은 트리의 균형을 맞추지 않고, 최대손실 값을 가지는 리프 노드를 지속적으로 분할하면서 트리의 깊이가 깊어지고 비대칭적인 규칙 트리가 생성됩니다. - 파이썬 패키지명은 lightgbm - 파이썬 래퍼용 , 사이킷런 래퍼용이 있으며 사이킷런 래퍼 LightGBM 클래스는 분류를 위한 LGBMClassifier 클래스와 회귀를 위한 LGBM..
-
분류 - 4Python Machine Learning/분류 2020. 8. 11. 13:35
랜덤 포레스트 - 배깅의 대표적인 알고리즘으로 배깅은 같은 알고리즘으로 여러 개의 분류기를 만들어서 보팅으로 최종 결정하는 알고리즘으로 기반 알고리즘은 결정 트리입니다. - 즉 랜덤 포레스트는 여러 개의 결정 트리 분류기가 전체 데이터에서 배깅 방식으로 각자의 데이터를 샘플링해 개별적으로 학습을 수행한 뒤 최종적으로 모든 분류기가 보팅을 통해 예측 결정을 하게 됩니다. - 개별적인 분류기의 기반 알고리즘은 결정트리이지만 학습하는 데이터 세트는 전체 데이터에서 일부가 중첩되게 샘플링된 데이터 세트입니다. 이렇게 데이터 세트를 중첩되게 분리하는 것을 부트스트래핑 분할 방식이라고 합니다. 랜덤 포레스트 하이퍼 파라미터 1. n_estimators : 랜덤 포레스트에서 결정 트리의 개수를 지정하며 디폴트는 10..
-
분류 - 3Python Machine Learning/분류 2020. 8. 11. 11:30
앙상블 학습 - 여러 개의 분류기를 생성하고 그 예측을 결하함으로써 보다 정확한 최종 예측을 도출하는 기법입니다. - 앙상블 학습의 유형은 보팅( voting ), 배깅( bagging ), 부스팅( boosting )의 세 가지로 나눌 수 있으며, 이외에도 스태킹을 포함한 다양한 앙상블 방법이 존재 합니다. - 보팅은 서로 다른 알고리즘을 가진 분류기를 결합한 알고리즘 입니다. - 배깅의 경우 분류기가 서로 같은 유형의 알고리즘이지만, 데이터 샘플링을 서로 다르게 가져가면서 학습을 수행해 보팅을 수행하는 것으로 대표적인 방식이 랜덤 포레스트 알고리즘입니다. - 부스팅은 학습한 분류기가 예측이 틀린 데이터에 대해 올바르게 예측할 수 있도록 분류기에 가중치를 부여하면서 학습 과 예측을 수행하는 알고리즘입니..
-
분류 - 2Python Machine Learning/분류 2020. 8. 10. 17:33
결정트리란? - 데이터에 있는 규칙을 학습을 통해 자동으로 찾아내 트리 기반의 분류 규칙을 만드는 것입니다. 따라서 데이터의 어떤 기준을 바탕으로 규칙을 만들어야 가장 효율적인 분류가 될 것인가가 알고리즘의 성능을 크게 좌우합니다. - 결정 트리의 구조는 규칙 노드( Decision Node ), 리프 노드( Leaf Node )가 있으며 규칙 노드는 규칙 조건이 되는 것이고 리프 노드로 표시된 노드는 결정된 클래스 값입니다. 그리고 새로운 규칙 조건마다 서브 트리가 생성되는 원리입니다. - 하지만 규칙이 많은 것은 분류를 결정하는 방식이 더욱 복잡해진다는 것이고, 곧 과적합으로 이어지기 쉽습니다. - 가능한 적은 결정 노드로 높은 예측 정확도를 가지기 위해서는 데이터를 분류할 때 최대한 많은 데이터 세..