導入
機械学習モデルを評価することは、最終的なステップではなく、成功のキーストーンです。現実世界のプレッシャーで崩れるのを見つけるためだけに、高い精度で魅了する最先端のモデルを構築することを想像してください。評価は、メトリックを刻むだけではありません。それは、あなたのモデルが野生で一貫して機能することを保証することです。この記事では、最も有望な分類モデルでさえ脱線させることができる一般的な落とし穴に飛び込み、モデルを良好から例外に引き上げることができるベストプラクティスを明らかにします。分類モデリングタスクを信頼できる効果的なソリューションに変えましょう。
概要
- 分類モデルの構築:段階的なガイダンスを使用して、堅実な分類モデルを構築します。
- 頻繁な間違いを特定する:分類モデリングにおける一般的な落とし穴を見つけて避けます。
- 過剰フィッティングを理解する:過剰適合を理解し、モデルでそれを防ぐ方法を学びます。
- モデル構築スキルの向上:ベストプラクティスと高度なテクニックでモデル構築スキルを向上させます。
目次
- 導入
- 分類モデリング:概要
- 基本的な分類モデルの構築
- 1。データ準備
- 2。ロジスティック回帰
- 3。サポートベクターマシン(SVM)
- 4。決定ツリー
- 5。Tensorflowを備えたニューラルネットワーク
- 間違いを特定します
- グリッド検索を使用したロジスティック回帰の改善の例
- Tensorflowを備えたニューラルネットワーク
- さまざまなメトリックの重要性を理解する
- モデルパフォーマンスの視覚化
- 結論
- よくある質問
分類モデリング:概要
分類問題では、独立変数を使用してターゲット変数のラベルを予測するモデルを構築しようとします。ラベル付きのターゲットデータを扱うため、ロジスティック回帰、SVM、意思決定ツリーなどの教師付き機械学習アルゴリズムが必要です。分類問題を解決するためのニューラルネットワークモデルも検討し、人々が犯す可能性のある一般的な間違いを特定し、それらを回避する方法を決定します。
基本的な分類モデルの構築
Kaggleの日付フルーツデータセットを使用して、基本的な分類モデルの作成を実証します。データセットについて:ターゲット変数は、7種類の日付果物で構成されています:Barhee、Deglet Nour、Sukkary、Rotab Mozafati、Ruthana、Safawi、Sagai。データセットは、7つの異なる日付のフルーツ品種の898枚の画像で構成され、34の機能が画像処理技術を通じて抽出されました。目的は、属性に基づいてこれらの果物を分類することです。
1。データ準備
PDとしてパンダをインポートします sklearn.model_selectionからimport train_test_splitから Sklearn.Preprocessing Import StandardScalerから #データセットをロードします 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 = startenscaler() x_train = scaler.fit_transform(x_train) x_test = scaler.transform(x_test)
2。ロジスティック回帰
sklearn.linear_modelからロジスティスレッジプレッシャーをインポートします sklearn.metrics Import quarty_scoreから #ロジスティック回帰モデル log_reg = logististregression() 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 = quarchacy_score(y_train、y_train_pred) test_acc = quarchacy_score(y_test、y_test_pred) 印刷(f'logistic回帰 - トレーニング精度:{train_acc}、テスト精度:{test_acc} ')
結果:
- ロジスティック回帰 - 列車の精度:0.9538<br><br> - テスト精度:0.9222
また読む:ロジスティック回帰の紹介
3。サポートベクターマシン(SVM)
Sklearn.svm Import Svcから sklearn.metrics Import quarty_scoreから #svm svm = svc(kernel = 'linear'、確率= true) svm.fit(x_train、y_train) #予測と評価 y_train_pred = svm.predict(x_train) y_test_pred = svm.predict(x_test) train_accuracy = quarchacy_score(y_train、y_train_pred) test_accuracy = quarchacy_score(y_test、y_test_pred) 印刷(f "svm -trainの精度:{train_accuracy}、テスト精度:{test_accuracy}")
結果:
-SVM-列車の精度:0.9602<br><br> - テスト精度:0.9074
また読む:サポートベクターマシン(SVM)アルゴリズムに関するガイド
4。決定ツリー
Sklearn.TreeからImport DecisionTreeClassifierから sklearn.metrics Import quarty_scoreから #決定ツリー tree = decisiontreeclassifier(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 = quarchacy_score(y_train、y_train_pred) test_accuracy = quarchacy_score(y_test、y_test_pred) 印刷(f "決定ツリー - 列車精度:{train_accuracy}、テスト精度:{test_accuracy}")
結果:
- 決定ツリー - トレーニングの正確性:1.0000<br><br> - テスト精度:0.8222
5。Tensorflowを備えたニューラルネットワーク
npとしてnumpyをインポートします Sklearn.Preprocessing Import LabelEncoder、StandardScalerから sklearn.model_selectionからimport train_test_splitから Tensorflow.Kerasインポートモデル、レイヤーから Tensorflow.keras.callbacksからImport Early -Stopping、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 = startenscaler() x_train = scaler.fit_transform(x_train) x_test = scaler.transform(x_test) #ニューラルネットワーク model = models.sequential([[ layers.dense(64、activation = 'lelu'、input_shape =(x_train.shape [1]、))、 layers.dense(32、activation = 'lelu')、 layers.dense(len(np.unique(y_encoded))、activation = 'softmax')#出力レイヤーサイズはクラスの数と一致することを確認します ])) model.compile(optimizer = 'adam'、loss = 'sparse_categorical_crossentropy'、metrics = ['quarty']) #コールバック Early_Stopping = EarlyStopping(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)、 callbacks = [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) 印刷(f "ニューラルネットワーク - 列車精度:{train_accuracy}、テスト精度:{test_accuracy}")
結果:
- ニューラルネットワーク - 列車の精度:0.9234<br><br> - テスト精度:0.9278
また読む:Tensorflowを使用してニューラルネットワークを構築します
間違いを特定します
分類モデルは、有効性を損なう可能性のあるいくつかの課題に遭遇する可能性があります。信頼できるモデルを構築するには、これらの問題を認識して取り組むことが不可欠です。以下は、考慮すべき重要な側面です。
-
過剰適合と装着:
- 交差検証:単一の列車テストの分割のみに依存しないでください。 K-fold交差検証を利用して、さまざまなデータセグメントでテストすることにより、モデルのパフォーマンスをよりよく評価します。
- 正規化:非常に複雑なモデルは、データ内のノイズをキャプチャすることで繊細に栄養を与える可能性があります。剪定や正則化などの正則化方法を使用して、複雑さを罰する必要があります。
- ハイパーパラメーターの最適化:ハイパーパラメーター(グリッドやランダム検索など)を徹底的に調査および調整して、バイアスと分散のバランスを取ります。
-
アンサンブルテクニック:
- モデルの集約:ランダムフォレストやグラデーションブーストなどのアンサンブル方法は、複数のモデルからの予測を組み合わせて、多くの場合、一般化が強化されます。これらの手法は、個々のモデルエラーを平均化することにより、過剰適合のリスクを軽減しながら、データの複雑なパターンをキャプチャできます。
-
クラスの不均衡:
- 不均衡なクラス:多くの場合、1つのクラスは他のクラスよりも少ない場合があり、偏った予測につながります。オーバーサンプリング、アンダーサンプリング、またはスモートなどの方法は、問題に応じて使用する必要があります。
-
データリーク:
- 意図しない漏れ:データリークは、トレーニングセットの外部からの情報がモデルに影響を与え、パフォーマンスメトリックが膨らんだときに発生します。テストデータがトレーニング中に完全に目に見えないままであり、ターゲット変数から派生した機能が注意して管理されることを保証することが重要です。
グリッド検索を使用したロジスティック回帰の改善の例
sklearn.model_selectionからインポートGridsearchcvから #ロジスティック回帰のグリッド検索の実装 param_grid = {'c':[0.1、1、10、100]、 'solver':['lbfgs']} grid_search = gridsearchcv(logististrecression(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) 印刷(f "最高のロジスティック回帰 - テスト精度:{test_accuracy}")
結果:
- 最高のロジスティック回帰 - テスト精度:0.9611
Tensorflowを備えたニューラルネットワーク
過剰適合を最小限に抑え、一般化を強化するための技術に焦点を当て、以前のニューラルネットワークモデルの改善に焦点を当てましょう。
早期停止とモデルのチェックポイント
早期の停止は、モデルの検証パフォーマンスの高原の場合、トレーニングを停止し、トレーニングデータノイズからの過度の学習を回避することで過剰適合を防ぎます。
モデルチェックポイントは、トレーニング全体で検証セットで最適なモデルを保存し、その後のトレーニングが過剰適合につながる場合でも、最適なモデルバージョンが保存されるようにします。
npとしてnumpyをインポートします Sklearn.Preprocessing Import LabelEncoder、StandardScalerから sklearn.model_selectionからimport train_test_splitから Tensorflow.Kerasインポートモデル、レイヤーから Tensorflow.keras.callbacksからImport Early -Stopping、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 = startenscaler() x_train = scaler.fit_transform(x_train) x_test = scaler.transform(x_test) #ニューラルネットワーク model = models.sequential([[ layers.dense(64、activation = 'lelu'、input_shape =(x_train.shape [1]、))、 layers.dense(32、activation = 'lelu')、 layers.dense(len(np.unique(y_encoded))、activation = 'softmax')#出力レイヤーサイズはクラスの数と一致することを確認します ])) model.compile(optimizer = 'adam'、loss = 'sparse_categorical_crossentropy'、metrics = ['quarty']) #コールバック Early_Stopping = EarlyStopping(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)、 callbacks = [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) 印刷(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スコア:{roc_auc} ')
モデルパフォーマンスの視覚化
トレーニング中のモデルのパフォーマンスは、精度と損失のために学習曲線をプロットし、モデルが過剰適合しているか過小装着しているかを示すことで見ることができます。過剰適合を防ぐために早期停止を使用しましたが、これは新しいデータに一般化するのに役立ちます。
pltとしてmatplotlib.pyplotをインポートします #トレーニングと検証の精度値をプロットします plt.figure(figsize =(14、5)) plt.subplot(1、2、1) plt.plot(history.history ['quarchasity']) plt.plot(history.history ['val_accuracy']) plt.title( 'モデル精度') plt.xlabel( 'epoch') plt.ylabel(「精度」) plt.legend(['Train'、 'validation']、loc = '左上')) #トレーニングと検証の損失値をプロットします plt.subplot(1、2、2) plt.plot(history.history ['loss']) plt.plot(history.history ['val_loss']) plt.title( 'モデル損失') plt.xlabel( 'epoch') plt.ylabel( 'loss') plt.legend(['Train'、 'validation']、loc = '左上')) plt.show()
結論
過剰適合や装着などの問題を防ぐためには、細心の評価が重要です。効果的な分類モデルの構築には、適切なアルゴリズムを選択してトレーニングする以上のものが含まれます。モデルの一貫性と信頼性は、アンサンブルメソッド、正規化、チューニングハイパーパラメーター、および相互検証を実装することで強化できます。私たちの小さなデータセットは大きな過剰適合を経験していないかもしれませんが、これらの方法を採用することで、モデルが堅牢で正確であることが保証され、実際のアプリケーションでの意思決定が改善されます。
よくある質問
Q1。正確さを超えて機械学習モデルを評価することが重要なのはなぜですか?Ans。精度は重要なメトリックですが、特に不均衡なデータセットでは、常に完全な画像を与えるとは限りません。一貫性、堅牢性、一般化などの他の側面を評価することで、制御されたテスト条件だけでなく、さまざまなシナリオでモデルがうまく機能することが保証されます。
Q2。分類モデルを構築するときに避けるべき一般的な間違いは何ですか?Ans。一般的な間違いには、過剰フィッティング、アンダーフィッティング、データの漏れ、クラスの不均衡を無視し、モデルを適切に検証できないことが含まれます。これらの問題は、テストでうまく機能するが、実際のアプリケーションでは失敗するモデルにつながる可能性があります。
Q3。分類モデルで過剰装着を防ぐにはどうすればよいですか?Ans。過剰適合は、相互検証、正規化、早期停止、およびアンサンブル方法を通じて軽減できます。これらのアプローチは、モデルの複雑さのバランスをとり、新しいデータに適切に一般化することを保証します。
Q4。分類モデルのパフォーマンスを評価するためにどのメトリックを使用する必要がありますか?Ans。精度を超えて、精度、リコール、F1スコア、ROC-AUC、損失などのメトリックを検討してください。これらのメトリックは、特に不均衡なデータを処理し、正確な予測を行う際に、モデルのパフォーマンスをより微妙に理解することを提供します。
以上が分類モデリングでこれらの間違いを犯していますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

導入 数週間で作物の進行を毎日観察する農民がいるとします。彼は成長率を見て、さらに数週間で彼の植物がどれほど背が高くなるかについて熟考し始めます。 thから

ソフトAIは、おおよその推論、パターン認識、柔軟な意思決定を使用して特定の狭いタスクを実行するように設計されたAIシステムとして定義されていますが、曖昧さを受け入れることにより、人間のような思考を模倣しようとします。 しかし、これはBusineにとって何を意味しますか

答えは明確です。クラウドコンピューティングには、クラウドネイティブセキュリティツールへの移行が必要であるため、AIはAIの独自のニーズに特化した新しい種類のセキュリティソリューションを要求します。 クラウドコンピューティングとセキュリティレッスンの台頭 で

起業家とAIと生成AIを使用して、ビジネスを改善します。同時に、すべてのテクノロジーと同様に、生成的AIが増幅器であることを覚えておくことが重要です。厳密な2024年の研究o

埋め込みモデルのパワーのロックを解除する:Andrew Ngの新しいコースに深く飛び込む マシンがあなたの質問を完全に正確に理解し、応答する未来を想像してください。 これはサイエンスフィクションではありません。 AIの進歩のおかげで、それはRになりつつあります

大規模な言語モデル(LLM)と幻覚の避けられない問題 ChatGpt、Claude、GeminiなどのAIモデルを使用した可能性があります。 これらはすべて、大規模なテキストデータセットでトレーニングされた大規模な言語モデル(LLMS)、強力なAIシステムの例です。

最近の研究では、AIの概要により、産業と検索の種類に基づいて、オーガニックトラフィックがなんと15〜64%減少する可能性があることが示されています。この根本的な変化により、マーケティング担当者はデジタルの可視性に関する戦略全体を再考することになっています。 新しい

Elon UniversityがDigital Future Centerを想像している最近のレポートは、300人近くのグローバルテクノロジーの専門家を調査しました。結果のレポート「2035年に人間である」は、ほとんどがTを超えるAIシステムの採用を深めることを懸念していると結論付けました。


ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

SublimeText3 中国語版
中国語版、とても使いやすい

AtomエディタMac版ダウンロード
最も人気のあるオープンソースエディター

VSCode Windows 64 ビットのダウンロード
Microsoft によって発売された無料で強力な IDE エディター

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

DVWA
Damn Vulnerable Web App (DVWA) は、非常に脆弱な PHP/MySQL Web アプリケーションです。その主な目的は、セキュリティ専門家が法的環境でスキルとツールをテストするのに役立ち、Web 開発者が Web アプリケーションを保護するプロセスをより深く理解できるようにし、教師/生徒が教室環境で Web アプリケーションを教え/学習できるようにすることです。安全。 DVWA の目標は、シンプルでわかりやすいインターフェイスを通じて、さまざまな難易度で最も一般的な Web 脆弱性のいくつかを実践することです。このソフトウェアは、
