머신 러닝 알고리즘 향상을위한 종합 가이드



이 블로그는 Boosting Machine Learning이 작동하는 방식과이를 구현하여 Machine Learning 모델의 효율성을 높이는 방법에 전적으로 중점을 둡니다.

의료, 마케팅, 비즈니스 등의 분야에서 많은 발전이 이루어지면서 더욱 발전되고 복잡한 개발이 필요하게되었습니다. . 머신 러닝 강화는 복잡한 데이터 기반의 실제 문제를 해결하는 데 사용할 수있는 기술 중 하나입니다. 이 블로그는 Boosting Machine Learning이 작동하는 방식과이를 구현하여 Machine Learning 모델의 효율성을 높이는 방법에 전적으로 중점을 둡니다.

인공 지능 및 기계 학습에 대한 심층적 인 지식을 얻으려면 라이브에 등록 할 수 있습니다. 24/7 지원 및 평생 액세스를 제공하는 Edureka





다룰 주제 목록은 다음과 같습니다. 이 블로그에서 :

  1. 부스팅이 사용되는 이유는 무엇입니까?
  2. 부스팅이란?
  3. 부스팅 알고리즘은 어떻게 작동합니까?
  4. 부스팅 유형
  5. 데모

부스팅이 사용되는 이유는 무엇입니까?

복잡한 문제를 해결하려면 더 고급 기술이 필요합니다. 고양이와 개 이미지가 포함 된 이미지 데이터 세트가 주어 졌을 때 이러한 이미지를 두 개의 개별 클래스로 분류 할 수있는 모델을 구축하라는 요청을 받았다고 가정 해 보겠습니다. 다른 모든 사람과 마찬가지로 아래와 같은 규칙을 사용하여 이미지를 식별하는 것으로 시작합니다.



  1. 이미지에는 뾰족한 귀가 있습니다. 고양이

  2. 이미지에는 고양이 모양의 눈이 있습니다. 고양이

  3. 이미지의 팔다리가 더 큽니다 : 개



  4. 이미지는 날카로운 발톱이 있습니다 : 고양이

  5. 이미지는 더 넓은 입 구조를 가지고 있습니다 : 개

이러한 모든 규칙은 이미지가 개인 지 고양이인지 식별하는 데 도움이되지만 개별 (단일) 규칙에 따라 이미지를 분류하면 예측에 결함이있을 수 있습니다. 이러한 각 규칙은 이미지를 고양이 또는 개로 분류 할만큼 강력하지 않기 때문에 개별적으로 약한 학습자라고합니다.

따라서 예측이 더 정확한지 확인하기 위해 다수 규칙 또는 가중 평균을 사용하여 이러한 각 약한 학습자의 예측을 결합 할 수 있습니다. 이것은 강력한 학습자 모델을 만듭니다.

위의 예에서 우리는 5 명의 약한 학습자를 정의했으며 이러한 규칙의 대부분 (즉, 5 명의 학습자 중 3 명이 이미지를 고양이로 예측)은 예측을 제공합니다. 이미지는 고양이입니다. 따라서 최종 출력은 고양이입니다.

그래서 이것은 우리에게 질문을 던집니다.

부스팅이란?

부스팅은 모델의 정확성을 높이기 위해 기계 학습 알고리즘 세트를 사용하여 약한 학습자를 강한 학습자로 변환하는 앙상블 학습 기술입니다.

What-Is-Boosting-Boosting-Machine-Learning-Edureka

무엇이 부스팅인가 – 머신 러닝 부스트 – Edureka

제가 언급했듯이 Boosting은 앙상블 학습 방법이지만 정확히 앙상블 학습이란 무엇입니까?

기계 학습에서 Ensemble은 무엇입니까?

앙상블 학습은 여러 학습자를 결합하여 기계 학습 모델의 성능을 향상시키는 데 사용되는 방법입니다. 단일 모델과 비교할 때 이러한 유형의 학습은 효율성과 정확성이 향상된 모델을 구축합니다. 이것이 바로 앙상블 방법을 사용하여 Netflix 추천 경쟁, Kaggle 경쟁 등과 같은 시장을 선도하는 경쟁에서 승리하는 데 사용되는 이유입니다.

앙상블 학습이란 무엇인가 – 기계 학습 향상 – Edureka

아래에서는 Boosting과 Bagging의 차이점에 대해서도 설명했습니다.

부스팅 vs 배깅

앙상블 학습은 두 가지 방법으로 수행 할 수 있습니다.

  1. 순차 앙상블, 널리 알려진 부스팅 , 여기서 약한 학습자는 훈련 단계에서 순차적으로 생성됩니다. 이전의 잘못 분류 된 샘플에 더 높은 가중치를 할당하여 모델의 성능을 향상시킵니다. 부스팅의 예는 AdaBoost 알고리즘입니다.

  2. 병렬 세트 , 널리 알려진 포장 , 여기서 약한 학습자는 훈련 단계에서 동시에 생성됩니다. 모델의 성능은 부트 스트랩 된 데이터 세트에 대해 여러 약한 학습자를 병렬로 훈련하여 향상시킬 수 있습니다. 배깅의 예는 Random Forest입니다. 연산.

이 블로그에서는 부스팅 방법에 대해 중점적으로 다룰 것이므로 아래 섹션에서는 부스팅 알고리즘이 어떻게 작동하는지 이해합니다.

부스팅 알고리즘은 어떻게 작동합니까?

부스팅 알고리즘 작동의 기본 원칙은 여러 약한 학습자를 생성하고 예측을 결합하여 하나의 강력한 규칙을 형성하는 것입니다. 이러한 약한 규칙은 데이터 세트의 다양한 분포에 기본 기계 학습 알고리즘을 적용하여 생성됩니다. 이러한 알고리즘은 각 반복에 대해 약한 규칙을 생성합니다. 여러 번 반복 한 후 약한 학습자가 결합되어보다 정확한 결과를 예측할 수있는 강력한 학습자를 형성합니다.

부스팅 알고리즘의 작동 원리 – 기계 학습 향상 – Edureka

알고리즘의 작동 방식은 다음과 같습니다.

1 단계: 기본 알고리즘은 데이터를 읽고 각 표본 관측치에 동일한 가중치를 할당합니다.

2 단계: 기본 학습자가 만든 잘못된 예측이 식별됩니다. 다음 반복에서는 이러한 잘못된 예측에 대한 가중치가 더 높은 다음 기본 학습자에게 이러한 잘못된 예측이 할당됩니다.

3 단계 : 알고리즘이 출력을 올바르게 분류 할 수있을 때까지 2 단계를 반복합니다.

따라서 Boosting의 주요 목표는 잘못 분류 된 예측에 더 집중합니다.

이제 부스팅 알고리즘이 어떻게 작동하는지 알았으므로 다양한 유형의 부스팅 기술을 이해하겠습니다.

부스팅 유형

부스팅을 수행 할 수있는 세 가지 주요 방법이 있습니다.

  1. 적응 형 부스팅 또는 AdaBoost

  2. 그라디언트 부스팅

  3. XGBoost

각 유형의 기본 사항에 대해 설명하겠습니다.

적응 형 부스팅

  • AdaBoost는 여러 약한 학습자를 하나의 강력한 학습자로 결합하여 구현됩니다.

  • AdaBoost의 약한 학습자는 단일 입력 기능을 고려하고 결정 그루터기라는 단일 분할 의사 결정 트리를 그립니다. 첫 번째 결정 그루터기를 그리는 동안 각 관찰의 무게를 동일하게 측정합니다.

  • 첫 번째 결정 그루터기의 결과가 분석되고 관측치가 잘못 분류 된 경우 더 높은 가중치가 할당됩니다.

  • 이것을 게시하면 가중치가 더 높은 관측치를 더 중요한 것으로 간주하여 새로운 결정 그루터기를 그립니다.

  • 다시 한 번, 관측치가 잘못 분류 된 경우 더 높은 가중치가 부여되고 모든 관측치가 올바른 클래스에 속할 때까지이 프로세스가 계속됩니다.

  • Adaboost는 분류 및 회귀 기반 문제 모두에 사용할 수 있지만 분류 목적으로 더 일반적으로 사용됩니다.

그라디언트 부스팅

Gradient Boosting은 또한 순차적 앙상블 학습을 기반으로합니다. 여기서 기본 학습자는 현재 기본 학습자가 항상 이전 학습자보다 더 효과적인 방식으로 순차적으로 생성됩니다. 즉, 전체 모델이 반복 할 때마다 순차적으로 향상됩니다.

이러한 유형의 부스팅의 차이점은 잘못 분류 된 결과에 대한 가중치가 증가하지 않는다는 것입니다. 대신 Gradient Boosting 방법은 손실 함수를 줄이기 위해 약한 학습자를 추가하는 새로운 모델을 추가하여 이전 학습자의 손실 함수를 최적화하려고합니다.

여기서 주된 아이디어는 이전 학습자의 예측 오류를 극복하는 것입니다. 이 유형의 부스팅에는 세 가지 주요 구성 요소가 있습니다.

  1. 손실 기능 개선되어야합니다.

  2. 약한 학습자 예측을 계산하고 강력한 학습자를 형성합니다.

  3. 추가 모델 손실 함수를 정규화합니다.

AdaBoost와 마찬가지로 Gradient Boosting은 분류 및 회귀 문제 모두에 사용할 수 있습니다.

XGBoost

XGBoost는 Gradient Boosting 방법의 고급 버전으로 말 그대로 eXtreme Gradient Boosting을 의미합니다. Tianqi Chen이 개발 한 XGBoost는 DMLC (Distributed Machine Learning Community) 범주에 속합니다.

이 알고리즘의 주요 목표는 계산의 속도와 효율성을 높이는 것입니다. Gradient Descent Boosting 알고리즘은 데이터 세트를 순차적으로 분석하기 때문에 더 느린 속도로 출력을 계산하므로 XGBoost를 사용하여 모델의 성능을 향상 시키거나 크게 향상시킵니다.

자바 프로그램의 기본 구조

XGBoost – 머신 러닝 향상 – Edureka

XGBoost는 계산 속도와 모델 효율성에 중점을 두도록 설계되었습니다. XGBoost에서 제공하는 주요 기능은 다음과 같습니다.

  • 의사 결정 트리를 병렬로 생성합니다.

  • 크고 복잡한 모델을 평가하기위한 분산 컴퓨팅 방법을 구현합니다.

  • Out-of-Core 컴퓨팅을 사용하여 방대한 데이터 세트를 분석합니다.

  • 리소스를 최대한 활용하기 위해 캐시 최적화를 구현합니다.

그래서 이것들은다양한 유형의 Boosting Machine Learning 알고리즘. 흥미로운 점을 만들기 위해 아래 섹션에서 데모를 실행하여 부스팅 알고리즘이 Python에서 어떻게 구현 될 수 있는지 확인합니다.

Python에서 머신 러닝 향상

짧은 면책 조항 :이 데모를 실행하기 위해 Python을 사용할 것이므로 Python을 모르면 다음 블로그를 방문 할 수 있습니다.

  1. 처음부터 Python 3을 배우는 방법 – 초보자 가이드

이제 손을 더럽 히고 코딩을 시작할 때입니다.

문제 설명: 버섯 데이터 세트를 연구하고 버섯의 기능을 분석하여 버섯을 유독 한 것으로 분류 할 수있는 기계 학습 모델을 구축합니다.

데이터 세트 설명 : 이 데이터 세트는 23 종의 아가미 버섯에 따른 가상 샘플에 대한 자세한 설명을 제공합니다. 각 종은 식용 버섯 또는 비 식용 (독성) 버섯으로 분류됩니다.

논리: 버섯의 식용 여부를 예측하기 위해 Boosting 알고리즘 중 하나를 사용하여 기계 학습 모델을 구축합니다.

1 단계 : 필요한 패키지 가져 오기

from sklearn.ensemble import AdaBoostClassifier from sklearn.preprocessing import LabelEncoder from sklearn.tree import DecisionTreeClassifier import pandas as pd # Import train_test_split function from sklearn.model_selection import train_test_split #Import scikit-learn metrics module for correct calculation from sklearn import metrics

2 단계 : 데이터 세트 가져 오기

# 데이터 데이터 세트로드 = pd.read_csv ( 'C : //Users//NeelTemp//Desktop//mushroomsdataset.csv')

3 단계 : 데이터 처리

# 열 이름을 정의합니다. dataset.columns = [ 'target', 'cap-shape', 'cap-surface', 'cap-color', 'bruises', 'odor', 'gill-attachment', 'gill-spacing ','아가미 크기 ','아가미 색 ','줄기 모양 ','줄기 뿌리 ','줄기 표면 위 고리 ','줄기 표면 아래 고리 ','줄기 색 -고리 위 ','줄기 색 ','베일 형 ','베일 색 ','고리 번호 ','고리 형 ','포 자색 ','인구 ','habitat '] for label in dataset.columns : dataset [label] = LabelEncoder (). fit (dataset [label]). transform (dataset [label]) # 데이터 세트에 대한 정보 표시 print (dataset.info ( )) Int64Index : 8124 개 항목, 6074 ~ 686 개 데이터 열 (총 23 개 열) : target 8124 non-null int32 cap-shape 8124 non-null int32 cap-surface 8124 non-null int32 cap-color 8124 non-null int32 bruises 8124 non-null int32 odor 8124 non-null int32 gill-attachment 8124 non-null int32 gill-spacing 8124 non-null int32 gill-size 8124 non-null int32 gill-color 8124 non-null int32 stalk-shape 8124 non-null int32 stalk-root 8124 null이 아닌 int32 stalk-surface-above-ring 8124 non-null int32 stalk-surface-below-ring 8124 non-null int32 stalk-color-above-ring 8124 non-null int32 stalk-color-below-ring 8124 non-null int32 베일- type 8124 non-null int32 veil-color 8124 non-null int32 ring-number 8124 non-null int32 ring-type 8124 non-null int32 spore-print-color 8124 non-null int32 인구 8124 non-null int32 서식지 8124 non- null int32 dtypes : int32 (23) 메모리 사용량 : 793.4KB

4 단계 : 데이터 스 플라이 싱

X = dataset.drop ([ 'target'], 축 = 1) Y = 데이터 세트 [ 'target'] X_train, X_test, Y_train, Y_test = train_test_split (X, Y, test_size = 0.3)

5 단계 : 모델 구축

모델 = DecisionTreeClassifier (criterion = 'entropy', max_depth = 1) AdaBoost = AdaBoostClassifier (base_estimator = model, n_estimators = 400, learning_rate = 1)

위의 코드 스 니펫에서는 AdaBoost 알고리즘을 구현했습니다. ‘AdaBoostClassifier’함수는 세 가지 중요한 매개 변수를 사용합니다.

  • base_estimator : 기본 추정기 (약한 학습자)는 기본적으로 의사 결정 트리입니다.
  • n_estimator :이 필드는 사용할 기본 학습자 수를 지정합니다.
  • learning_rate :이 필드는 기본값 인 1로 설정 한 학습률을 지정합니다.
# 학습 데이터로 모델 맞추기 boostmodel = AdaBoost.fit (X_train, Y_train)

6 단계 : 모델 평가

# 모델의 정확도 평가 y_pred = boostmodel.predict (X_test) predicts = metrics.accuracy_score (Y_test, y_pred) # 백분율로 정확도 계산 print ( '정확도 :', predicts * 100, '%') 정확도 이다 : 100.0 %

완벽하게 100 %의 정확도를 받았습니다!

이것으로 우리는이 Boosting Machine Learning 블로그를 끝맺습니다. 머신 러닝에 대해 자세히 알아 보려면 다음 블로그를 읽어보세요.

인공 지능 및 기계 학습에 대한 전체 과정에 등록하려는 경우 Edureka는 특별히 선별 된 지도 학습, 비지도 학습 및 자연어 처리와 같은 기술에 능숙해질 것입니다. 여기에는 딥 러닝, 그래픽 모델 및 강화 학습과 같은 인공 지능 및 기계 학습의 최신 발전 및 기술적 접근에 대한 교육이 포함됩니다.