人工ニューラルネットワーク(ANN)を使用した分類モデル
公開: 2020-12-01機械学習の用語では、分類とは、入力データが事前定義されたラベル付きクラスの1つとして分類される予測モデリングの問題を指します。 たとえば、出力の数が2つのラベルに制限されているため、「はい」または「いいえ」、「真」または「偽」の予測は、バイナリ分類のカテゴリに分類されます。
同様に、異なる年齢層の分類のような複数のクラスを持つ出力は、マルチクラス分類問題と呼ばれます。 分類問題は、さまざまなユースケースで使用できる最も一般的に使用される、または定義されたタイプのML問題の1つです。 分類問題に使用できるさまざまな機械学習モデルがあります。
MLは分類のユースケースを処理する能力を超えていますが、バギングからブースティングの手法に至るまで、モデルのパフォーマンスをサポートするための大量の出力クラスと大量のデータがある場合、ニューラルネットワークが思い浮かびます。 今後は、Keras(Python)でニューラルネットワークを使用して分類モデルを実装する方法を見ていきます。
世界のトップ大学から人工知能コースを学びましょう。 マスター、エグゼクティブPGP、または高度な証明書プログラムを取得して、キャリアを迅速に追跡します。
目次
ニューラルネットワーク
ニューラルネットワークは、人間の脳の学習を大まかに表しています。 人工ニューラルネットワークはニューロンで構成されており、ニューロンはレイヤーの作成を担当します。 これらのニューロンは、調整されたパラメーターとしても知られています。
各レイヤーからの出力は、次のレイヤーに渡されます。 各層には異なる非線形活性化関数があり、学習プロセスと各層の出力に役立ちます。 出力層は、ターミナルニューロンとも呼ばれます。

出典:ウィキペディア
ニューロンに関連付けられ、全体的な予測に関与する重みは、エポックごとに更新されます。 学習率は、さまざまなオプティマイザーを使用して最適化されます。 各ニューラルネットワークには、学習が進むにつれて最小化されるコスト関数が提供されます。 次に、コスト関数が最良の結果をもたらす最良の重みが使用されます。
読む:初心者向けのTensorFlowオブジェクト検出チュートリアル
分類問題
この記事では、Kerasを使用してニューラルネットワークを構築します。 Kerasは、次のコマンドを使用してPythonに直接インポートできます。
tensorflowをtfとしてインポートします
tensorflowからインポートケラス
keras.modelsからインポートシーケンシャル
keras.layersからDenseをインポートします
データセットとターゲット変数
次の機能を備えた糖尿病データセットを使用します。
入力変数(X):
- 妊娠:妊娠回数
- ブドウ糖:経口ブドウ糖負荷試験における2時間の血漿ブドウ糖濃度
- 血圧:拡張期血圧(mm Hg)
- SkinThickness:上腕三頭筋の皮膚のひだの厚さ(mm)
- インスリン:2時間血清インスリン(mu U / ml)
- BMI:ボディマス指数(kg単位の体重/(m単位の身長)^ 2)
- DiabetesPedigreeFunction:糖尿病の血統機能
- 年齢:年齢(年)
出力変数(y):
結果:クラス変数(0または1)[患者が糖尿病を患っているかどうか]
#データセットを読み込む
df = loadtxt('pima-indians-diabetes.csv'、delimiter ='、')
#データをX(入力)とY(出力)に分割
X =データセット[:、0:8]
y =データセット[:、8]
Kerasモデルを定義する
シーケンシャルモデルを使用してニューラルネットワークの構築を開始できます。 このトップダウンアプローチは、ニューラルネットアーキテクチャを構築し、形状とレイヤーを操作するのに役立ちます。 最初のレイヤーには、input_dimを使用して修正できる機能の数が含まれます。 この状態で8に設定します。
ニューラルネットワークの作成は非常に簡単なプロセスではありません。 良いモデルが構築される前に行われる多くの試行錯誤があります。 kerasのDenseクラスを使用して、完全に接続されたネットワーク構造を構築します。 Neuronは、密な層に提供される最初の引数としてカウントされます。

活性化関数は、活性化引数を使用して設定できます。 この場合、活性化関数として正規化線形ユニットを使用します。 SigmoidやTanHのような他のオプションもありますが、RELUは非常に一般化されており、より優れたオプションです。
#kerasモデルを定義する
モデル=Sequential()
model.add(Dense(12、input_dim = 8、activation ='relu'))
model.add(Dense(8、activation ='relu'))
model.add(Dense(1、activation ='sigmoid'))
Kerasモデルをコンパイルする
モデルのコンパイルは、モデル定義の次のステップです。 Tensorflowはモデルのコンパイルに使用されます。 コンパイルは、モデルのトレーニングと予測のためにパラメーターが設定されるプロセスです。 CPU/GPUまたは分散メモリをバックグラウンドで使用できます。
さまざまなレイヤーの重みを評価するために使用される損失関数を指定する必要があります。 オプティマイザーは学習率を調整し、さまざまな重みのセットを通過します。 この場合、損失関数としてバイナリクロスエントロピーを使用します。 オプティマイザーの場合、効率的な確率的勾配降下アルゴリズムであるADAMを使用します。
チューニングに非常によく使われます。 最後に、これは分類の問題であるため、メトリック引数を介して定義された分類の精度を収集して報告します。 この場合、精度を使用します。
#kerasモデルをコンパイルする
model.compile(loss ='binary_crossentropy'、optimizer ='adam'、metrics = ['accuracy'])
モデルの適合と評価
モデルのフィッティングは、基本的にモデルトレーニングとして知られています。 モデルをコンパイルすると、モデルはデータを効率的に調べてトレーニングする準備が整います。 Kerasのfit()関数は、モデルトレーニングのプロセスに使用できます。 モデルトレーニングの前に使用される2つの主なパラメータは次のとおりです。
- エポック:データセット全体を1回通過します。
- バッチサイズ:重みはバッチサイズごとに更新されます。 エポックは、均等に分散されたデータのバッチで構成されます。
#データセットにkerasモデルを適合させる
model.fit(X、y、epochs = 150、batch_size = 10)
このプロセスでは、GPUまたはCPUが使用されます。 エポック、バッチサイズ、そして最も重要なデータのサイズによっては、トレーニングは非常に長いプロセスになる可能性があります。
また、evaluate()関数を使用して、トレーニングデータセットのモデルを評価することもできます。 データはトレーニングセットとテストセットに分割でき、テストXとYはモデル評価に使用できます。
これにより、入力と出力のペアごとに、予測が生成され、平均損失や、インストールした測定値(精度など)を含むスコアが収集されます。
2つの値のリストがevaluate()関数によって返されます。 1つ目はデータセットでのモデルの損失であり、2つ目はデータセットでのモデルの精度です。 レポートの正確性にのみ関心があるため、損失の重要性は無視します。
#kerasモデルを評価する

_、精度= model.evaluate(Xtest、ytest)
print('精度:%。2f'%(精度* 100))
また読む:ニューラルネットワークモデルの紹介
結論
分類ベースのニューラルネットワークを作成して評価しました。 この場合、使用されるデータは小さかったものの、ニューラルネットワークは大部分が大きな数値データセットに適しています。
機械学習とNLPでupGradの高度な証明書プログラムをチェックアウトします。 このコースは、機械学習に関心のあるさまざまな種類の学生を念頭に置いて作成されており、1-1のメンターシップなどを提供しています。
ニューラルネットワークを分類にどのように使用できますか?
分類とは、オブジェクトをグループに分類することです。 分類のタイプは、複数のクラスが予測される場合です。 ニューラルネットワークでは、ニューラルユニットはレイヤーに編成されます。 最初のレイヤーでは、入力が処理され、出力が生成されます。 この出力は、残りのレイヤーを介して送信され、最終出力が生成されます。 同じ入力がレイヤーを介して処理され、異なる出力が生成されます。 これは、多層パーセプトロンで表すことができます。 分類に使用されるニューラルネットワークのタイプはデータセットによって異なりますが、分類の問題にはニューラルネットワークが使用されています。
なぜ人工ニューラルネットワークは分類に適しているのですか?
この質問に答えるには、ニューラルネットワークの基本原理とニューラルネットワークが解決するように設計されている問題を理解する必要があります。 名前が示すように、ニューラルネットワークは人間の脳の生物学的に触発されたモデルです。 基本的な考え方は、ニューロンを数学関数としてモデル化することです。 すべてのニューロンは他のニューロンから入力を受け取り、出力を計算します。 次に、脳内のニューラルネットワークを模倣する方法でこれらのニューロンを接続します。 目的は、いくつかのデータを取り込んで適切な出力を生成できるネットワークを学習することです。
人工ニューラルネットワークはいつ使用する必要がありますか?
人工ニューラルネットワークは、生物のパフォーマンスを複製したり、データのパターンを検出したりする場合に使用されます。 医療診断、音声の認識、データの視覚化、手書き数字の予測はすべて、ANNの優れた使用例です。 人工ニューラルネットワークは、入力と出力の間の複雑な関係を理解する必要がある場合に使用されます。 たとえば、変数に多くのノイズがあり、これらの変数間の関係を理解するのが難しい場合があります。 したがって、人工ニューラルネットワークを使用することは、知識とデータを保持するための一般的な方法です。