소개
머신 러닝 모델을 평가하는 것은 최종 단계가 아니라 성공의 핵심입니다. 높은 정확도로 눈부신 최첨단 모델을 구축한다고 상상해보십시오. 실제 압력으로 인해 무너질 수 있습니다. 평가는 메트릭을 진압하는 것 이상입니다. 모델이 야생에서 일관되게 수행되도록하는 것입니다. 이 기사에서는 가장 유망한 분류 모델조차 탈선 할 수있는 일반적인 함정에 뛰어 들고 모델을 좋은 것에서 예외적으로 향상시킬 수있는 모범 사례를 드러 낼 수 있습니다. 분류 모델링 작업을 신뢰할 수 있고 효과적인 솔루션으로 바꾸겠습니다.
개요
- 분류 모델 구성 : 단계별 지침으로 견고한 분류 모델을 구축하십시오.
- 빈번한 실수를 식별하십시오 : 분류 모델링에서 일반적인 함정을 발견하고 피하십시오.
- 과적으로 이해하기 : 오버 피트팅을 이해하고 모델에서이를 방지하는 방법을 배우십시오.
- 모델 건설 기술 향상 : 모범 사례 및 고급 기술로 모델 건설 기술을 향상시킵니다.
목차
- 소개
- 분류 모델링 : 개요
- 기본 분류 모델 구축
- 1. 데이터 준비
- 2. 로지스틱 회귀
- 3. 지원 벡터 머신 (SVM)
- 4. 의사 결정 트리
- 5. 텐서 플로우가있는 신경망
- 실수를 식별합니다
- 그리드 검색을 사용한 개선 된 로지스틱 회귀의 예
- Tensorflow가있는 신경망
- 다양한 메트릭의 중요성을 이해합니다
- 모델 성능의 시각화
- 결론
- 자주 묻는 질문
분류 모델링 : 개요
분류 문제에서 독립 변수를 사용하여 대상 변수의 레이블을 예측하는 모델을 구축하려고합니다. 라벨이 붙은 대상 데이터를 다룰 때 로지스틱 회귀, SVM, 의사 결정 트리 등과 같은 감독 머신 러닝 알고리즘이 필요합니다. 또한 분류 문제를 해결하고 사람들이 저지르는 일반적인 실수를 식별하고 피하는 방법을 결정하기위한 신경망 모델을 살펴볼 것입니다.
기본 분류 모델 구축
Kaggle의 Date-Fruit 데이터 세트를 사용하여 기본 분류 모델을 만드는 것을 보여줍니다. 데이터 세트 정보 : 대상 변수는 Barhee, Deglet Nour, Sukkary, Rotab Mozafati, Ruthana, Safawi 및 Sagai의 7 가지 유형의 날짜 과일로 구성됩니다. 이 데이터 세트는 7 개의 다른 날짜 과일 품종의 898 개의 이미지로 구성되며 34 개의 기능이 이미지 처리 기술을 통해 추출되었습니다. 목표는 이러한 과일을 속성에 따라 분류하는 것입니다.
1. 데이터 준비
팬더를 PD로 가져옵니다 sklearn.model_selection import train_test_split Sklearn에서 프로세스 수입 표준 확장기 # 데이터 세트를로드하십시오 data = pd.read_excel ( '/content/date_fruit_datasets.xlsx') # 데이터를 기능과 대상으로 분할합니다 x = data.drop ( 'class', axis = 1) y = data [ 'class'] # 데이터 세트를 교육 및 테스트 세트로 분할합니다 x_train, x_test, y_train, y_test = train_test_split (x, y, test_size = 0.3, random_state = 42) # 기능 스케일링 scaler = 표준 caler () x_train = scaler.fit_transform (x_train) x_test = scaler.transform (x_test)
2. 로지스틱 회귀
sklearn.linear_model에서 LogisticRegression 가져 오기 Sklearn.metrics import accuracy_score에서 # 로지스틱 회귀 모델 log_reg = logisticRegression () log_reg.fit (x_train, y_train) # 예측 및 평가 y_train_pred = log_reg.predict (x_train) y_test_pred = log_reg.predict (x_test) # 정확성 Train_acc = accuracy_score (y_train, y_train_pred) test_acc = accuracy_score (y_test, y_test_pred) print (f'logistic regression- 트레인 정확도 : {train_acc}, 테스트 정확도 : {test_acc} ')
결과:
- 로지스틱 회귀 - 트레인 정확도 : 0.9538<br><br> - 테스트 정확도 : 0.9222
또한 읽기 : 로지스틱 회귀 소개
3. 지원 벡터 머신 (SVM)
Sklearn.svm Import SVC에서 Sklearn.metrics import accuracy_score에서 # svm svm = svc (kernel = 'linear', propability = true) svm.fit (x_train, y_train) # 예측 및 평가 y_train_pred = svm.predict (x_train) y_test_pred = svm.predict (x_test) Train_Accuracy = accuracy_score (y_train, y_train_pred) test_accuracy = accuracy_score (y_test, y_test_pred) Print (F "SVM- 트레인 정확도 : {Train_Accuracy}, 테스트 정확도 : {test_accuracy}")
결과:
-SVM- 트레인 정확도 : 0.9602<br><br> - 테스트 정확도 : 0.9074
또한 읽기 : SVM (Support Vector Machine) 알고리즘에 대한 안내서
4. 의사 결정 트리
sklearn.tree 가져 오기 의사 결정 treeclassifier Sklearn.metrics import accuracy_score에서 # 의사 결정 트리 tree = dectionTreeClassifier (random_state = 42) tree.fit (x_train, y_train) # 예측 및 평가 y_train_pred = tree.predict (x_train) y_test_pred = tree.predict (x_test) Train_Accuracy = accuracy_score (y_train, y_train_pred) test_accuracy = accuracy_score (y_test, y_test_pred) print (f "의사 결정 트리 - 열차 정확도 : {train_accuracy}, 테스트 정확도 : {test_accuracy}")
결과:
- 의사 결정 트리 - 열차 정확도 : 1.0000<br><br> - 테스트 정확도 : 0.8222
5. 텐서 플로우가있는 신경망
Numpy를 NP로 가져옵니다 Sklearn. Processing import LabelEncoder, StandardsCaler sklearn.model_selection import train_test_split Tensorflow.keras 가져 오기 모델, 레이어 tensorflow.keras.callbacks earlystopping, modelcheckpoint를 가져옵니다 # 레이블은 대상 클래스를 인코딩합니다 label_encoder = labelEncoder () y_encoded = label_encoder.fit_transform (y) # 열차 테스트 분할 x_train, x_test, y_train, y_test = train_test_split (x, y_encoded, test_size = 0.2, random_state = 42) # 기능 스케일링 scaler = 표준 caler () x_train = scaler.fit_transform (x_train) x_test = scaler.transform (x_test) # 신경망 model = model.sequential ([[ Layers.dense (64, activation = 'relu', input_shape = (x_train.shape [1],), Layers.dense (32, Activation = 'Relu'), layers.dense (len (np.unique (y_encoded)), activation = 'softmax') # 출력 레이어 크기가 클래스 수와 일치합니다. ]))) model.compile (Optimizer = 'Adam', loss = 'sparse_categorical_crossentropy', metrics = [ '정확도'])))) # 콜백 early_stopping = aleerstopping (monitor = 'val_loss', patience = 10, restore_best_weights = true) model_checkpoint = modelcheckpoint ( 'best_model.keras', monitor = 'val_loss', save_best_only = true) # 모델을 훈련시킵니다 history = model.fit (x_train, y_train, epochs = 100, batch_size = 32, validation_data = (x_test, y_test), 콜백 = [early_stopping, model_checkpoint], verbose = 1) # 모델을 평가하십시오 Train_Loss, Train_Accuracy = model.evaluate (x_train, y_train, verbose = 0) test_loss, test_accuracy = model.evaluate (x_test, y_test, verbose = 0) print (f "신경망 - 열차 정확도 : {train_accuracy}, 테스트 정확도 : {test_accuracy}")
결과:
- 신경망 - 열차 정확도 : 0.9234<br><br> - 테스트 정확도 : 0.9278
또한 읽으십시오 : Tensorflow를 사용하여 신경망을 구축하십시오
실수를 식별합니다
분류 모델은 그 효과를 손상시킬 수있는 몇 가지 도전에 직면 할 수 있습니다. 신뢰할 수있는 모델을 구축하기 위해 이러한 문제를 인식하고 해결해야합니다. 다음은 고려해야 할 몇 가지 중요한 측면입니다.
- 과적과 적합성 :
- 교차 검증 : 단일 열차 테스트 분할에만 의존하지 마십시오. K-fold 교차 검증을 활용하여 다양한 데이터 세그먼트에서 모델을 테스트하여 모델의 성능을 더 잘 평가하십시오.
- 정규화 : 데이터의 노이즈를 캡처하여 매우 복잡한 모델이 과잉으로 만들 수 있습니다. 가지 치기 또는 정규화와 같은 정규화 방법을 사용하여 복잡성을 처벌해야합니다.
- 초 파라미터 최적화 : 바이어스와 분산의 균형을 맞추기 위해 하이퍼 파라미터 (예 : 그리드 또는 임의의 검색을 통해)를 철저히 탐색하고 조정합니다.
- 앙상블 기술 :
- 모델 집계 : 랜덤 포리스트 또는 그라디언트 부스팅과 같은 앙상블 방법은 여러 모델의 예측을 결합하여 종종 일반화를 향상시킵니다. 이러한 기술은 데이터에서 복잡한 패턴을 캡처하면서 개별 모델 오류를 평균하여 과적으로 적합 할 위험을 완화 할 수 있습니다.
- 클래스 불균형 :
- 불균형 클래스 : 많은 경우 한 클래스가 다른 클래스보다 카운트가 적을 수 있으며, 편견 예측으로 이어질 수 있습니다. 오버 샘플링, 언더 샘플링 또는 스모 테와 같은 방법은 문제에 따라 사용해야합니다.
- 데이터 유출 :
- 의도하지 않은 누출 : 교육 세트 외부의 정보가 모델에 영향을 미치면 팽창 된 성능 메트릭이 발생할 때 데이터 유출이 발생합니다. 훈련 중에 테스트 데이터가 완전히 보이지 않으며 목표 변수에서 파생 된 기능은주의해서 관리되는 것이 중요합니다.
그리드 검색을 사용한 개선 된 로지스틱 회귀의 예
sklearn.model_selection import gridsearchcv # 로지스틱 회귀에 대한 그리드 검색 구현 param_grid = { 'c': [0.1, 1, 10, 100], 'Solver': [ 'lbfgs']} grid_search = gridsearchcv (logisticRegression (multi_class = 'multinomial', max_iter = 1000), param_grid, cv = 5) grid_search.fit (x_train, y_train) # 최고의 모델 best_model = grid_search.best_estimator_ # 테스트 세트에서 평가하십시오 test_accuracy = best_model.score (x_test, y_test) print (f "최고의 로지스틱 회귀 - 테스트 정확도 : {test_accuracy}")
결과:
- 최상의 로지스틱 회귀 - 테스트 정확도 : 0.9611
Tensorflow가있는 신경망
이전 신경망 모델을 개선하는 데 중점을두고 과적이 적합한 기술을 최소화하고 일반화를 향상시키는 기술에 중점을 둡니다.
조기 중지 및 모델 체크 점프
모델의 유효성 검사 성능 고원이 될 때 조기에 훈련이 중단되어 데이터 노이즈 훈련으로 인한 과도한 학습을 피함으로써 과적으로 적합성을 방지합니다.
모델 체크 포인트는 교육 전반에 걸쳐 유효성 검사 세트에서 가장 잘 수행되는 모델을 저장하여 후속 교육이 지나치게 적합한 경우에도 최적의 모델 버전이 보존되도록합니다.
Numpy를 NP로 가져옵니다 Sklearn. Processing import LabelEncoder, StandardsCaler sklearn.model_selection import train_test_split Tensorflow.keras 가져 오기 모델, 레이어 tensorflow.keras.callbacks earlystopping, modelcheckpoint를 가져옵니다 # 레이블은 대상 클래스를 인코딩합니다 label_encoder = labelEncoder () y_encoded = label_encoder.fit_transform (y) # 열차 테스트 분할 x_train, x_test, y_train, y_test = train_test_split (x, y_encoded, test_size = 0.2, random_state = 42) # 기능 스케일링 scaler = 표준 caler () x_train = scaler.fit_transform (x_train) x_test = scaler.transform (x_test) # 신경망 model = model.sequential ([[ Layers.dense (64, activation = 'relu', input_shape = (x_train.shape [1],), Layers.dense (32, Activation = 'Relu'), layers.dense (len (np.unique (y_encoded)), activation = 'softmax') # 출력 레이어 크기가 클래스 수와 일치합니다. ]))) model.compile (Optimizer = 'Adam', loss = 'sparse_categorical_crossentropy', metrics = [ '정확도'])))) # 콜백 early_stopping = aleerstopping (monitor = 'val_loss', patience = 10, restore_best_weights = true) model_checkpoint = modelcheckpoint ( 'best_model.keras', monitor = 'val_loss', save_best_only = true) # 모델을 훈련시킵니다 history = model.fit (x_train, y_train, epochs = 100, batch_size = 32, validation_data = (x_test, y_test), 콜백 = [early_stopping, model_checkpoint], verbose = 1) # 모델을 평가하십시오 Train_Loss, Train_Accuracy = model.evaluate (x_train, y_train, verbose = 0) test_loss, test_accuracy = model.evaluate (x_test, y_test, verbose = 0) print (f "신경망 - 열차 정확도 : {train_accuracy}, 테스트 정확도 : {test_accuracy}")
다양한 메트릭의 중요성을 이해합니다
- 정확성 : 중요하지만 정확도는 특히 불균형 클래스 분포를 다룰 때 모델의 성능을 완전히 포착하지 못할 수 있습니다.
- 손실 : 손실 함수는 예측 된 값이 실제 레이블과 얼마나 잘 맞는지 평가합니다. 더 작은 손실 값은 더 높은 정확도를 나타냅니다.
- 정밀, 리콜 및 F1- 점수 : 정밀도는 긍정적 인 예측의 정확성을 평가하고, 리콜은 모든 긍정적 인 사례를 식별하는 데있어 모델의 성공을 측정하고, F1- 스코어 균형 정밀도 및 리콜을 측정합니다.
- ROC-AUC : ROC-AUC 메트릭은 임계 값 설정에 관계없이 클래스를 구별 할 수있는 모델의 용량을 정량화합니다.
Sklearn.metrics import classification_report, roc_auc_score에서 # 예측 y_test_pred_proba = model.predict (x_test) y_test_pred = np.argmax (y_test_pred_proba, axis = 1) # 분류 보고서 print (classification_report (y_test, y_test_pred))) # roc-auc roc_auc = roc_auc_score (y_test, y_test_pred_proba, multi_class = 'ovr') print (f'roc-auc score : {roc_auc} ')
모델 성능의 시각화
교육 중 모델의 성능은 정확도와 손실을위한 학습 곡선을 플로팅하여 모델의 과적합인지 부적합한 지 여부를 보여줍니다. 우리는 초기 중지를 사용하여 과적으로 과적으로 사용했으며, 이는 새로운 데이터로 일반화하는 데 도움이됩니다.
matplotlib.pyplot을 plt로 가져옵니다 # 플롯 교육 및 검증 정확도 값 plt.figure (figsize = (14, 5)) Subplot (1, 2, 1) plt.plot (history.history [ '정확도']))) plt.plot (history.history [ 'val_accuracy'])) plt.title ( '모델 정확도') plt.xlabel ( 'epoch') plt.ylabel ( '정확도') plt.legend ([ 'Train', 'Validation'], loc = '상단 왼쪽') # 플롯 교육 및 검증 손실 값 Subplot (1, 2, 2) plt.plot (history.history [ '손실']) plt.plot (history.history [ 'val_loss']) plt.title ( '모델 손실') plt.xlabel ( 'epoch') plt.ylabel ( '손실') plt.legend ([ 'Train', 'Validation'], loc = '상단 왼쪽') plt.show ()
결론
지나치게 적응 및 부적합과 같은 문제를 방지하기 위해서는 세심한 평가가 중요합니다. 효과적인 분류 모델을 구축하려면 올바른 알고리즘을 선택하고 훈련하는 것 이상이 포함됩니다. 앙상블 방법, 정규화, 하이퍼 파라미터 튜닝 및 교차 검증을 구현함으로써 모델 일관성 및 신뢰성을 향상시킬 수 있습니다. 소규모 데이터 세트가 상당한 과적합을 경험하지 못했을 수도 있지만 이러한 방법을 사용하면 모델이 강력하고 정확하게 보장하여 실제 애플리케이션에서 더 나은 의사 결정을 내릴 수 있습니다.
자주 묻는 질문
Q1. 기계 학습 모델을 정확성 이상으로 평가하는 것이 중요한 이유는 무엇입니까?Ans. 정확도는 핵심 메트릭이지만, 특히 불균형 데이터 세트에서 항상 완전한 그림을 제공하는 것은 아닙니다. 일관성, 견고성 및 일반화와 같은 다른 측면을 평가하면 제어 된 테스트 조건뿐만 아니라 다양한 시나리오에서 모델이 잘 수행되도록합니다.
Q2. 분류 모델을 구축 할 때 피해야 할 일반적인 실수는 무엇입니까?Ans. 일반적인 실수로는 과적, 언더 피팅, 데이터 유출, 클래스 불균형 무시 및 모델을 올바르게 검증하지 못하는 것이 포함됩니다. 이러한 문제는 테스트에서 잘 수행되지만 실제 응용 프로그램에서는 실패한 모델로 이어질 수 있습니다.
Q3. 내 분류 모델에서 과적으로 과적을 방지하려면 어떻게해야합니까?Ans. 과적은 교차 검증, 정규화, 조기 정지 및 앙상블 방법을 통해 완화 될 수 있습니다. 이러한 접근 방식은 모델의 복잡성의 균형을 맞추고 새로운 데이터에 대한 일반화를 보장합니다.
Q4. 분류 모델의 성능을 평가하기 위해 어떤 메트릭을 사용해야합니까?Ans. 정확성 외에도 정밀도, 리콜, F1 스코어, ROC-AUC 및 손실과 같은 메트릭을 고려하십시오. 이러한 메트릭은 특히 불균형 데이터를 처리하고 정확한 예측을 수행 할 때 모델의 성능에 대한 미묘한 이해를 제공합니다.
위 내용은 분류 모델링에서 이러한 실수를하고 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

소개 매일 몇 주 만에 작물의 진행 상황을 관찰하는 농부가 있다고 가정합니다. 그는 성장률을보고 몇 주 안에 식물이 얼마나 키가 커질 수 있는지에 대해 숙고하기 시작합니다. Th

Soft AI-대략적인 추론, 패턴 인식 및 유연한 의사 결정을 사용하여 구체적이고 좁은 작업을 수행하도록 설계된 AI 시스템으로 정의 된 것은 모호성을 수용하여 인간과 같은 사고를 모방하려고합니다. 그러나 이것이 바이러스의 의미는 무엇입니까?

클라우드 컴퓨팅이 클라우드 네이티브 보안 도구로의 전환이 필요했기 때문에 AI는 AI의 고유 한 요구를 위해 특별히 설계된 새로운 유형의 보안 솔루션을 요구합니다. 클라우드 컴퓨팅 및 보안 수업의 상승이 배웠습니다 th

기업가와 AI 및 생성 AI를 사용하여 비즈니스를 개선합니다. 동시에, 모든 기술과 마찬가지로 생성 AI를 기억하는 것이 중요합니다. 앰프는 앰프입니다. 엄격한 2024 연구 o

임베딩 모델의 힘 잠금 해제 : Andrew Ng의 새로운 코스에 대한 깊은 다이빙 기계가 완벽한 정확도로 질문을 이해하고 응답하는 미래를 상상해보십시오. 이것은 공상 과학이 아닙니다. AI의 발전 덕분에 R이되었습니다

대형 언어 모델 (LLM) 및 환각의 피할 수없는 문제 Chatgpt, Claude 및 Gemini와 같은 AI 모델을 사용했을 것입니다. 이들은 대규모 텍스트 데이터 세트에 대해 교육을받은 강력한 AI 시스템의 대형 언어 모델 (LLM)의 예입니다.

최근의 연구에 따르면 AI 개요는 산업 및 검색 유형에 따라 유기 트래픽이 15-64% 감소 할 수 있습니다. 이러한 급격한 변화로 인해 마케팅 담당자는 디지털 가시성에 관한 전체 전략을 재고하게합니다. 새로운

Elon University의 Digital Future Center를 상상 한 최근 보고서는 거의 300 명의 글로벌 기술 전문가를 조사했습니다. 결과적인 보고서 인‘2035 년에 인간이되는 것’은 대부분 AI 시스템의 심화가 T에 대한 우려가 있다고 결론지었습니다.


핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

Atom Editor Mac 버전 다운로드
가장 인기 있는 오픈 소스 편집기

VSCode Windows 64비트 다운로드
Microsoft에서 출시한 강력한 무료 IDE 편집기

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

DVWA
DVWA(Damn Vulnerable Web App)는 매우 취약한 PHP/MySQL 웹 애플리케이션입니다. 주요 목표는 보안 전문가가 법적 환경에서 자신의 기술과 도구를 테스트하고, 웹 개발자가 웹 응용 프로그램 보안 프로세스를 더 잘 이해할 수 있도록 돕고, 교사/학생이 교실 환경 웹 응용 프로그램에서 가르치고 배울 수 있도록 돕는 것입니다. 보안. DVWA의 목표는 다양한 난이도의 간단하고 간단한 인터페이스를 통해 가장 일반적인 웹 취약점 중 일부를 연습하는 것입니다. 이 소프트웨어는
