ロジスティック回帰と確率的勾配降下法による乳がんデータセット BreastCancer と虹彩データセット iris の線形分類


線形回帰とロジスティック回帰

線形回帰は、連続変数の値を予測します。線形回帰は、従属変数と独立変数の間に線形関係があると仮定します。線形回帰では、従属変数が連続数値変数である必要があります。トレーニング データの特性は次のとおりです。独立変数として使用され、トレーニング データが属するカテゴリが従属変数として使用されます。従属変数と独立変数の間に線形関数関係があると仮定し、多数のトレーニング サンプルを通じてモデルをトレーニングします。次に、関数関係の重み、つまりパラメータ値を継続的に調整し、得られた関数関係が各トレーニング例で期待される結果をもたらすようにします。パラメータの学習の過程では、二乗差、つまり予測値と実際の値の二乗差がコスト関数として使用され、パラメータの値がコスト関数の最小値を満たすように、値がコスト関数として使用されます。コストが継続的に削減されるため、パラメータの値を最適化します。ここで得られる関数モデルは二次元空間では直線で表現できる連続関数であり、データの固有値が増加すると対応する次元空間では線形超平面となる。
ロジスティック回帰は、[0, 1] の間の出力値を確率として見ることができるため、何かが起こる可能性を示す分類に一般的に使用されます。ここでは二項分類を例に挙げますが、従属変数と独立変数の関係が非線形であると仮定すると、一般的な出力値は [0, 1]、つまり 2 つのカテゴリ (一方は 0、もう一方は ) の間になります。 1. x<0の場合はy=0、x=0の場合はy=0.5、x>0の場合はy=1としますが、このような関数関係は連続ではないので、シグモイド関数を使ってフィッティングします。従属変数と独立変数の間の関数関係は非線形であり、出力を [0, 1] の間に制限します。ロジスティック回帰は、線形回帰にシグモイド関数を追加したものとみなすことができ、ロジスティック回帰はコスト関数として対数関数を使用します。
線形回帰は通常、回帰問題、つまり連続した特定の値を予測します。一部のデータのフィッティングに適用され、一部の値を予測するために使用され、以前にトレーニングされたモデルに従って表示されない値を予測するために使用されます。


StandardScaler 処理

对数据集进行StandardScaler处理和MinMaxScaler处理有所区别

StandardScaler は主に平均と分散を正規化するために使用されます。pycharm でソース コードを表示すると、平均を削除し単位分散にスケーリングすることによって特徴を標準化することが示されています。この関数で使用される計算方法は z = (x - u) / s で、uはトレーニング サンプルの平均または 0 の場合with_mean=Falsesはトレーニング サンプルの標準偏差または 1 の場合ですwith_std=False。この演算を通じて、データは次のようになります。 0 に保たれます 近くでは、分散は 1 となり、データがより集中して集約されます。また、トレーニング セットのパラメーター、つまりトレーニング セットの分散と平均を使用してテスト セットを標準化し、テスト セットを変換することもできます。サンプルの固有値を同じ次元に変換する一般的に使用され、回帰などの正の状態分布アルゴリズムに基づいています。
MinMaxScaler は主に、データ セットの特徴を指定された範囲に標準化するために使用されます。デフォルトは [0, 1] です。pycharm でソース コードを表示すると、各特徴を指定された範囲にスケーリングすることによって変換特徴が表示されます。これで使用される計算方法関数は X_std = (X - X.min(axis=0)) / (X.max(axis=0) - X.min(axis=0)) です。この方法は、元のデータの線形変換です。一般に、データは [0,1] に正規化されます。この方法は、データが範囲内に分布している場合にのみ適用できます。モデルの収束速度が向上し、モデルの収束速度が向上します。モデルの精度。ニューラル ネットワークに一般的です。


# # 使用StandrdScaler预处理数据集,使其离差标准化
scaler = StandardScaler()
scaler.fit(X_train)
X_train_scaler = scaler.transform(X_train)
X_test_scaler = scaler.transform(X_test)

# # 使用MinMaxScaler预处理数据集,使其离差标准化
# scaler = MinMaxScaler().fit(X_train)
# X_train_scaler = scaler.transform(X_train)
# X_test_scaler = scaler.transform(X_test)

線形分類

このコードでは、LogisticRegression と SGDClassifier の 2 つの分類方法 (SGD、確率的勾配降下法、確率的勾配降下法) を使用しています。

# 使用LogisticRegreeion分类器学习和测试
lr = LogisticRegression()
lr.fit(X_train_scaler, y_train)
y_pred_lr = lr.predict(X_test_scaler)

# 使用SGDClassifier分类器学习和测试
sgd = SGDClassifier()
sgd.fit(X_train_scaler, y_train)
y_pred_sgd = sgd.predict(X_test_scaler)

コードが実行されるたびに、線形インターフェイスの位置と分類精度が異なります。LogisticRegression 用に作成されたロジスティック回帰分類器は、train_test_split 関数を使用して以前に分類されたトレーニング サンプルとテスト サンプルを使用します。random_state パラメーターがあります。は乱数のシードに相当します。このパラメータを整数に設定すると、トレーニング セットとテスト セットの再可視性が保証されます。したがって、この関数のパラメータを設定した後、LogisticRegression 分類器の精度は変わりません。 . ですが、SGDClassifier 分類子の精度は依然として変化します。SGDClassifier は確率的勾配降下法分類子であり、反復ごとにトレーニング セットからサンプルがランダムに抽出されるため、すべてのトレーニング データが使用されていない場合に使用される可能性があります。コスト関数は許容範囲内であるため、正解率は毎回異なります。
これは、分類器のパフォーマンスが不安定であることを意味するものではなく、精度率が一定の範囲内で保証されており、過学習現象を効果的に防ぐことができます。
モデルの平均精度は、モデルの性能を判断するために使用できます。これは、データセットが分割されている場合、ノイズ点の分類によって過学習やモデルの判定精度が低下する可能性があるため、モデルがノイズ点の影響を受ける可能性があるためです。減らす。

乳がんデータセット BreastCancer

20 次元と 29 次元の特徴を使用した、傍受プログラムでのより精度の高い結果は次のとおりです。

ここに画像の説明を挿入

20 次元および 25 次元の特徴を使用した場合の分類精度

ここに画像の説明を挿入

アイリス データセット アイリス

0 番目の寸法 (「がく片の長さ (cm)」) と 2 番目の寸法 (「花弁の長さ (cm)」) を使用すると、結果は次のようになります。

ここに画像の説明を挿入

0 番目の寸法 (「がく片の長さ (cm)」) と 1 番目の寸法 (「がく片の幅 (cm)」) を使用すると、結果は次のようになります。

ここに画像の説明を挿入

1 番目の寸法 (「がく片の幅 (cm)」) と 2 番目の寸法 (「花弁の長さ (cm)」) を使用すると、結果は次のようになります。

ここに画像の説明を挿入

2 番目の寸法 (「花びらの長さ (cm)」) と 3 番目の寸法 (花びらの幅 (cm)) を使用すると、結果は次のようになります。

ここに画像の説明を挿入

おすすめ

転載: blog.csdn.net/qq_48068259/article/details/127891355