AI による簡単化: 分類予測はいくつありますか? それらの違いとつながりは何ですか? コード付き

この記事では、機械学習の分野における 3 つの重要な分類アルゴリズム、バイナリ分類、マルチクラス分類、マルチラベル分類について説明します。それぞれの定義、用途、類似点、相違点を見ていきます。最後に、実際の経験を得るために、Python の例をいくつか掘り下げていきます。

機械学習における分類とは何ですか?

分類は、機械学習でデータをクラスまたはグループに分類するために使用される教師あり学習手法です。目標は、オブジェクトの特性に基づいてオブジェクトのクラスを予測するようにモデルを教えることです。分類問題には、バイナリ、マルチクラス、マルチラベルの 3 つのタイプがあります。

二項分類

二項分類は最も単純な分類形式であり、ここでの目標は 2 つの可能なクラスのうちの 1 つを予測することです。たとえば、電子メールがスパムであるか否か、あるいは腫瘍が悪性であるか良性であるかを予測したい場合があります。

マルチクラス分類

マルチクラス分類では、3 つ以上のクラスがあり、各インスタンスは 1 つのクラスのみに属します。例としては、手書きの数字 (0 ~ 9) の認識、さまざまな種類の動物の認識、ニュース記事のさまざまなカテゴリ (スポーツ、政治など) の分類などが含まれます。

マルチラベル分類(マルチラベル分類)

マルチラベル分類は、各インスタンスが複数のクラスに属することができるため、他の 2 つのタイプとは異なります。例としては、音楽ジャンルの分類が挙げられます。この場合、曲がポップ、ロック、エレクトロニックなどの複数のジャンルに属する場合があります。

分類問題の 3 つのカテゴリの基本を理解したところで、それらの類似点と相違点についてさらに説明します。

類似点

3 種類の分類はすべて、特定の特徴に基づいてインスタンスの 1 つ以上のクラスを予測するという共通の目標を共有しています。

これらすべてのケースにおいて、ロジスティック回帰、サポート ベクター マシン、デシジョン ツリー、ランダム フォレストなどの一般的なアルゴリズムを使用しながら、ハイパーパラメーターを調整して最良の結果を達成できます。
精度、適合率、再現率、F1 スコアなどのパフォーマンス メトリクスは、選択したモデルの有効性を判断するために 3 種類の分類タスクすべてに使用されます。

違い

データ表現:

二値分類では、ターゲット変数は通常、2 つの可能なクラスを表す 0 または 1 (または -1 と 1) を含む 1 次元配列です。

マルチクラス分類では、ターゲット変数は依然として 1 次元配列ですが、複数のクラスを表す整数値 (0 ~ n-1、n はクラスの数) が含まれています。

マルチラベル分類では、ターゲット変数は 2 次元配列であり、各行には、そのインスタンスの各クラスの有無を表すバイナリ ベクトルが含まれます。

アルゴリズム:

二項分類の場合、ロジスティック回帰などのアルゴリズムを変更せずに直接使用できます。

マルチクラス分類の場合、ロジスティック回帰などの一部のアルゴリズムは、複数のクラスを処理できるように調整する必要があります。たとえば、「one-vs-rest」(OVR) または「one-vs-one」(OVO) 戦略を使用したり、組み合わせたりすることにより、マルチクラス分類のための直接的なクロスエントロピー損失。

マルチラベル分類では、多くの場合、OneVsRestClassifier を使用するなどの適応が必要になります。OneVsRestClassifier は、基本的に問題を複数の独立した二値分類タスクとして扱い、各分類子が特定のクラスの有無を予測します。

損失関数:

バイナリ分類では、単一のターゲット クラスの真の確率と予測確率の差を測定するバイナリ クロス エントロピー ロスがよく使用されます。

マルチクラス分類の場合、カテゴリカルクロスエントロピー損失を使用します。これは、各 (相互に排他的な) クラスの真の確率と予測確率の差を測定します。

マルチラベル分類では通常、(バイナリ分類と同様に) 各クラスのバイナリ クロスエントロピー損失を個別に使用し、ある意味、別個のバイナリ分類タスクからの損失を組み合わせます。

類似点と相違点を調べたので、Python の例をいくつか掘り下げてみましょう。

# 导入必要的库
import numpy as np 
import pandas as pd 
from sklearn.datasets import load_breast_cancer, load_digits 
from sklearn.model_selection import train_test_split 
from sklearn.linear_model import LogisticRegression 
from sklearn.multiclass import OneVsRestClassifier 
from sklearn.metrics import accuracy_score, classification_report

二項分類の例

この例では、ウィスコンシン州の乳がんデータセットを使用します。これは、腫瘍が悪性か良性かを予測できるバイナリ分類問題です。

# Load the breast cancer dataset
data = load_breast_cancer()
X = data.data
y = data.target

# Split the data into training and testing sets
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

# Train the logistic regression model
binary_model = LogisticRegression(max_iter=1000)
binary_model.fit(X_train, y_train)

# Make predictions on the test set
y_pred = binary_model.predict(X_test)

# Calculate the accuracy and print the report
binary_accuracy = accuracy_score(y_test, y_pred)
print("Binary Classification Accuracy:", binary_accuracy)
print(classification_report(y_test, y_pred))

複数クラスの分類の例

マルチクラス分類問題では、MNIST 数字データセットを使用します。各インスタンスは手書きの数字 (0 ~ 9) です。

# 加载数字数据集
data = load_digits() 
X = data.data 
y = data.target

# 将数据拆分为训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size= 0.2 , random_state= 42 )

# 训练逻辑回归模型
multi_class_model = LogisticRegression(max_iter= 1000 , multi_class= "ovr" ) 
multi_class_model.fit(X_train, y_train)

# 对测试集进行预测
y_pred = multi_class_model.predict(X_test)

# 计算准确率并打印报告
multi_class_accuracy = accuracy_score(y_test, y_pred) 
print ( "Multi-Class Classification Accuracy:" , multi_class_accuracy) 
print (classification_report(y_test, y_pred))

マルチラベル分類の例

この例では、3 つのラベルと 4 つの特徴を持つ仮説的なデータセットを考えてみましょう。

# 创建一个假设数据集
np.random.seed( 42 ) 
X = np.random.randn( 100 , 4 ) 
y = np.random.randint( 0 , 2 , ( 100 , 3 ))

# 将数据拆分为训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size= 0.2 , random_state= 42 )

# 使用 OneVsRestClassifier 训练逻辑回归模型
multi_label_model = OneVsRestClassifier(LogisticRegression(max_iter= 1000 )) 
multi_label_model.fit(X_train, y_train)

# 对测试集进行预测
y_pred = multi_label_model.predict(X_test)

# 计算准确率并打印报告
multi_label_accuracy = accuracy_score(y_test, y_pred) 
print ( "Multi-Label Classification Accuracy:" , multi_label_accuracy) 
print (classification_report(y_test, y_pred))

要約すると、バイナリ分類、マルチクラス分類、マルチラベル分類の 3 種類の分類問題を調査し、Scikit-Learn ライブラリを使用してロジスティック回帰を使用してそれぞれを実装する方法を示しました。また、それらの類似点と相違点についても説明し、内部の仕組みについての貴重な洞察を得ることができます。問題ごとに、他のさまざまなアルゴリズムを試し、モデルを微調整してパフォーマンスを向上させることもできることに注意してください。これらの分類タスクを理解することは、強力な機械学習モデルを構築するために重要です。

英文原文

英語を読む

お勧め

一般公開なし

AIのおすすめ本

AIは日々変化していますが、高層ビルは良好な基礎から切り離すことはできません。人工知能の原理と実践について学ぶことに興味がありますか? これ以上探さない!AI の原則と実践に関する書籍は、AI の世界について詳しく知りたい人にとって最適なリソースです。この分野の第一線の専門家によって書かれたこの包括的なガイドは、機械学習の基礎からインテリジェント システムを構築するための高度なテクニックまですべてをカバーしています。初心者であろうと経験豊富な AI 実践者であろうと、この本はあなたをカバーします。では、なぜ待つのでしょうか?

人工知能の原理と実践は、人工知能とデータ サイエンスのさまざまな重要なシステムの古典を包括的にカバーしています。

北京大学出版局、人工知能の原理と実践 人工知能とデータ サイエンスの入門から熟練度まで 機械学習ディープ ラーニング アルゴリズムの原理の詳細な説明

おすすめ

転載: blog.csdn.net/robot_learner/article/details/131151238