머신 러닝 및 신경망 - 페이지 70

 

6.6 개선 및 과적합 처리(L06: 결정 트리)



6.6 개선 및 과적합 처리(L06: 결정 트리)

이전 비디오에서는 의사 결정 트리를 성장시키는 데 사용할 수 있는 다양한 분할 기준에 대해 논의했습니다. 이제 우리는 두 가지 분할 기준, 즉 지니 불순도와 엔트로피가 세 번째 기준인 오분류 오류보다 선호되는 이유를 탐구할 것입니다.

기억을 되살리기 위해 세 가지 분할 기준인 엔트로피, 스케일링된 엔트로피(Gini 불순도와 비교하기 위한) 및 오분류 오류를 상기해 봅시다. 이러한 불순물 측정의 모양은 다음과 같이 시각화할 수 있습니다. 엔트로피는 긴 검은색 선으로 표시되는 오목 함수입니다. 스케일링된 엔트로피도 오목하고 엔트로피에 0.5를 곱하여 얻습니다. 오분류 오류는 0.5에서 날카로운 피크와 선형 기울기를 나타냅니다.

이제 질문이 생깁니다. 의사 결정 트리를 성장시킬 때 오분류 오류 대신 엔트로피와 지니 불순도를 사용하는 것을 선호하는 이유는 무엇입니까? 이 질문은 엔트로피와 지니 불순도 모두에 적용되지만 단순화를 위해 이 논의에서는 엔트로피에 초점을 맞출 것입니다.

정보 획득 방정식을 요약해 보겠습니다. D로 표시된 상위 노드로 시작하고 기능 값을 기준으로 이 데이터 세트를 분할하여 다른 하위 노드를 만듭니다. 불순물 함수는 부모 노드와 자식 노드 모두에 사용되며 데이터 세트의 크기를 고려하면서 불순물 값을 합산합니다. 부모 노드에 엔트로피를 선택하면 자식 노드에도 엔트로피를 사용합니다. 동일한 원칙이 Gini 불순물에도 적용됩니다.

실질적으로 오분류 오류는 단점이 있기 때문에 사용하지 않는 것이 좋습니다. 이 비디오에서 이에 대해 살펴보겠습니다. 이를 더 자세히 이해하기 위해 엔트로피, 지니 불순도 및 오분류 오류에 대한 공식을 간략하게 검토해 보겠습니다.

엔트로피는 클래스 레이블의 비율을 연결하고 합산하여 계산됩니다. 로그를 사용하며 클래스를 합산하고 각 클래스의 비율에 해당 비율의 로그를 곱하는 공식으로 표시됩니다.

반면에 Gini 불순물은 클래스 레이블 비율을 제곱하고 1에서 뺍니다. 로그 사용을 피하고 1에서 제곱 클래스 레이블 비율의 합을 뺀 값으로 표시됩니다.

오분류 오류는 잘못 분류된 레이블의 비율을 측정하는 0-1 손실을 기반으로 합니다. 예를 들어 레이블이 001111인 노드가 있는 경우 다수결은 다수 클래스이기 때문에 0을 예측합니다. 그러나 분포를 고려하면 6번 중 4번만 정확하므로 4/6 또는 66.6%의 정확도가 됩니다. 오류는 2/6 또는 33.3%입니다.

엔트로피와 오분류 오류를 비교하기 위해 엔트로피가 오목한 반면 오분류 오류는 0.5에서 날카로운 피크와 선형 기울기를 나타냅니다. 이 차이는 성장하는 의사결정 트리에서 오분류 오류보다 엔트로피가 선호되는 이유를 이해하는 데 중요합니다.

이를 설명하기 위해 클래스 1의 40개 예제와 클래스 0의 80개 예제를 포함하는 부모 노드가 있는 간단한 장난감 데이터 세트를 고려해 보겠습니다. 분할할 최상의 기능이 x1이라고 가정하고 기능 값이 1인지 0인지에 따라 데이터 세트를 나눕니다. 자식 노드 1과 자식 노드 2의 두 자식 노드를 얻습니다. 클래스 분포를 분석하면 자식 노드 2가 부모보다 순수하고 자식 노드 1이 더 나쁩니다.

핵심 질문은 이 기능을 분할할 가치가 있는지 여부입니다. 이를 결정하기 위해 엔트로피를 사용하여 정보 이득을 계산합니다. 부모, 자식 노드 1 및 자식 노드 2에 대한 엔트로피 값을 계산합니다. 이 값을 비교하면 자식 노드 2가 더 나은 반면 자식 노드 1은 부모 노드보다 나쁩니다. 정보 이득 공식을 적용하면 이 분할에 대한 정보 이득이 양수이며 분할이 데이터 세트의 전체 순도를 향상시킨다는 것을 나타냅니다.

이제 오분류 오류를 엔트로피 대신 불순도 측정값으로 고려해 봅시다. 부모, 자식 노드 1 및 자식 노드 2에 대한 오분류 오류를 계산합니다. 이 값을 비교하면 자식 노드 2가 부모 노드보다 오분류 오류가 낮고 자식 노드 1이 오분류 오류가 더 높다는 것을 알 수 있습니다.

그러나 오분류 오류를 사용하여 정보 이득을 계산할 때 문제가 발생합니다. 정보 획득 공식은 상위 노드의 오분류 오류에서 하위 노드의 가중 오분류 오류를 빼는 것과 관련됩니다. 오분류 오류는 선형 함수이므로 자식 노드의 오분류 오류가 부모 노드보다 크면 정보 이득이 음수가 될 수 있습니다.

이 예에서 자식 노드 2가 부모보다 오분류 오류가 낮더라도 자식 노드 1의 오분류 오류가 더 높아 음의 정보 이득이 발생합니다. 즉, 오분류 오류를 불순도 측정으로 사용하면 하위 노드 중 하나의 순도가 향상되더라도 분할이 권장되지 않습니다.

반면에 엔트로피 또는 지니 불순도를 불순도 측정으로 사용하면 정보 획득은 항상 음수가 아닙니다. 엔트로피와 지니 불순물은 둘 다 오목함수입니다. 즉, 자식 노드의 불순물 값은 항상 부모 노드의 불순물 값보다 작거나 같습니다. 이것은 분할이 적어도 하나의 하위 노드의 순도를 향상시킬 때마다 정보 이득이 양수가 되도록 보장합니다.

엔트로피 또는 지니 불순도를 불순도 측정으로 사용함으로써 결정 트리는 정보 획득을 기반으로 분할할 수 있으며, 이는 트리를 성장시키고 예측력을 향상시키는 원칙적인 접근 방식을 제공합니다. 반면에 잘못된 분류 오류는 최적이 아닌 분할 및 덜 정확한 의사 결정 트리로 이어질 수 있습니다.

요약하면, 의사 결정 트리 알고리즘에서 오분류 오류보다 엔트로피 및 지니 불순도에 대한 선호는 수학적 속성에 뿌리를 두고 있습니다. 엔트로피와 지니 불순도의 오목한 특성은 하위 노드의 순도를 개선하는 분할에 대해 정보 이득이 양수가 되도록 보장하는 반면 오분류 오류의 선형 특성은 음수 정보 이득과 최적이 아닌 분할을 초래할 수 있습니다.

 

6.7 Scikit-Learn에서 결정 트리를 구현하는 코드 예제(L06: 결정 트리)



6.7 Scikit-Learn에서 결정 트리를 구현하는 코드 예제(L06: 결정 트리)

강의 6을 마치기 위해 scikit-learn을 사용하여 특히 의사 결정 트리 알고리즘에 중점을 둔 코드 예제를 살펴보겠습니다. Scikit-learn은 속도, 효율성 및 견고성으로 인해 실제 기계 학습 프로젝트에 권장됩니다. 이 데모에서는 scikit-learn을 사용하지만 알고리즘에 대한 이해를 높이기 위해 숙제를 위해 처음부터 결정 트리를 구현하게 될 것임을 언급할 가치가 있습니다.

시작하려면 사용 중인 소프트웨어 버전을 추적하는 데 도움이 되는 워터마크 패키지를 포함하여 필요한 패키지를 가져오겠습니다. 이는 오래된 소프트웨어 버전으로 인해 코드를 실행할 때 문제가 발생하는 경우에 유용할 수 있습니다. 다음으로 분류 작업에 자주 사용되는 인기 있는 데이터 세트인 붓꽃 데이터 세트를 로드합니다. iris와 같은 잘 알려진 데이터 세트를 사용하면 데이터를 설명하는 것보다 코드와 기능을 이해하는 데 더 집중할 수 있습니다.

데이터 세트를 훈련 세트와 테스트 세트로 나누고 테스트용으로 데이터의 30%를 할당했습니다. 이 노트북에서 튜닝을 수행하지 않을 것이라는 점에 유의하는 것이 중요합니다. 그리드 검색과 같은 기술을 사용하여 의사결정 트리 하이퍼파라미터를 튜닝할 수 있지만 간단하게 유지하고 지금은 튜닝을 건너뛸 것입니다. 따라서 별도의 검증 세트가 필요하지 않습니다. 훈련 세트에서만 의사 결정 트리를 훈련하고 테스트 세트에서 성능을 평가하기 때문입니다.

결정 영역 플로팅으로 이동하여 결정 트리 분류기를 초기화하고 하이퍼파라미터를 설정합니다. 이 경우 정보 획득을 위한 엔트로피 기준을 선택하고 교육 목적을 위해 최대 깊이를 2로 설정합니다. 또한 결정 트리를 훈련 데이터에 맞추고 결정 영역을 플로팅합니다. 결정 영역을 시각화하여 결정 트리가 선택한 기능을 기반으로 데이터를 분리하는 방법을 관찰할 수 있습니다.

의사결정 트리 분류기에 대해 설정할 수 있는 다양한 옵션과 하이퍼파라미터를 살펴봅니다. 여기에는 각 노드에서 분할이 수행되는 방법을 결정하는 스플리터와 노드 및 리프 노드 분할에 필요한 최소 샘플과 관련된 매개 변수가 포함됩니다. 불순도 측정을 선택하고 분할의 무작위성을 제어하는 옵션도 있습니다. 이러한 하이퍼파라미터는 특정 문제 및 데이터 세트를 기반으로 조정 및 조정할 수 있습니다.

다음으로 graphviz 라이브러리를 사용하여 결정 트리 시각화를 진행합니다. 트리 구조를 그래프로 나타내는 도트 파일로 의사 결정 트리를 내보냅니다. 그래프에서 노드, 가장자리 및 레이블의 모양을 사용자 지정할 수 있습니다. graphviz 라이브러리를 pydotplus 라이브러리와 함께 사용하면 dot 파일을 따로 저장하지 않고 바로 의사 결정 트리를 그릴 수 있습니다. 이렇게 하면 노트북 자체 내에서 의사 결정 트리를 시각화할 수 있습니다.

의사 결정 트리 플롯을 표시하기 위해 ipython 디스플레이 모듈을 사용하여 생성된 PNG 파일을 로드합니다. ipython 디스플레이에서 이미지 클래스를 가져와 PNG 파일을 로드하는 데 사용합니다. 이를 통해 Jupyter Notebook에서 직접 의사 결정 트리 플롯을 볼 수 있습니다. 의사 결정 트리 플롯은 선택한 기능을 기반으로 분할 및 결정 경계를 각각 세로선과 가로선으로 표시합니다.

요약하면 이 코드 예제는 scikit-learn을 사용하여 결정 트리 분류기를 구현하고 시각화하는 방법을 보여줍니다. 의사결정 트리 알고리즘은 분류 작업을 위한 해석 가능한 모델을 제공하며 성능을 향상시키기 위해 다양한 하이퍼파라미터를 사용하여 조정할 수 있습니다. 결정 트리를 시각화하면 알고리즘이 입력 기능을 기반으로 결정을 내리는 방식을 이해하는 데 도움이 됩니다.

 

7.1 앙상블 방법 소개(L07: 앙상블 방법)


7.1 앙상블 방법 소개(L07: 앙상블 방법)

이번 주 강의에서는 머신러닝의 핵심 분야인 앙상블 방법에 대해 알아봅니다. 이러한 방법은 실제 응용 프로그램에서 고성능을 달성하기 위해 응용 기계 학습 연구에서 널리 사용됩니다. 실제로 효과가 있는 것으로 알려진 견고한 방법이 종종 최상의 결과를 가져옵니다.

강의는 의사 결정 트리를 다시 방문하여 관련성에 대해 Piazza에서 제기된 몇 가지 질문을 다룰 것입니다. 상대적으로 오래되고 친숙한 알고리즘임에도 불구하고 결정 트리는 오늘날에도 매우 관련성이 높습니다. 해석이 가능할 뿐만 아니라 뛰어난 성능을 보이는 앙상블 방법에 자주 사용됩니다. 이번 강연도 이런 측면을 탐구하는 것을 목표로 한다.

앙상블 방법을 탐구하기 전에 우리가 이번 학기에 어디에 서 있는지를 요약하는 것이 중요합니다. 우리는 현재 트리 기반 방법에 초점을 맞춘 3부를 마무리하고 있습니다. 그러나 이러한 방법 중 일부는 의사 결정 트리를 넘어 심층 신경망에 적용되는 견고한 방법을 포함하여 다른 기술을 포함한다는 점은 주목할 가치가 있습니다. 결정 트리는 대부분의 앙상블 방법과 밀접하게 연관되어 있기 때문에 3부로 분류되었습니다.

이 섹션을 완료한 후 비지도 학습과 시간이 허락한다면 베이지안 학습에 대해 논의하기 전에 모델 평가에 대해 자세히 알아볼 것입니다. 초기 계획은 중간고사를 치르고 다른 방법을 더 일찍 다루는 것이었지만 과정 진행이 예상보다 오래 걸렸습니다. 그럼에도 불구하고 Python 환경을 설정하고 모든 사람, 특히 강력한 Python 배경이 없는 사람들에게 익숙해지는 데 소요되는 추가 시간은 유익했습니다. 모든 참가자가 같은 페이지에 있고 scikit-learn과 같은 사전 구축된 라이브러리에 의존하지 않고 CART(분류 및 회귀 트리) 결정 트리를 구현하는 것과 관련된 다가오는 숙제를 준비하도록 합니다.

강의는 총 7개의 파트로 구성되어 있습니다. 첫 번째 부분에서는 앙상블 방법에 대한 소개와 개요를 제공합니다. 이어서 앙상블 방식 중 가장 간단한 형태인 다수결 방식을 시작으로 다양한 내부 방식에 대해 알아본다. 그런 다음 훈련 세트에서 부트스트랩 샘플링을 포함하는 기술인 배깅에 대해 자세히 알아볼 것입니다. 이 방법의 유용성에 대해 설명하겠습니다. 약한 학습자(예: 짧은 의사 결정 트리)를 강력한 모델로 강화하는 것과 관련된 부스팅도 다룰 것입니다. 특히 오늘날 가장 인기 있는 알고리즘 중 하나이며 Kaggle 경쟁에서 성공한 것으로 알려진 Gradient Boosting에 대해 논의할 것입니다. 널리 알려진 또 다른 앙상블 방법인 랜덤 포레스트가 도입됩니다. 이러한 모델은 종종 광범위한 하이퍼파라미터 조정 없이 뛰어난 성능을 제공하므로 사용하기 쉬운 것으로 알려져 있습니다. 특히 기계 학습에 대한 전문 지식이 부족한 경우 다양한 과학 분야에서 예측 모델을 찾는 개인에게 권장됩니다.

특히 RBF(Radial Basis Function) 커널과 함께 성능으로 인해 과거에 인기를 끌었던 SVM(Support Vector Machine)도 언급될 것입니다. 그러나 랜덤 포레스트는 광범위한 조정 없이도 동등하거나 더 나은 결과를 제공하는 경우가 많으므로 실제 응용 프로그램에 선호됩니다. 마지막으로 응용 프로그램에서 널리 사용되는 또 다른 기술인 스태킹에 대해 설명합니다.

앙상블 방법의 중요성을 설명하기 위해 랜덤 포레스트와 관련된 예를 보여주는 그림이 제시됩니다. 이 모델은 분류 작업에 국한되지 않으며 기능 중요도를 쉽게 계산할 수 있습니다. 예를 들어, 언급된 예에서 황 원자는 분자의 활동을 예측하는 데 가장 중요한 특징으로 확인되었습니다. 이러한 통찰력은 실제로 가치가 있을 수 있습니다.

또한 랜덤 포레스트 및 그래디언트 부스팅을 포함한 앙상블 방법은 가장 널리 사용되는 비 딥 러닝 기계 학습 모델 중 하나입니다. 딥 러닝이 주목을 받고 있지만 앙상블은 뛰어난 성능과 구현 용이성으로 인해 여전히 관련성이 높습니다. 이 기사에서는 머신 러닝 알고리즘의 "새로운 여왕"으로서 익스트림 그래디언트 부스팅(XGBoost)의 부상을 언급했습니다. 이는 다양한 애플리케이션에서 트리 기반 모델, 특히 그래디언트 부스팅의 중요성을 강조합니다.

요컨대, 이번 주 강의는 앙상블 방법에 대한 포괄적인 이해를 제공할 것입니다. 다양한 유형의 앙상블 기법과 그 응용을 다룰 것입니다.

 

7.2 다수결 투표(L07: 앙상블 방법)


7.2 다수결 투표(L07: 앙상블 방법)

이 비디오에서는 다수결로 알려진 모델 앙상블의 근본적인 사례 중 하나를 탐구합니다. 장난감 예제를 통해 단일 분류기를 단독으로 사용하는 것과 비교하여 다수결 투표의 이점을 검토할 것입니다.

시작하려면 이진 분류 문제가 있는 시나리오를 고려해 보겠습니다. 여러 관측치로 구성된 데이터 세트가 있으며 각 관측치는 일련의 기능 및 해당 클래스 레이블과 연결되어 있습니다. 우리의 목표는 보이지 않는 새로운 인스턴스에 대한 클래스 레이블을 정확하게 예측할 수 있는 분류기를 구축하는 것입니다.

다수결의 개념을 설명하기 위해 데이터 세트에서 3개의 개별 분류자를 교육하는 것으로 시작합니다. 각 분류기는 서로 다른 알고리즘 또는 모델을 사용하여 예측합니다. 단순화를 위해 이러한 분류기가 결정 트리라고 가정해 보겠습니다.

3개의 결정 트리 분류기를 훈련했으면 이제 새 인스턴스에 대해 예측할 수 있습니다. 그러나 단일 분류기의 예측에 의존하는 대신 다수결 원칙을 사용합니다. 다수결 투표에서 앙상블의 각 분류자는 예측된 클래스 레이블에 투표합니다. 가장 많은 표를 받은 클래스 레이블이 앙상블의 최종 예측으로 간주됩니다.

이제 단일 분류기를 단독으로 사용하는 것보다 다수결 투표가 더 효과적인 이유를 살펴보겠습니다. 각 개별 의사 결정 트리 분류기에 내재된 노이즈 또는 데이터 세트의 가변성으로 인해 어느 정도의 오류가 있는 시나리오를 고려하십시오. 이러한 오류는 잘못된 예측으로 이어져 단일 분류기의 전반적인 정확도를 떨어뜨릴 수 있습니다.

그러나 다수결 투표를 통해 여러 분류기의 예측을 결합하면 개별 오류의 영향을 잠재적으로 완화할 수 있습니다. 하나 또는 두 개의 의사 결정 트리 분류기가 잘못된 예측을 하더라도 다수결 프로세스는 이러한 오류를 보상할 수 있습니다. 다수의 투표를 받은 클래스 레이블이 정확할 가능성이 높으므로 단일 분류자를 사용하는 것보다 정확도가 향상됩니다.

이를 설명하기 위해 두 개의 의사결정 트리 분류기가 올바른 클래스 레이블을 예측하고 한 분류기가 잘못된 예측을 하는 상황을 상상해 봅시다. 이 경우 올바른 클래스 레이블은 2표를 받는 반면 잘못된 예측은 1표만 받습니다. 결과적으로 앙상블의 다수결 프로세스는 개별 분류기의 잘못된 예측을 무시하고 가장 많은 투표를 받은 클래스 레이블을 최종 예측으로 올바르게 식별합니다.

이 예는 앙상블 방법, 특히 다수결 투표가 예측 정확도를 향상시키는 데 얼마나 강력한지 보여줍니다. 여러 분류기의 예측을 결합하여 각 분류기의 강점을 활용하고 개별 약점 또는 오류의 영향을 최소화할 수 있습니다.

결론적으로 이 영상은 모델 앙상블의 기본 형태로서 다수결 투표의 중요성을 강조합니다. 장난감 예제를 통해 우리는 특히 개별 분류자가 오류나 가변성을 나타낼 때 단일 분류자만 사용하여 다수결 투표가 어떻게 더 나은 성능을 보이는지 확인했습니다. 다수결 투표와 같은 앙상블 방법은 예측 정확도를 향상시키는 강력한 접근 방식을 제공하며 실제 기계 학습 응용 프로그램에서 널리 사용됩니다.

 

7.3 배깅(L07: 앙상블 방법)



7.3 배깅(L07: 앙상블 방법)

이전 비디오에서 다수결의 개념에 대해 자세히 논의한 후, 다음 비디오에서는 부트스트랩 집계를 나타내는 배깅이라는 또 다른 기본 방법에 대해 자세히 설명합니다. "bagging"이라는 용어는 머리글자 "B"와 "ag G"의 조합에서 파생되었으며 bootstrapping의 개념과 밀접한 관련이 있습니다. 이 기술은 원래 결정 트리, 특히 분류 및 회귀 트리(CART) 분야의 저명한 인물인 Leo Breiman이 제안했습니다. 우리는 Random Forest에 초점을 맞춘 향후 강의에서 Breiman의 기여를 더 자세히 살펴볼 것입니다.

시작하려면 배깅 알고리즘의 개요를 살펴보겠습니다. 언뜻 복잡해 보일 수 있지만 실제로는 매우 간단하며 코드는 6줄, 빈 줄을 제외하면 5줄로 구성됩니다. 알고리즘은 다음과 같이 작동합니다. 총 n개의 부트스트랩 샘플 또는 라운드가 있다고 가정합니다. 각 라운드 i에 대해 훈련 세트에서 크기 m의 부트스트랩 샘플을 그립니다. 여기서 m은 훈련 세트의 크기를 나타냅니다. 변수에 단일 문자를 사용하는 것이 일반적이지 않은 것처럼 보일 수 있지만 문자 선택에 따른 제한으로 인해 필요하다는 점에 유의하는 것이 중요합니다. 이전 비디오에서 n을 사용하여 우리가 논의한 앙상블 투표 분류기의 분류기 수에 해당하는 부트스트랩 샘플 수를 나타냅니다.

각 부트스트랩 샘플에 대해 분류기를 교육하고 다수결 투표를 적용합니다. 이 프로세스는 앞에서 다룬 앙상블 투표 분류기와 매우 유사하지만 유일한 차이점은 전체 훈련 세트에서 각 분류기를 훈련하는 대신 훈련 세트에서 추출한 부트스트랩 샘플에서 각 기본 분류기를 훈련한다는 것입니다.

진행하기 전에 부트스트랩 샘플링의 개념을 간략하게 요약해 보겠습니다. 크기가 m인 데이터 세트를 고려하십시오. 이 데이터 세트에서 추출한 각 부트스트랩 샘플도 앞서 언급한 알고리즘을 기반으로 m의 크기를 갖습니다. 부트스트랩 샘플링에는 대체 데이터 세트에서 데이터 포인트를 무작위로 선택하는 작업이 포함됩니다. 예를 들어, 1에서 10까지 레이블이 지정된 10개의 데이터 포인트가 있고 교체 샘플링을 수행하면 일부 데이터 포인트가 부트스트랩 데이터 세트에 복제됩니다. 이러한 중복은 각 위치가 트레이닝 세트에서 독립적으로 추출되기 때문에 발생합니다. 결과적으로 일부 데이터 포인트는 여러 번 나타날 수 있는 반면 다른 데이터 포인트는 전혀 나타나지 않을 수 있으며, 그 결과 OOB(out-of-bag) 샘플이라고 합니다. 이러한 OOB 샘플은 특정 라운드의 부트스트랩 샘플에 포함되지 않은 데이터 포인트입니다.

부트스트랩 샘플에서 특정 항목을 선택하지 않는 것과 관련된 확률을 더 잘 이해하기 위해 단일 위치에 대해 특정 데이터 포인트를 선택하지 않을 확률을 조사해 보겠습니다. 주어진 위치에 대해 특정 데이터 포인트를 선택할 확률은 훈련 세트에 m개의 예가 있으므로 1/m입니다. 따라서 특정 데이터 포인트를 선택하지 않을 확률은 1 - 1/m입니다. 선택 항목이 m개이므로 전체 부트스트랩 샘플에서 특정 예를 선택하지 않을 확률은 (1 - 1/m)^n입니다. m이 충분히 커지면 약 36.8%의 포인트가 부트스트랩 샘플에 포함되지 않습니다. 결과적으로 데이터 포인트의 63.2%는 부트스트랩 샘플에서 고유하고 나머지 포인트는 중복됩니다.

배깅 절차 내에서 부트스트랩 샘플링을 시각화하면 개념을 더 잘 이해하는 데 도움이 될 수 있습니다. 여러 라운드의 부트스트랩 샘플링이 수행되어 각각 새로운 부트스트랩 샘플이 생성됩니다. 그런 다음 분류자는 각 부트스트랩 샘플에 대해 독립적으로 훈련됩니다. 이 프로세스는 부트스트랩 라운드 간에 종속성이 없기 때문에 모델 병렬 처리를 용이하게 합니다. 결과적으로 각 라운드를 동시에 실행할 수 있으므로 병렬 처리 가능성이 높아집니다.

배깅 분류기의 순서도는 관련된 단계의 개요를 제공합니다. 투표 분류기와 유사하게 배깅 분류기는 훈련 세트로 시작합니다. 그러나 배깅에서는 트레이닝 세트를 재사용하여 여러 부트스트랩 샘플을 생성합니다. 각 부트스트랩 샘플은 분류기를 훈련하는 데 사용되며 총 m개의 분류기가 생성됩니다. 각 분류기는 예측을 생성하고 최종 예측은 다수결 투표를 통해 결정됩니다. 이 접근 방식은 과적합을 줄이고 모델의 안정성과 일반화를 개선하는 데 도움이 됩니다.

Bagging은 다음과 같은 몇 가지 이점을 제공합니다.

  • 분산 감소: 배깅은 여러 부트스트랩 샘플을 생성하고 각 샘플에 대해 독립적인 분류기를 교육함으로써 예측의 분산을 효과적으로 줄입니다. 이 분산 감소는 기본 분류자가 과적합되기 쉬운 경우에 특히 유용합니다.
  • 향상된 안정성: 배깅에는 다양한 부트스트랩 샘플에 대한 여러 분류기 교육이 포함되므로 모델에 안정성을 제공합니다. 훈련 세트의 작은 변화는 최종 예측에 큰 영향을 미칠 가능성이 적어 보다 강력한 모델이 됩니다.
  • 복잡한 데이터 세트 처리: Bagging은 높은 분산과 노이즈가 특징인 복잡한 데이터 세트를 처리하는 데 매우 효과적입니다. 배깅은 여러 분류기를 활용하고 예측을 집계하여 다양한 패턴을 캡처하고 이상치 또는 노이즈 데이터의 영향을 줄입니다.
  • 병렬 처리: Bagging을 사용하면 부트스트랩 샘플과 분류기 교육을 병렬로 처리할 수 있습니다. 각 부트스트랩 샘플은 서로 독립적이므로 계산 리소스를 효율적으로 활용할 수 있습니다.

장점에도 불구하고 배깅에는 다음과 같은 몇 가지 제한 사항이 있습니다.

  • 해석성: 배깅은 여러 분류기의 예측을 결합하므로 최종 예측에 대한 각 분류기의 개별 기여도를 해석하는 것은 어려울 수 있습니다. 앙상블 모델이 정확한 예측을 제공할 수 있지만 그 뒤에 숨겨진 추론을 이해하는 것은 더욱 복잡해집니다.
  • 계산 복잡성: 서로 다른 부트스트랩 샘플에서 여러 분류기를 교육하면 배깅 알고리즘의 계산 복잡성이 증가합니다. 예측을 훈련하고 집계하는 데 필요한 시간과 리소스는 특히 대규모 데이터 세트의 경우 중요할 수 있습니다.
  • 잠재적인 과적합: 배깅은 단일 분류기에 비해 과적합의 위험을 줄이지만 과적합에 완전히 면역되는 것은 아닙니다. 기본 분류기가 이미 과적합되기 쉬운 경우 배깅이 크게 개선되지 않을 수 있습니다.
  • 제한된 다양성: 배깅은 다양한 분류자를 얻기 위해 다양한 부트스트랩 샘플을 만드는 데 의존합니다. 그러나 데이터 세트가 작거나 제한된 가변성을 나타내는 특정 경우에는 부트스트랩 샘플이 충분히 다양하지 않아 배깅의 효율성이 감소할 수 있습니다.

이 섹션에서는 이전에 논의된 개념을 더 깊이 탐구합니다. 모델의 예측이 상당한 변동을 보이는 경우 이는 높은 변동을 나타냅니다. 예를 들어 주황색 케이스에 대한 복잡한 결정 트리를 고려해 보겠습니다. 이 모델의 예측은 파란색 모델의 예측과 크게 다를 것입니다. 마찬가지로 녹색 사례에는 자체적으로 다른 예측 세트가 있습니다. 이러한 다양한 예측은 높은 분산의 개념을 보여줍니다.

높은 분산의 영향을 더 잘 이해하기 위해 이러한 데이터 세트에 맞는 실제 의사 결정 트리를 살펴보겠습니다. 이러한 변화에도 불구하고 높은 분산 사례는 여전히 좋은 평균 예측을 제공합니다. 여기에서 평균 예측을 명시적으로 보여주지는 않았지만 서로 다른 훈련 세트에 맞는 세 가지 모델(모델 1, 2 및 3)의 예측을 평균하면 실제 함수에 근접한 예측이 생성된다는 점에 유의해야 합니다. . 대조적으로, 앞에서 본 바와 같이 높은 편향 모델은 선이 실제 함수와 교차하는 특정 위치에서만 정확합니다. 다른 모든 경우에는 편향이 높기 때문에 성능이 좋지 않습니다.

그러나 고분산 모델을 사용하고 여러 모델의 예측을 평균화하면 여전히 정확한 예측을 달성할 수 있습니다. 이 개념은 부트스트랩 샘플링을 통해 생성된 다양한 훈련 세트를 사용하는 배깅의 기초를 형성합니다. 배깅에서는 각 부트스트랩 샘플을 사용하여 의사 결정 트리를 맞추므로 여러 고분산 모델이 생성됩니다. 이러한 모델은 분류 작업의 클래스 레이블 또는 회귀 작업의 회귀 출력을 고려하여 앙상블 투표를 사용하여 평균화됩니다. 이 평균화 프로세스는 분산을 줄임으로써 매우 정확한 예측을 얻는 데 도움이 됩니다.

서로 다른 훈련 세트에 맞춰진 세 가지 결정 트리의 예측을 평균화하여 실제 기능에 근접한 평균 예측을 얻을 수 있습니다. 이 평균화는 각 훈련 세트가 부트스트랩 데이터 세트 역할을 하는 배깅 개념과 유사합니다. 둘째, 결정 트리는 값을 보간할 수 없다는 점에 유의해야 합니다. 훈련 세트 또는 평균에 존재하는 목표 값만 예측할 수 있습니다. 따라서 그림에 표시된 단계별 함수는 정리되지 않은 결정 트리의 근사치입니다.

결론적으로 배깅은 고분산 모델의 예측을 평균화하여 분산을 줄이는 효과적인 기술입니다. 병렬화를 채택함으로써 배깅은 여러 CPU를 활용하여 모델 피팅을 가속화할 수 있습니다. 그러나 일부 Windows 컴퓨터는 Python의 다중 처리 문제에 직면하여 여러 작업의 사용을 제한할 수 있습니다. 배깅 분류기가 모델 성능을 평가하기 위해 부트스트랩 샘플에 포함되지 않은 데이터 포인트를 사용하는 것과 관련된 아웃 오브 백 정확도를 계산할 수 있다는 점도 언급할 가치가 있습니다. 이것은 모델의 일반화 능력을 평가하기 위한 유용한 메트릭을 제공합니다. scikit-learn을 사용하는 코드 예제에서 배깅 분류기는 앙상블 하위 모듈에서 가져올 수 있습니다.

이 경우 의사결정 트리인 기본 추정량은 가지치기되지 않은 의사결정 트리를 생성하기 위해 없음으로 설정된 최대 깊이로 초기화됩니다. 추정기의 수는 부트스트랩 라운드의 수를 결정하며 그에 따라 n_jobs 매개변수를 설정하여 병렬화를 달성할 수 있습니다. 또한 oob_score 매개변수를 사용하면 out-of-bag 점수를 계산할 수 있습니다. 배깅 분류기를 교육한 후 가방 외부 점수와 테스트 세트 정확도를 평가할 수 있습니다.

전반적으로 배깅은 여러 고분산 모델을 결합하여 높은 분산을 완화하고 예측 정확도를 개선하는 효과적인 접근 방식을 제공합니다. 요약하면 배깅은 다양한 부트스트랩 샘플에서 훈련된 여러 분류기를 결합하여 예측 정확도를 높이고 분산을 줄이는 강력한 앙상블 방법입니다. 복잡한 데이터 세트를 처리할 때 특히 유용하며 모델의 안정성과 일반화를 향상시킬 수 있습니다. 그러나 해석 가능성 감소 및 계산 복잡성 증가를 포함하여 몇 가지 제한 사항도 있습니다.

 

7.4 부스팅 및 AdaBoost(L07: 앙상블 방법)


7.4 부스팅 및 AdaBoost(L07: 앙상블 방법)

이전 비디오에서 우리는 가지치기되지 않은 결정 트리에 특히 중점을 둔 고분산 및 저편향 모델의 개념에 대해 논의했습니다. 또한 평균화를 통해 분산을 줄임으로써 고분산 모델의 성능을 향상시키는 데 도움이 되는 배깅이라는 기술에 대해서도 배웠습니다.

이번 강의에서는 반대 방향으로 작용하는 부스팅에 대해 알아보도록 하겠습니다. 부스팅은 단순한 의사 결정 트리 스텀프와 같이 분산이 낮은 고편향 모델을 사용하고 이를 부스팅하여 전체 모델의 성능을 향상시키는 것입니다. 이 첫 번째 비디오는 부스팅 개념에 대한 개요를 제공하고 일반적인 부스팅을 소개하며, 다음 비디오에서는 그래디언트 부스팅이라고 하는 인기 있는 부스팅 유형에 대해 자세히 설명합니다.

부스팅은 적응형 부스팅(예: adaboost)과 그래디언트 부스팅의 두 가지 주요 유형으로 크게 분류할 수 있습니다. 역사적으로 그래디언트 부스팅은 계산 복잡성으로 인해 덜 널리 사용되었습니다. 그러나 2016년 XGBoost 도입과 같은 최근의 발전으로 그래디언트 부스팅의 성능이 크게 향상되었습니다. 요즘 LightGBM과 같은 더 나은 변형이 등장했으며 다음 비디오에서 논의할 것입니다. 그래디언트 부스팅이 인기를 얻으면서 적응형 부스팅을 통한 일반적인 부스팅 절차를 이해하는 것이 필수적입니다.

부스팅 절차는 배깅 절차와 다른 특정 개요를 따릅니다. 주목할만한 차이점 중 하나는 라운드 간의 종속성이 있다는 것입니다. 부스팅 절차에는 분류자 1, 분류자 2 등으로 표시되는 여러 분류자가 포함되며 분류자 M까지 계속됩니다. 처음에는 일반 훈련 데이터 세트로 시작하여 분류자 1에 적합합니다. 분류기 1의 예측을 기반으로 특정 가중치 방법을 사용하여 훈련 샘플에 가중치를 부여합니다. 이에 대해서는 나중에 자세히 설명하겠습니다. 그런 다음 두 번째 분류자는 이 가중치 훈련 데이터 세트를 사용하고 프로세스가 계속됩니다. 가중치는 이전 분류기의 예측에 따라 달라지므로 부스팅을 병렬화하기 어렵습니다. 분류자를 동시에 훈련할 수 있는 배깅과 달리 부스팅은 다음 분류자를 위해 데이터 세트를 업데이트하기 전에 이전 분류자가 예측을 할 때까지 기다려야 합니다. 최종 예측을 할 때 부스팅은 배깅에 사용되는 앙상블 투표 또는 평균화와 달리 분류기의 가중 조합을 사용합니다. 가중 조합은 각 분류기의 예측에 가중치를 할당하는 부호 함수를 기반으로 결정됩니다. 이진 분류의 경우 부호 함수는 양수 결과에 대해 1을 반환하고 음수 결과에 대해 -1을 반환합니다. 이 가중 예측 결과는 -1 또는 1의 최종 예측이 됩니다. 표시 기능을 사용하여 임의의 수의 클래스를 처리하도록 프로세스를 확장할 수 있습니다.

일반적인 부스팅 절차를 더 잘 이해하기 위해 관련 단계를 간략하게 설명하겠습니다. 먼저, 각 훈련 예제에 대해 균일한 가중치로 가중치 벡터를 초기화합니다. 이러한 가중치는 각 교육 예제의 중요성을 나타냅니다. 그런 다음 부스팅 절차의 다른 분류자 또는 라운드를 반복하는 루프에 들어갑니다. 각 라운드에서 무작위 추측보다 약간 더 나은 분류기인 약한 학습자를 가중치 훈련 예제에 적용합니다. 특정 예에 더 높은 가중치를 할당하거나 가중 확률로 부트스트랩 샘플을 그릴 수 있습니다. 약한 학습자를 훈련시킨 후 잘못 분류된 예에 대한 가중치를 증가시켜 다음 분류자가 이러한 잘못 분류된 예에 집중할 수 있도록 합니다. 이 루프는 여러 번 반복되고 마지막으로 최종 예측을 얻기 위해 훈련된 분류기에 대해 가중 다수 투표가 수행됩니다.

이제 앞에서 설명한 일반적인 부스팅 절차와 밀접하게 일치하는 adaboost 알고리즘에 초점을 맞추겠습니다. Adaboost는 분류기가 가중 교육 예제에 적용되는 일반적인 부스팅 개요와 유사합니다. 알고리즘은 각 교육 데이터 포인트에 대한 가중치를 초기화하는 것으로 시작합니다. 그런 다음 adaboost 라운드로 구성된 기본 for 루프가 시작됩니다. 각 라운드에서 가중치는 합이 1이 되도록 정규화됩니다. 다음으로 약한 학습자는 가중 훈련 세트에서 훈련되고 가중 예측 오류가 계산됩니다. 예측 오류는 트레이닝 세트 가중치로 가중치가 부여되며 오분류를 나타냅니다. 그런 다음 예측 오류는 최종 예측에 대한 약한 학습자의 기여도를 계산하는 데 사용됩니다. 기여도는 약한 학습자의 정확도에 의해 결정되며 더 정확한 학습자가 더 높은 기여도를 갖습니다. 그런 다음 기여도를 사용하여 교육 예제의 가중치를 업데이트합니다. 잘못 분류된 예의 가중치는 증가하고 올바르게 분류된 예의 가중치는 감소합니다. 이 조정은 후속 라운드에서 잘못 분류된 예의 중요성을 강조합니다.

가중치를 업데이트한 후 프로세스는 약한 학습자가 업데이트된 가중치 훈련 세트에서 훈련되는 다음 라운드로 이동합니다. 이 반복 프로세스는 지정된 라운드 수 동안 또는 특정 기준이 충족될 때까지 계속됩니다. 모든 라운드가 완료되면 모든 약한 학습자의 예측을 결합하여 최종 예측이 이루어집니다. 각 약한 학습자의 예측 가중치는 훈련 중 전체 정확도에 대한 기여도에 따라 결정됩니다.

adaboost 알고리즘은 약한 학습자의 예측을 효과적으로 결합하여 강력한 앙상블 모델을 생성합니다. 각 약한 학습자의 예측에 할당된 가중치는 학습 예제를 분류하는 성능을 반영합니다. 가중치를 반복적으로 조정하고 잘못 분류된 예에 집중함으로써 adaboost는 시간이 지남에 따라 모델의 정확도를 향상시킬 수 있습니다.

adaboost는 데이터의 이상값과 노이즈에 민감하다는 점에 유의해야 합니다. 이상값은 가중치 업데이트에 상당한 영향을 미쳐 과적합을 유발할 수 있습니다. 따라서 이상값과 잡음이 있는 샘플을 처리하도록 데이터를 전처리하는 것이 좋습니다. 또한 약한 학습자가 너무 복잡하거나 라운드 수가 너무 많은 경우 adaboost가 과적합되기 쉽습니다. 결정 트리의 깊이를 제한하거나 조기 중지를 사용하는 것과 같은 정규화 기술은 과적합을 완화하는 데 도움이 될 수 있습니다.

개념을 대략적으로 스케치하면 다음과 같습니다. x축에 알파 값을 나타내는 화살표가 있습니다. 알파 값은 최종 예측에서 각 분류기의 중요도를 결정합니다. 알파 값을 사용하여 추정 및 예측에 가중치를 부여할 때 분류기의 오류가 크면 알파 값이 상대적으로 작다는 것을 알 수 있습니다. 이것은 오류가 높은 분류기가 최종 예측에 그다지 중요하지 않다는 것을 의미합니다. 반면에 오류가 작은 분류기는 다수결을 계산할 때 더 신뢰하기 때문에 더 높은 가중치를 갖습니다.

우리는 두 가지 방법으로 알파 값을 사용합니다. 첫 번째는 추정 및 예측에 가중치를 부여하는 데 사용하고 두 번째는 다음 라운드의 가중치를 업데이트하는 데 사용합니다. 예측이 맞다면 해당 훈련 예제에 할당된 가중치는 작을 것입니다. 이것은 우리가 올바른 예측을 하면 다음 라운드에서 해당 학습 예제에 많은 관심을 기울이지 않는다는 것을 의미합니다. 쉬운 예로 간주됩니다. 반면에 실수를 하면 해당 사례에 할당된 가중치가 더 커집니다. 이것은 우리가 다음 라운드에서 잘못 분류된 예에 더 많은 주의를 기울인다는 것을 의미합니다. 알파 값이 작을수록 잘못 분류된 예에 할당된 가중치가 커집니다.

이 개념을 설명하기 위해 2차원 사례를 살펴보겠습니다. x1과 x2의 두 가지 기능이 있는 장난감 예제가 있습니다. 하나의 분할만 있는 의사결정 트리인 의사결정 트리 그루터기에 적합합니다. 의사 결정 트리 그루터기는 일부 포인트를 올바르게 분류하지만 다른 포인트에서는 실수를 합니다. AdaBoost의 첫 번째 라운드에서는 잘못 분류된 예에 더 높은 가중치를 부여하고 올바르게 분류된 예에 더 낮은 가중치를 부여합니다. 그런 다음 이전 라운드에서 잘못 분류된 예에 초점을 맞춰 다른 결정 트리 스텀프를 맞춥니다. 이 프로세스는 이전 분류기의 실수로부터 학습하고 잘못 분류된 예에 더 많은 주의를 기울이면서 각각의 새로운 분류기로 계속됩니다. 마지막으로 다수결 투표를 사용하여 모든 분류자를 결합하면 모든 예를 올바르게 분류하는 분류자가 될 수 있습니다.

AdaBoost는 이해하기 다소 복잡할 수 있지만 도움이 되는 리소스가 있습니다. AdaBoost의 원본 논문은 심층적인 설명을 제공하지만 보다 접근하기 쉬운 소개를 위해 Manwani의 자습서 논문을 권장합니다. 코드 예제로 이동하기 전에 AdaBoost.M2 또는 SAMME라는 다중 클래스 분류를 위한 AdaBoost 알고리즘의 수정 사항을 언급할 가치가 있습니다. 여러 클래스를 처리하기 위해 원래 알고리즘을 약간 수정했습니다. SAMME.R이라는 실수 버전도 있습니다. 관심이 있는 경우 각 논문에서 이러한 변형을 탐색할 수 있습니다.

scikit-learn에서 AdaBoost는 부스팅 분류기로 구현됩니다. 결정 트리 스텀프를 약한 분류기로 사용하고 분류 결과에 따라 훈련 예제의 가중치를 조정합니다. 이러한 약한 분류기를 강화함으로써 AdaBoost는 전반적인 성능을 향상시킵니다. 정리되지 않은 의사결정 트리와 홍채 데이터세트의 의사결정 트리 스텀프의 정확도를 비교하면 의사결정 트리 스텀프가 있는 AdaBoost가 더 높은 정확도를 달성합니다. 교육 프로세스에는 샘플 가중치 업데이트가 포함되므로 배깅과 같은 병렬화 옵션이 없습니다. scikit-learn의 AdaBoost는 약한 분류기를 강화하고 더 나은 분류 결과를 얻는 효과적인 방법을 제공합니다.

다음으로 인기 있는 부스팅의 또 다른 변형인 그래디언트 부스팅에 대해 알아봅니다. 그래디언트 부스팅은 AdaBoost의 개념을 기반으로 하지만 추가 개선 사항을 소개합니다.

그래디언트 부스팅은 약점을 반복적으로 개선하여 약한 분류기의 성능을 더욱 향상시키는 것을 목표로 하는 부스팅 알고리즘의 인기 있는 변형입니다. 최적화 문제에서 일반적으로 사용되는 그래디언트 디센트(gradient descent) 개념을 기반으로 합니다. 그래디언트 부스팅에서는 약한 분류기를 순차적으로 훈련하고 결합하여 강력한 분류기를 만듭니다.

그래디언트 부스팅의 기본 아이디어는 약한 분류기를 반복적으로 훈련한 다음 분류기의 앙상블에 의해 만들어진 오류를 기반으로 훈련 예제의 가중치를 조정하는 것입니다. 이 조정은 앙상블의 예측과 관련하여 손실 함수의 그래디언트를 계산하여 수행됩니다. 손실 함수를 최소화함으로써 앙상블의 성능이 점차 향상됩니다.

개념을 설명하기 위해 간단한 예를 살펴보겠습니다. 데이터 포인트를 양수 또는 음수로 분류하려는 이진 분류 문제가 있다고 가정합니다. 학습 데이터에서 결정 트리 스텀프와 같은 초기 약한 분류기를 학습하는 것으로 시작합니다. 이 분류기는 약간의 실수를 할 수 있으며 예측을 교육 예제의 실제 레이블과 비교하여 오류 또는 잔차를 계산합니다.

다음 반복에서는 새로운 약한 분류기를 훈련하여 이전 분류기의 잔차를 예측합니다. 이 새로운 분류기는 이전 분류기가 만든 오류를 수정하는 데 중점을 둡니다. 실제 잔차에서 예측 값을 빼서 잔차를 계산합니다. 다시 말하지만, 이 새로운 분류기는 약간의 실수를 할 것이고 잔차를 계산합니다.

우리는 이 과정을 반복하고 새로운 약한 분류기를 순차적으로 훈련하여 앙상블의 잔차를 예측하고 현재 앙상블에서 발생한 오류를 기반으로 잔차를 업데이트합니다. 각 약한 분류기는 현재 잔차에 대한 손실 함수를 최소화하도록 훈련됩니다. 최종 앙상블은 모든 약한 분류기를 결합하여 얻어지며 각 분류기는 성능에 따라 가중 투표에 기여합니다.

약한 분류기의 가중치는 최종 예측에 대한 각 분류기의 기여도를 제어하는 학습률에 의해 결정됩니다. 학습 속도가 작을수록 수렴 속도가 느려지지만 일반화가 향상될 수 있습니다. 더 큰 학습 속도는 더 빠른 수렴으로 이어질 수 있지만 과적합으로 이어질 수도 있습니다.

그래디언트 부스팅은 회귀, 분류 및 순위 문제를 포함한 광범위한 기계 학습 작업에 대한 강력한 기술임이 입증되었습니다. 컴퓨터 비전, 자연어 처리, 생물 정보학 등 다양한 영역에서 성공적으로 적용되고 있습니다.

실제로 그래디언트 부스팅을 위한 효율적이고 최적화된 알고리즘을 제공하는 XGBoost, LightGBM 및 CatBoost를 포함하여 여러 가지 그래디언트 부스팅 구현이 있습니다. 이러한 구현은 병렬화, 정규화 기술 및 누락된 값 처리와 같은 추가 기능을 제공하여 그래디언트 부스팅 모델의 성능과 유연성을 더욱 향상시킵니다.

이것으로 부스팅에 대한 소개와 adaboost 알고리즘의 개요를 마칩니다. 다음 비디오에서는 그래디언트 부스팅의 개념, 손실 함수 및 그래디언트 부스팅 프로세스를 향상시키기 위해 개발된 특정 알고리즘을 포함하여 그래디언트 부스팅에 대해 자세히 살펴보겠습니다.

 

7.5 그래디언트 부스팅(L07: 앙상블 방법)


7.5 그래디언트 부스팅(L07: 앙상블 방법)

Gradient Boosting의 개념은 Decision Tree와 Differentiable Loss Function을 활용하는 최신 버전의 Boosting으로 도입되었습니다. AdaBoost와 유사하지만 그래디언트 부스팅은 결정 트리를 맞추는 방식이 다릅니다. 그래디언트 부스팅에서는 더 깊은 트리가 사용되며 훈련 예제나 분류기에 할당된 가중치가 없습니다. 그래디언트 부스팅의 핵심 아이디어는 손실 함수의 그래디언트를 사용하여 모델을 개선하여 테이블 데이터 세트에서 더 나은 성능을 얻는 것입니다. 이 알고리즘은 특히 기계 학습 대회에서 인기를 얻었습니다.

회귀 맥락에서 그래디언트 부스팅은 기본 트리를 구성하는 것으로 시작합니다. 예를 들어 주택 가격 예측 문제에서 초기 기본 트리는 루트 노드로만 구성됩니다. 목표는 해당 노드의 평균값을 기반으로 예측되며, 이 경우 훈련 세트에 있는 4개 주택의 평균 가격입니다. 그런 다음 이전 트리의 예측 오차를 기반으로 다음 트리를 구성합니다. 이 예측 오류는 새 트리를 맞추는 데 사용됩니다. 첫 번째 단계와 두 번째 단계의 트리가 결합되고 이 프로세스가 여러 번 반복되며 각 후속 트리는 이전 트리의 오류에 맞춰집니다. 단순한 의사 결정 트리를 잔차 기반의 새로운 트리와 결합함으로써 모델은 더 정확하고 더 나은 예측을 할 수 있습니다.

모든 트리의 예측을 합산하여 연속적으로 결합하는 가산 모델로서의 그래디언트 부스팅의 개념에 대해 설명합니다. 최종 예측에 대한 각 트리의 가중치 또는 기여도를 결정하는 학습 속도 또는 단계 크기도 도입됩니다. 그래디언트 부스팅은 이전 예측의 오류에 대해 트리를 피팅하는 과정을 반복하여 수행되며, 과적합을 방지하기 위해 작은 단계 크기로 모델을 점진적으로 구축합니다. 이 프로세스는 하이퍼파라미터 설정에 따라 미리 결정된 수의 트리가 완료될 때까지 계속됩니다.

발표자는 회귀 및 분류 문제 모두에 사용되는 그래디언트 부스팅 알고리즘을 설명합니다. 이 알고리즘에는 모델을 루트 노드로 초기화한 다음 여러 트리를 피팅하고 터미널 노드를 만드는 작업이 포함됩니다. 각 노드에서 예측이 이루어지고 손실이 계산됩니다. 알고리즘은 손실을 최소화하는 전반적인 목표와 함께 원하는 트리 수에 도달할 때까지 반복될 수 있습니다.

현재 모델을 계산하기 위해 이전 모델과 새로운 예측 단계를 결합하고 학습률 또는 단계 크기로 가중치를 부여하여 업데이트된 모델을 결정합니다. 이 프로세스는 T로 표시되는 원하는 트리 수에 도달할 때까지 반복됩니다. 의사 잔차가 계산된 다음 이전 라운드 모델의 실제 레이블 및 예측을 기반으로 손실의 도함수가 계산됩니다. 그런 다음 잔차를 계산하고 특정 노드에서 손실을 최소화하는 예측 값을 결정합니다. 이에 따라 모델이 업데이트되고 T 모델에 도달할 때까지 이 프로세스가 반복됩니다. 음의 로그 우도 손실과 같은 미분 가능한 손실 함수를 분류에 사용할 수 있지만 이 클래스의 초점은 합계 제곱 오류 또는 평균 제곱 오류입니다.

이 비디오에서는 그래디언트 부스팅과 실제 적용에 관련된 단계에 대해 설명합니다. 첫 번째 단계는 표현을 최소화하는 예측을 찾아 주어진 노드에서 모든 교육 예제에 대한 손실을 최소화하는 것입니다. 두 번째 단계에서는 T 트리에 대해 루프를 사용하고 각 리프 노드의 예측은 해당 노드의 예를 평균하여 계산합니다. 평균 예측은 이전 모델과 결합되고 각 트리에 대한 예측이 합산됩니다. 학습률은 의사 잔차를 줄이고 과적합을 방지하는 데 사용됩니다. 이 비디오는 실제로 사용되는 그래디언트 부스팅의 다른 흥미로운 측면도 간략하게 다룹니다.

이 비디오는 여러 프로세스 또는 컴퓨팅 노드를 완전히 활용할 수 없기 때문에 순차 알고리즘으로서 부스팅의 잠재적인 단점을 강조합니다. 그러나 그래디언트 부스팅 프로세스를 보다 효율적으로 만들기 위해 몇 가지 트릭을 통합하는 xgBoost라는 구현이 있습니다. 실제로 2015년부터 2017년까지 Kaggle에 게시된 29개의 Challenge Winning Solution 중 17개가 xgBoost를 사용했습니다. 이러한 솔루션 중 8개는 모델 교육을 위해 xgBoost에만 의존했으며 다른 솔루션은 xgBoost를 신경망과 결합하거나 널리 사용되는 앙상블 투표 기술인 스태킹을 활용했습니다. 비디오는 서로 다른 부스팅 구현을 비교하는 논문의 두 표를 제시하여 효과에 기여하는 xgBoost의 고유한 기능을 보여줍니다.

이 비디오에서는 대략적인 글로벌, 코어 외부 학습, 희소성 인식 및 병렬 처리와 같은 몇 가지 이점을 제공하는 그래디언트 부스팅의 변형인 Extra Boost에 대해 설명합니다. Extra Boost는 근사 방법을 통합하여 분산 데이터 하위 집합의 요약 통계를 활용하여 최상의 분할을 찾습니다. 이 비디오는 Extra Boost의 성능을 정확한 그리디 방법을 사용하여 다른 그래디언트 부스팅 구현과 비교하고 Extra Boost가 한 구현과 동일한 성능을 달성하지만 트리당 시간이 크게 단축되어 하이퍼파라미터 튜닝에 더 매력적임을 보여줍니다.

또한 비디오는 정규화 기술, 대체를 통한 누락된 기능 처리 및 캐싱과 같은 Extra Boost에서 제공하는 다양한 개선 사항에 대해 설명합니다. 이러한 개선 사항은 오버피팅을 줄이고 Extra Boost의 전반적인 성능을 개선하는 데 도움이 됩니다. 또한 Extra Boost는 열 및 행 기반 서브샘플링을 활용하여 기능 및 교육 예제의 하위 집합을 무작위로 선택하여 계산 효율성을 높이고 과적합을 줄입니다. 비디오는 기술에 대한 자세한 설명을 위해 Extra Boost에 대한 문서를 참조할 것을 제안합니다.

이 비디오는 Gradient Boosting Machine의 최신 구현인 Extra Boost에 대한 개요를 제공합니다. Extra Boost는 과적합을 줄이고 예측 정확도를 높이는 것을 목표로 합니다. 이 비디오에서는 정확한 그리디 알고리즘과 히스토그램 기반 분할 찾기를 포함하여 분할을 찾기 위한 다양한 기술에 대해 설명합니다. 후자의 접근 방식은 연속 기능을 불연속 히스토그램으로 비닝하여 훈련 속도를 높이고 메모리 사용량을 줄일 수 있습니다. 이 비디오는 또한 Extra Boost와 Light GBM을 비교하여 훨씬 더 빠르고 정확한 또 다른 구현입니다. Light GBM은 히스토그램 기반 분할 찾기를 활용하고 Extra Boost에 비해 메모리 사용량이 적고 예측 정확도가 높습니다.

이 비디오는 scikit-learn에서 그래디언트 부스팅 분류기의 구현에 대해 논의하고 최신 버전의 라이브러리에 추가된 새로운 그래디언트 부스팅 분류기를 소개합니다. 새로운 분류기는 LightGBM에서 영감을 받은 히스토그램 기반 분할을 활용하여 이전 분류기보다 더 빠릅니다. 이 비디오는 그래디언트 부스팅 분류기를 모두 사용하고 XGBoost와 비교하여 어느 것이 가장 성능이 좋은지 결정하도록 제안합니다. 코드 예제는 scikit-learn에서 그래디언트 부스팅 분류기를 구현하고 새로운 히스토그램 그래디언트 부스팅 분류기를 활용하는 것을 포함하여 수업 프로젝트 또는 일반적인 용도를 위한 템플릿 역할을 하기 위해 제공됩니다.

발표자는 XGBoost 및 LightGBM 라이브러리를 사용한 그래디언트 부스팅에 대해 논의합니다. XGBoost 라이브러리는 비슷하지만 scikit-learn보다 조금 더 복잡합니다. NumPy 배열을 DMatrix 형식으로 변환해야 하며, 적합 방법을 사용하는 대신 훈련 방법을 사용하여 모델을 훈련합니다. 클래스 구성원 확률을 얻기 위해 예측 메서드를 호출하여 예측을 수행할 수 있습니다. 반면에 Microsoft LightGBM 라이브러리에는 scikit-learn과 유사한 API가 있습니다. 그래디언트 부스팅 머신을 피팅하기 전에 하이퍼파라미터를 설정해야 하며 점수 방법을 사용하여 정확도를 계산할 수 있습니다. 제시된 사례에서 모델은 하이퍼파라미터를 조정하지 않고도 100% 훈련 정확도를 나타냅니다.

비디오는 특히 XGBoost 및 LightGBM과 같은 라이브러리를 활용하여 그래디언트 부스팅 기술의 효과를 강조하면서 끝납니다. 이러한 라이브러리는 그래디언트 부스팅 모델을 구현하기 위한 강력한 도구를 제공하고 성능과 정확도를 향상시키기 위한 다양한 최적화를 제공합니다.

또한 발표자는 그래디언트 부스팅에서 하이퍼파라미터 튜닝의 중요성을 인정합니다. 학습률, 트리 수, 트리 깊이와 같은 다양한 하이퍼파라미터는 모델의 성능에 상당한 영향을 미칠 수 있습니다. 따라서 특정 문제에 대한 최적의 설정을 찾기 위해 다양한 하이퍼파라미터 구성을 실험하는 것이 좋습니다.

그래디언트 부스팅을 더 자세히 알아보기 위해 비디오는 XGBoost, LightGBM 및 기타 관련 구현에 대한 연구 논문 및 문서를 참조할 것을 제안합니다. 이러한 리소스는 그래디언트 부스팅의 알고리즘, 기술 및 고급 기능에 대한 심층적인 설명을 제공합니다.

요약하면 이 비디오는 그래디언트 부스팅, 그 개념 및 XGBoost 및 LightGBM과 같은 라이브러리를 사용한 실제 구현에 대한 포괄적인 개요를 제공합니다. 복잡한 테이블 데이터 세트를 처리하는 기능, 경쟁에서의 효율성 및 예측 정확도 향상 가능성과 같은 그래디언트 부스팅의 장점을 강조합니다. 그래디언트 부스팅의 원리와 기술을 이해함으로써 실무자는 이 강력한 알고리즘을 활용하여 다양한 회귀 및 분류 문제를 해결할 수 있습니다.

  • 00:00:00 그래디언트 부스팅의 개념은 결정 트리와 미분 가능한 손실 함수를 사용하는 부스팅의 최신 버전으로 도입되었습니다. AdaBoost와 마찬가지로 그래디언트 부스팅은 약한 학습자를 강력한 모델로 강화하는 순차적 프로세스입니다. 그러나 둘 사이의 주요 차이점은 결정 트리가 어떻게 적합하느냐에 있습니다. 그래디언트 부스팅은 더 깊은 트리를 사용하고 학습 예제나 분류기에 가중치를 사용하지 않습니다. 그래디언트 부스팅의 핵심 아이디어는 모델을 개선하기 위해 손실 함수의 그래디언트를 사용하여 테이블 형식 데이터 세트에서 더 나은 성능을 제공하고 경쟁에서 널리 사용되는 알고리즘으로 만드는 것입니다. 이 섹션에서는 기본 트리 구성에서 시작하여 세 가지 기본 단계에서 그래디언트 부스팅의 개념적 개요를 제공합니다.

  • 00:05:00 회귀 맥락에서 그래디언트 부스팅에 대해 배웁니다. 먼저 루트 노드로만 구성된 기본 트리로 시작합니다. 이 예제에서는 주택 가격 예측 문제입니다. 우리는 해당 노드의 평균을 기반으로 목표를 예측합니다. 이 경우 훈련 세트에 있는 4개의 주택 가격의 평균입니다. 그런 다음 이전 트리의 예측 오류를 기반으로 다음 트리를 만들고 이 예측 오류를 사용하여 새 트리를 적합합니다. 1단계와 2단계의 트리를 결합하고 프로세스를 여러 번 반복하여 결과 라운드의 오류에 트리를 맞춥니다. 예측은 항상 이전 트리의 예측 조합이며 다른 손실 함수를 사용하여 분류하는 경우에도 동일한 개념이 적용됩니다.

  • 00:10:00 강사가 더 나은 예측을 위해 그래디언트 부스팅을 사용하는 방법을 설명합니다. 이 프로세스에는 초기 예측을 위한 의사 결정 트리 구축, 이전 트리의 오류에 대한 더 나은 예측을 위한 유사 잔차 계산, 1단계의 트리와 2단계의 트리 결합이 포함됩니다. 강사는 이 프로세스가 주택 가격과 관련된 간단한 예에 어떻게 적용될 수 있는지 설명하고 의사 결정 트리가 어떻게 보이는지 보여줍니다. 단순한 의사 결정 트리를 잔차 기반의 새로운 트리와 결합함으로써 모델은 더 정확하고 더 나은 예측을 할 수 있습니다.

  • 00:15:00 모든 트리의 예측을 합산하여 연속적으로 결합하는 추가 모델로서의 그래디언트 부스팅의 개념에 대해 논의합니다. 이 방법에는 학습 속도 또는 단계 크기로 사용되는 알파 값도 포함됩니다. 그래디언트 부스팅은 두 번째 단계를 여러 번 반복하고 과적합을 방지하기 위해 작은 단계 크기로 천천히 빌드업하여 실행됩니다. 따라서 새로운 트리는 이전 예측의 오류에 지속적으로 적합하며 예측을 위한 또 다른 열을 생성합니다. 이 과정은 하이퍼파라미터 설정에 따라 정해진 수의 트리가 완료될 때까지 계속됩니다.

  • 00:20:00 발표자가 회귀 및 분류에 모두 사용되는 그래디언트 부스팅 알고리즘을 설명합니다. 알고리즘은 교육 데이터 세트의 입력 데이터 세트가 미분 가능한 손실 함수와 함께 사용되는 일반적인 절차를 따릅니다. 첫 번째 단계에서 모델을 루트 노드로 초기화한 다음 두 번째 단계에서 알고리즘이 여러 트리를 피팅하고 터미널 노드를 생성합니다. 그런 다음 스피커는 각 노드에서의 예측 및 손실 계산에 대해 자세히 설명합니다. 알고리즘은 원하는 트리 수에 도달할 때까지 반복될 수 있으며 전반적인 목표는 손실을 최소화하는 것입니다.

  • 00:25:00 화자는 이전 모델과 새로운 예측 단계를 결합하고 학습 속도 또는 단계 크기에 의해 가중치를 적용하여 현재 모델을 계산하여 T 시간에 도달할 때까지 업데이트된 모델을 결정하는 방법을 설명합니다. 먼저 의사 잔차가 계산된 다음 실제 레이블과 이전 라운드의 모델 예측을 기반으로 손실의 도함수를 계산합니다. 그런 다음 잔차를 계산하고 특정 노드를 기준으로 손실을 최소화하는 예측 값을 결정한 다음 모델을 다시 업데이트합니다. 이 프로세스는 T 모델에 도달할 때까지 반복됩니다. 화자는 분류에 사용할 수 있는 음의 로그 우도 손실과 같은 미분 가능한 손실 함수를 언급하지만 이 클래스에서는 합계 제곱 오류 또는 평균 제곱 오류에 중점을 둡니다.

  • 00:30:00 연사는 그래디언트 부스팅과 관련된 단계와 그것이 실제로 어떻게 사용되는지에 대해 논의합니다. 첫 번째 단계는 표현을 최소화하는 예측을 찾아 주어진 노드에서 모든 교육 예제에 대한 손실을 최소화하는 것입니다. 두 번째 단계는 T 트리에 대한 루프를 사용하고 각 노드에서 예제를 평균화하여 각 리프 노드에서 예측을 계산합니다. 이전 모델을 포함하는 평균 예측에 새 항이 추가됩니다. 각 트리의 학습률은 일반적으로 동일하며 각 트리의 예측이 합산됩니다. 학습률의 목표는 유사 잔차를 줄여 과적합을 방지하는 것입니다. 마지막으로 발표자는 실제로 사용되는 그래디언트 부스팅의 몇 가지 더 흥미로운 측면을 간략하게 다룹니다.

  • 00:35:00 연사는 다중 프로세스 또는 컴퓨팅 노드를 활용할 수 없기 때문에 효율성을 제한할 수 있는 순차 알고리즘으로서 부스팅의 잠재적인 단점에 대해 논의합니다. 그러나 그래디언트 부스팅 프로세스를 보다 효율적으로 만들기 위해 몇 가지 트릭을 사용하는 xgBoost라는 부스팅 구현이 있습니다. 실제로 2015년부터 2017년까지 Kaggle에서 공개된 29개의 Challenge Winning Solution 중 17개가 xgBoost를 사용했습니다. 8개는 단독으로 xgBoost를 사용하여 모델을 훈련시켰고, 나머지 대부분은 xgBoost를 신경망과 결합하거나 널리 사용되는 앙상블 투표 기술인 스태킹을 사용했습니다. 그런 다음 발표자는 xgBoost가 효과에 기여하는 고유한 기능을 갖는 것으로 표시되는 서로 다른 부스팅 구현을 비교하는 논문에서 두 개의 표를 제공합니다.

  • 00:40:00 연사는 대략적인 글로벌, 핵심 학습, 희소성 인식 및 병렬 처리와 같은 몇 가지 이점을 제공하는 그래디언트 부스팅의 변형인 Extra Boost의 기능에 대해 논의합니다. Extra Boost는 분산 데이터 하위 집합의 요약 통계를 기반으로 최상의 분할을 찾기 위해 근사 방법을 구현합니다. 발표자는 Extra Boost의 성능과 다른 그래디언트 부스팅 구현을 정확한 그리디 방법에서 비교하고 Extra Boost가 한 구현과 동일한 성능을 갖지만 트리당 시간이 크게 감소하여 하이퍼파라미터 튜닝에 더 매력적임을 보여줍니다.

  • 00:45:00 이 비디오는 기본적으로 대규모 데이터 세트에서 잘 작동하는 확장 가능한 그래디언트 부스팅 구현인 Extra Boost에 대해 설명합니다. 이 비디오는 정규화, 누락된 기능에 대한 대치 기술 및 캐싱을 포함하여 일반 그래디언트 부스팅 기술에 비해 Extra Boost가 제공하는 다양한 개선 사항을 설명합니다. 이러한 개선 사항은 과잉 맞춤을 줄이는 데 도움이 되며 Extra Boost의 전반적인 성능을 향상시킬 수 있습니다. 또한 Extra Boost는 열 및 행 기반 서브샘플링을 사용하여 기능 및 훈련 예제의 하위 집합을 무작위로 선택하여 과적합 및 계산 효율성을 줄이는 데 도움이 될 수 있습니다. 비디오는 기술에 대한 자세한 설명을 위해 Extra Boost에 대한 문서를 읽을 것을 권장합니다.

  • 00:50:00 발표자는 과적합을 줄이고 예측 정확도를 향상시킬 수 있는 그래디언트 부스팅 머신의 최신 구현인 Extra Boost에 대한 개요를 제공합니다. 연사는 정확한 그리디 알고리즘과 히스토그램 기반 분할 찾기를 포함하여 분할을 찾기 위한 다양한 기술에 대해 논의합니다. 후자의 접근 방식은 연속 기능을 불연속 히스토그램으로 비닝하여 교육 속도를 개선하고 메모리 사용량을 줄일 수 있습니다. 스피커는 또한 Extra Boost를 훨씬 더 빠르고 정확한 또 다른 구현인 Light GBM과 비교합니다. Light GBM은 히스토그램 기반 분할 찾기를 사용하며 Extra Boost에 비해 메모리 사용량이 적고 예측 정확도가 높습니다.

  • 00:55:00 연사는 scikit-learn의 그래디언트 부스팅 분류기 구현에 대해 논의하고 최신 버전의 scikit-learn에 추가된 새로운 그래디언트 부스팅 분류기를 소개합니다. 새로운 분류기는 LightGBM에서 영감을 받은 히스토그램 기반 분할을 사용하여 이전 분류기보다 더 빠릅니다. 발표자는 그래디언트 부스팅 분류기를 모두 사용하고 XGBoost와 비교하여 어느 것이 가장 잘 수행되는지 결정할 것을 제안합니다. 발표자는 또한 시청자에게 수업 프로젝트나 일반 용도의 템플릿으로 사용할 코드 예제를 제공합니다. 예제에는 scikit-learn에서 그래디언트 부스팅 분류기를 구현하고 새로운 히스토그램 그래디언트 부스팅 분류기를 사용하는 것이 포함됩니다.

  • 01:00:00 발표자는 XGBoost 및 LightGBM 라이브러리를 사용한 그래디언트 부스팅에 대해 논의합니다. XGBoost 라이브러리는 비슷하지만 scikit-learn보다 조금 더 복잡하며 NumPy 배열을 D 매트릭스 형식으로 변환해야 합니다. 프리젠터는 임의의 매개변수를 설정하고 적합 대신 도트 트레인을 사용하여 모델을 훈련합니다. 그런 다음 모델은 클래스 구성원 확률을 예측하기 위해 예측을 호출할 수 있습니다. Microsoft LightGBM 라이브러리에는 scikit-learn과 유사한 API가 있으며 그래디언트 부스팅 머신을 피팅하고 점수 방법을 사용하여 정확도를 계산하기 전에 하이퍼 매개변수를 설정해야 합니다. 이 경우 모델은 하이퍼파라미터를 조정하지 않고도 100% 훈련 정확도를 나타냅니다.
 

7.6 랜덤 포레스트(L07: 앙상블 방법)



7.6 랜덤 포레스트(L07: 앙상블 방법)

엄청난! 드디어 강의 5의 마지막 부분에 도달했습니다. 가장 흥미로운 부분인 신성한 학습 파이프라인입니다. 신성한 학습 파이프라인은 다양한 데이터 처리 및 예측 단계를 결합하여 실제 응용 프로그램에서 매우 유용하게 만드는 개체 또는 클래스입니다. 파이프라인 작동 방식을 이해하는 데 도움이 되도록 개요 순서도를 살펴보겠습니다. 지금 당장 모든 복잡한 내용을 다루지는 않겠지만 파이프라인의 예를 제공한 후 바로 다시 살펴보겠습니다.

본질적으로 파이프라인은 추정기 및 변환기 API로 생각할 수 있습니다. 추정기와 유사하게 파이프라인에는 교육 세트에서 사용할 수 있는 적합 방법이 있습니다. 내부적으로 여러 맞춤 및 변환 단계가 수행된 후 최종 맞춤 단계가 수행됩니다. 파이프라인에 포함된 구성 요소에 따라 데이터 스케일링(예: 표준화 또는 최소-최대 스케일링) 또는 차원 감소와 같은 일련의 작업을 정의한 다음 학습 알고리즘을 교육할 수 있습니다. 그런 다음 파이프라인은 테스트 세트에서 사용할 수 있는 예측 모델을 반환합니다.

예측 단계 중에 테스트 세트에서 예측 메서드를 호출하면 파이프라인은 내부적으로 변환을 사용하여 훈련 세트에서 수행된 것과 동일한 크기 조정을 적용합니다. 또한 분류자의 경우 클래스 레이블을 반환하는 것과 같은 최종 예측 단계를 적용합니다. 이 개념을 설명하기 위해 파이프라인의 간단한 코드 예제를 살펴보겠습니다.

여기에서는 신성한 학습의 scikit-learn.dot.pipeline 하위 모듈에서 make_pipeline 함수를 사용하여 파이프라인을 만들고 있습니다. 파이프라인을 만드는 방법에는 여러 가지가 있지만 이 방법은 매우 편리합니다. 이 예에서는 분류자와 표준 스케일러로 구성된 간단한 파이프라인을 구성하고 있습니다. 이전 비디오에서 설명한 대로 표준 스케일러는 평균이 0이고 분산이 단위가 되도록 데이터를 표준화합니다. 파이프라인을 생성한 후 fit 메서드를 사용하여 훈련 데이터에서 파이프라인을 훈련할 수 있습니다. 그런 다음 예측 방법을 사용하여 테스트 세트에 대한 예측을 할 수 있습니다.

이제 피팅 방법이 파이프라인 내에서 작동하는 방식에 대해 자세히 살펴보겠습니다. fit이 호출되면 표준 스케일러가 먼저 적용됩니다. 학습 데이터에서 평균과 표준편차를 학습하고 이를 사용하여 데이터를 확장합니다. 이 프로세스에는 표준 스케일러가 스케일링된 데이터를 계산하고 다음 단계로 전달하는 맞춤 및 변환 단계가 포함됩니다. 이 경우 다음 단계는 K개의 최근접 이웃 분류기입니다. K개의 최근접 이웃 분류기는 표준화된 데이터를 수신하여 이 네 단계를 효과적으로 하나로 결합합니다. pipe.fit을 호출하면 이러한 모든 단계가 자동으로 수행되므로 개별적으로 실행하는 수고를 덜 수 있습니다.

예측 단계에서는 적합 단계가 없다는 점을 제외하면 동일한 프로세스가 발생합니다. 대신 파이프라인은 학습 세트 매개변수를 재사용하여 테스트 데이터를 확장하여 일관성을 보장합니다. 그런 다음 예측을 위해 스케일링된 테스트 데이터를 분류기로 전달합니다.

이 프로세스를 더 잘 시각화하기 위해 순서도를 다시 살펴보겠습니다. 사용자는 적합 및 예측 방법만 사용하면 됩니다. fit을 호출하면 파이프라인이 변환 단계를 자동으로 호출합니다. 파이프라인의 규칙은 마지막 단계를 분류자로 지정하는 것입니다. 마지막 단계만 적합을 호출하는 반면 모든 이전 단계는 적합 및 변환을 호출합니다. 결과적으로 파이프라인에는 표준 스케일러 또는 주성분 분석(PCA)과 같은 차원 감소 기술과 같은 여러 변환기가 있을 수 있습니다. 그러나 마지막 단계로 하나의 분류자만 가질 수 있습니다. 이 디자인은 파이프라인의 호환성과 기능을 보장합니다.

실제 파이프라인을 설명하기 위해 홀드아웃 방법을 사용하여 간단한 모델 선택 시나리오를 살펴보겠습니다. 이것은 단지 기본적인 데모일 뿐이며 이후 강의에서 K-겹 교차 검증과 같은 고급 모델 선택 방법을 다룰 것입니다.

홀드아웃 방법은 데이터를 훈련 세트와 검증 세트의 두 하위 집합으로 분할하는 것입니다. 훈련 세트는 파이프라인을 훈련하는 데 사용되며 검증 세트는 성능을 평가하고 최상의 모델을 선택하는 데 사용됩니다.

다음은 파이프라인으로 홀드아웃 메서드를 구현하는 방법의 예입니다.

from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
from sklearn.neighbors import KNeighborsClassifier
from sklearn.pipeline import make_pipeline
from sklearn.metrics import accuracy_score

# Load the iris dataset
data = load_iris()
X = data.data
y = data.target

# Split the data into training and validation sets
X_train, X_val, y_train, y_val = train_test_split(X, y, test_size= 0.2 , random_state= 42 )

# Create a pipeline
pipeline = make_pipeline(
    StandardScaler(),
    KNeighborsClassifier(n_neighbors= 3 )
)

# Train the pipeline
pipeline.fit(X_train, y_train)

# Make predictions on the validation set
y_pred = pipeline.predict(X_val)

# Evaluate the pipeline's accuracy
accuracy = accuracy_score(y_val, y_pred)
print(f "Validation accuracy: {accuracy}" )
이 예에서는 먼저 붓꽃 데이터셋을 로드합니다. 그런 다음 train_test_split 함수를 사용하여 데이터를 훈련 세트(X_train 및 y_train)와 검증 세트(X_val 및 y_val)로 분할합니다.

다음으로 make_pipeline을 사용하여 파이프라인을 생성하고 원하는 단계를 전달합니다. 이 경우 데이터를 표준화하기 위한 StandardScaler와 분류기로 n_neighbors=3인 KNeighborsClassifier를 포함합니다.

학습 데이터(X_train 및 y_train)에서 fit 메서드를 호출하여 파이프라인을 학습합니다.

학습 후 파이프라인을 사용하여 예측 메서드를 호출하여 유효성 검사 세트(X_val)에 대한 예측을 수행합니다.

마지막으로, 정확도_점수 함수를 사용하여 예측 레이블(y_pred)과 실제 레이블(y_val)을 비교하여 파이프라인의 정확도를 평가합니다.

이것은 모델 선택을 위한 홀드아웃 방법으로 파이프라인을 사용하는 기본적인 예입니다. 파이프라인 성능에 대한 보다 강력한 평가를 제공할 수 있는 교차 검증과 같은 고급 기술이 있다는 점을 명심하십시오.

 

7.7 쌓기(L07: 앙상블 방법)



7.7 쌓기(L07: 앙상블 방법)

네, 길고 긴 7강의였습니다. 그리고 마지막으로 스태킹에 대해 이야기하는 마지막 비디오에 도달하고 있습니다.

이 강의를 통해 우리는 많은 근거를 다루었습니다. 부트스트랩 샘플에 결정 트리를 맞추는 다수결 투표 및 배깅에 대해 논의했습니다. 이전 학습자의 실수나 오류를 기반으로 딥 학습자를 맞추는 부스팅과 잔차 및 그래디언트 부스팅도 다루었습니다. 또한 각 노드에서 임의의 기능 하위 집합을 사용하여 일반 배깅보다 성능을 향상시키는 랜덤 포레스트를 탐색했습니다. 이제 마지막으로 스태킹에 대해 이야기하겠습니다.

스태킹은 다수결 투표와 유사하지만, 다수결 투표를 수행하는 대신 다른 분류기의 예측을 결합하는 메타 분류기를 사용합니다. 스태킹에 대해 자세히 살펴보겠습니다.

계속 진행하기 전에 이 비디오의 주제인 스태킹을 상기시켜 드리겠습니다. 불필요한 슬라이드에 대해 사과하지만 1992년에 출판된 'Stacked Generalization'이라는 논문에서 David H. Wolpert가 제안한 stacking 알고리즘의 기본 사항에 초점을 맞추자. 참조하면 이해하기 쉽습니다. 따라서 이 기본 스택 쌓기 버전부터 시작하겠습니다.

이 알고리즘에서는 문제를 설정하는 입력과 출력을 정의합니다. 크기가 'n'인 훈련 데이터 세트로 작업하고 있습니다. 'x_i'로 표시된 각 특징 벡터는 'm'차원 벡터입니다. 유사하게 훈련 예제에 해당하는 클래스 레이블은 'y_i'로 표시됩니다. 이 알고리즘의 출력은 두 번째 분류기라고 하는 앙상블 분류기입니다.

이제 스태킹과 관련된 단계에 초점을 맞추겠습니다. 첫 번째 단계는 첫 번째 수준 분류기를 배우는 것입니다. 이러한 분류기에 맞추기 위해 1에서 't'까지 루프를 사용합니다. 따라서 'h_1'에서 'h_t'로 표시되는 분류기 모음이 있으며 입력 데이터 'X'와 클래스 레이블 'Y'에서 학습됩니다.

2단계로 이동하여 학습 세트에서 새 데이터 세트를 구성합니다. 각 학습 예제 'x_i'에 대해 수정된 특징 벡터 'x_i prime'을 포함하는 새 데이터 세트를 만듭니다. 수정된 특징 벡터 'x_i prime'은 첫 번째 수준 분류기의 예측을 포함합니다. 이러한 예측은 클래스 레이블 또는 클래스 구성원 확률일 수 있습니다. 이러한 예측을 사용하여 앞서 논의한 것과 유사한 다수결 투표를 수행할 수 있습니다. 그러나 여기서 멈추지 않습니다. 3단계로 진행합니다.

3단계에서는 다수결 투표를 수행하는 대신 첫 번째 수준 분류기의 예측을 기반으로 두 번째 수준 분류기를 학습합니다. 'x_i 프라임'은 수정된 설계 행렬을 나타내며 각 열에는 분류기 'h_1'에서 'h_t'까지의 예측이 포함됩니다. 클래스 레이블 또는 클래스 구성원 확률을 고려하여 이러한 예측에 분류기를 맞출 수 있습니다. 이 두 번째 수준 분류기는 이러한 예측에 대해 학습됩니다.

기본 쌓기 절차의 한 가지 약점은 과적합에 대한 민감성입니다. 첫 번째 수준 분류자가 훈련 세트에 과적합된 경우 메타 분류기의 성능에 부정적인 영향을 미치고 시스템의 전반적인 과적합으로 이어질 수 있습니다. 이를 해결하기 위해 교차 검증을 통합하여 쌓기 절차를 개선할 수 있습니다.

교차 유효성 검사는 데이터 세트를 여러 하위 집합으로 분할하고 이러한 하위 집합의 다양한 조합에 대해 모델을 교육하는 기술입니다. 이는 과대적합을 줄이고 보다 신뢰할 수 있는 성능 추정치를 얻는 데 도움이 됩니다. 일반적으로 사용되는 변형 중 하나는 데이터 세트가 'k' 하위 집합 또는 접기로 분할되는 k-폴드 교차 검증입니다. 우리는 'k-1' 폴드에서 모델을 훈련하고 나머지 폴드에서 성능을 평가합니다. 이 프로세스는 'k'번 반복되며 매번 다른 접기를 유효성 검사 세트로 사용합니다. 그런 다음 각 폴드의 성능 결과를 평균화하여 모델 성능에 대한 보다 강력한 추정치를 얻을 수 있습니다.

스태킹의 맥락에서 교차 검증을 사용하여 첫 번째 수준 분류기의 훈련을 개선할 수 있습니다. 전체 교육 세트에서 교육하는 대신 데이터를 'k' 접기로 나눕니다. 각 폴드에 대해 나머지 'k-1' 폴드에서 첫 번째 수준 분류기를 훈련하고 이를 사용하여 제외된 폴드에서 예측을 수행합니다. 이 프로세스는 각 폴드에 대해 반복되어 전체 트레이닝 세트에 대한 예측이 됩니다.

전체 교육 세트에 대한 첫 번째 수준 분류기의 예측을 얻은 후에는 이러한 예측에 대해 두 번째 수준 분류기를 교육하는 스태킹 알고리즘의 3단계로 진행할 수 있습니다. 교차 검증을 통합함으로써 우리는 두 번째 수준 분류자가 첫 번째 수준 분류자의 다양하고 신뢰할 수 있는 예측에 대해 훈련되어 과적합의 위험을 줄입니다.

두 번째 수준 분류기를 교육한 후 이를 사용하여 보이지 않는 새로운 데이터를 예측할 수 있습니다. 예측은 일반적으로 첫 번째 수준 분류기를 통해 입력을 공급하여 예측을 얻은 다음 이러한 예측을 두 번째 수준 분류기에 대한 입력으로 사용하여 얻습니다. 두 번째 수준 분류기의 출력은 스태킹 앙상블의 최종 예측을 나타냅니다.

스태킹은 여러 분류기의 강점을 활용하여 전반적인 성능을 향상시키는 강력한 앙상블 학습 기술입니다. 스태킹은 여러 분류기의 예측을 결합하여 데이터의 다양한 측면을 캡처하고 더 정확한 예측을 수행할 수 있습니다. 다양한 문제 영역과 분류기 유형에 적용할 수 있는 유연하고 다양한 기술입니다.

결론적으로 스태킹은 단순한 다수결 투표를 넘어선 앙상블 학습 방법이다. 2단계 메타 분류기를 통해 여러 분류기의 예측을 결합하여 보다 정교한 의사 결정이 가능합니다. 교차 검증을 통합함으로써 우리는 스태킹 알고리즘의 견고성과 일반화 능력을 향상시킬 수 있습니다. 스태킹은 기계 학습에서 유용한 도구이며 예측 성능을 향상시키기 위해 다양한 응용 프로그램에서 널리 사용되었습니다.

 

8.1 과적합 및 과소적합 소개(L08: 모델 평가 1부)



8.1 과적합 및 과소적합 소개(L08: 모델 평가 1부)

좋은 하루 되세요! 모두 잘 지내고 계시길 바랍니다. 오늘 여러분과 공유할 흥미로운 소식이 있습니다. 바로 시작하겠습니다.

무엇보다도 먼저 귀사의 프로젝트 제안서 평가를 마쳤으며 제가 본 아이디어와 계획에 정말 만족하고 있습니다. 12월 중순에 프로젝트 프레젠테이션 및 보고서가 마감될 때까지 여러분 각자가 프로젝트에 대해 많은 생각을 했고 앞으로 몇 주 동안 명확한 비전을 가지고 있음이 분명합니다. 귀하의 제안에 담긴 세부 수준과 사려 깊음에 진심으로 감명 받았습니다.

그러나 추가 피드백이나 설명이 필요하다고 느끼거나 추가 기술 탐색에 대한 지침이 필요한 경우 주저하지 말고 저에게 연락하십시오. 제가 할 수 있는 모든 방법으로 추가 지원과 지원을 제공하게 되어 기쁩니다. 저에게 이메일을 보내시거나 회의 일정을 잡으시면 제가 도와드리겠습니다.

더 좋은 소식으로 넘어가면, 우리는 앙상블 방법 강의를 성공적으로 마쳤습니다. 이는 새롭고 흥미로운 주제에 착수할 때임을 의미합니다. 다음 강의 시리즈에서는 모델 평가에 중점을 둘 것입니다. 다양한 기계 학습 분류기와 알고리즘을 소개했던 이전 강의와 달리 이번에는 이러한 알고리즘의 성능을 공정하게 평가하는 방법에 대해 알아봅니다.

이 새 시리즈에서는 다양한 주제를 다룹니다. 과소적합 및 과적합의 개념과 손실 함수의 편향 및 분산 분해와 어떻게 관련되는지 이해하는 것으로 시작하겠습니다. 그런 다음 모델을 효과적으로 비교할 수 있는 교차 유효성 검사 방법에 대해 알아봅니다. 또한 다양한 기계 학습 알고리즘을 비교하여 특정 데이터 세트에 대한 성능을 결정하는 기술에 대해 논의합니다. 모델 선택과 알고리즘 선택을 구분하는 것이 중요하며 이 구분을 더 자세히 살펴보겠습니다.

더 이상 고민하지 않고 모델 평가에 대한 소개부터 시작하여 과대적합 및 과소적합의 세계에 대해 자세히 살펴보겠습니다. 이번 강의(8강)에서는 바이어스 및 분산 분해와 과적합 및 과소적합과의 관계에 대해 논의할 것입니다. 이러한 개념을 포괄적으로 이해하기 위해 제곱 오차 손실(회귀 관련) 및 01 손실(분류 관련)의 편향 및 분산 분해를 분석합니다. 또한 분해에서 다루는 통계적 편향을 넘어 기계 학습의 다양한 유형의 편향을 다룰 것입니다.

강의 자료를 살펴보기 전에 한 걸음 뒤로 물러나 현재 강의 내용을 간략하게 요약해 보겠습니다. 소개, Python, NumPy 및 scikit-learn과 같은 계산 측면과 트리 기반 방법을 다루었습니다. 또한 업계에서 트리 기반 방법의 관련성과 앙상블 방법, 특히 부스팅 및 랜덤 포레스트의 인기에 대해 논의했습니다. 이제 모델 평가에 중점을 두고 신뢰 구간, 교차 검증, 모델 선택, 알고리즘 선택 및 성능 메트릭을 포함한 다양한 하위 주제를 살펴보겠습니다. 마지막으로 차원 축소 및 비지도 학습에 대해 다룰 것입니다.

이 강의는 앙상블 방법에 대한 이전 강의보다 비교적 간결하기 때문에 확실히 말씀드리고 싶습니다. 그럼에도 불구하고 모델 평가를 더 잘 이해하는 데 도움이 되는 중요한 개념을 다룹니다. 과적합, 과소적합, 편향 및 분산 분해, 과적합 및 과소적합과의 관계, 01 손실의 편향 및 분산 분해, 머신 러닝에서 다양한 유형의 편향에 대한 개요 등 8강을 구성하는 6개의 하위 주제에 대해 자세히 살펴보겠습니다.

이 강의가 진행되는 동안 잠시 멈추고 퀴즈를 넘어 제가 제기하는 질문에 대해 생각해 보시기 바랍니다. 문제에 대한 내 관점을 고려하기 전에 잠시 멈추고 자신의 생각을 공식화하는 것이 항상 도움이 됩니다. 이러한 방식으로 자료에 참여하면 학습 경험이 향상됩니다.

  1. 과적합 및 과소적합: 기계 학습에서 과적합은 모델이 교육 데이터에서 매우 잘 수행되지만 보이지 않는 새로운 데이터로 일반화하지 못하는 경우에 발생합니다. 반면에 과소적합은 모델이 너무 단순해서 데이터의 기본 패턴을 캡처하지 못할 때 발생합니다.

과적합은 모델이 너무 복잡하고 사용 가능한 학습 데이터의 양에 비해 매개변수가 너무 많기 때문에 발생할 수 있습니다. 이는 실제 기본 패턴 대신 훈련 데이터의 노이즈에 맞는 모델로 이어집니다. 반면에 과소적합은 모델이 데이터의 패턴을 포착할 만큼 충분히 복잡하지 않을 때 발생합니다.

  1. 편향 및 분산 분해: 편향과 분산은 기계 학습 모델에서 오류의 두 가지 원인입니다. 편향은 모델이 다른 훈련 세트에서 훈련될 때 평균적으로 예측이 실제 값에서 얼마나 떨어져 있는지 측정합니다. 반면 분산은 모델이 다른 훈련 세트에서 훈련될 때 주어진 입력에 대한 예측이 얼마나 달라지는지를 측정합니다.

편향과 분산은 수학적으로 분해될 수 있습니다. 모델의 예상 제곱 오차는 제곱 편향, 분산 및 기약 오차로 분해될 수 있습니다. 제곱 편향은 모델의 예측과 실제 값 간의 평균 차이를 측정합니다. 분산은 주어진 입력에 대한 모델 예측의 변동성을 측정합니다. 감소 불가능한 오류는 어떤 모델로도 줄일 수 없는 데이터의 고유한 노이즈를 나타냅니다.

  1. 과적합 및 과소적합과의 관계: 바이어스-분산 절충은 과적합 및 과소적합과 밀접한 관련이 있습니다. 과적합은 종종 낮은 편향과 높은 분산과 관련이 있습니다. 이 모델은 훈련 데이터에 매우 적합하지만 훈련 세트의 작은 변동에 너무 민감하기 때문에 새 데이터로 일반화하지 못합니다.

반면에 과소적합은 편향이 높고 분산이 낮습니다. 모델이 너무 단순하고 데이터의 기본 패턴을 캡처할 수 없으므로 교육 및 테스트 데이터 모두에서 성능이 저하됩니다.

  1. 01 손실의 바이어스 및 분산 분해: 지금까지 회귀 문제에서 일반적으로 사용되는 제곱 오차 손실을 사용한 바이어스 및 분산 분해에 대해 논의했습니다. 그러나 분류 문제에서는 일반적으로 잘못 분류된 인스턴스의 비율을 측정하는 01 손실을 사용합니다.

01 손실의 바이어스-분산 분해는 제곱 오차 손실과 유사하지만 더 복잡한 수학을 포함합니다. 제곱 편향은 모델의 예측과 실제 레이블 간의 오분류율의 예상 차이를 측정합니다. 분산은 주어진 입력에 대한 오분류 비율의 변동성을 측정합니다.

  1. 기계 학습의 여러 유형의 편향 개요: 편향-분산 분해에서 논의된 통계적 편향 외에도 기계 학습에는 다른 유형의 편향이 있습니다.
  • 샘플링 편향: 훈련 데이터가 실제 모집단을 대표하지 않거나 분포가 왜곡된 경우 발생합니다. 이것은 훈련 데이터에서 잘 수행되지만 더 넓은 모집단으로 일반화되지 못하는 모델로 이어질 수 있습니다.
  • 알고리즘 편향: 알고리즘 자체에서 발생할 수 있는 편향을 말합니다. 예를 들어 특정 알고리즘은 노출된 교육 데이터 또는 고려하는 기능에 따라 편향되기 쉽습니다.
  • 인지적 편향: 주관적 판단이나 데이터 라벨링 또는 기능 선택에서 무의식적인 편향과 같이 인간의 의사 결정 과정에서 발생할 수 있는 편향을 말합니다.

공정하고 신뢰할 수 있는 기계 학습 모델을 구축하려면 이러한 다양한 유형의 편향을 이해하는 것이 중요합니다.

이것으로 8강에서 다루는 주요 주제를 마칩니다. 보시다시피 과적합, 과소적합, 편향 및 분산은 모델 평가에서 중요한 역할을 하는 상호 연결된 개념입니다. 모델의 과적합 또는 과소적합을 방지하려면 복잡성과 일반화 가능성 사이의 균형을 유지하는 것이 중요합니다. 또한 다양한 유형의 편견을 인식하면 기계 학습에서 공정성과 윤리적 고려 사항을 해결하는 데 도움이 될 수 있습니다.

사유: