関数(ロジスティック曲線)です。過学習を防ぐための正則化についての理論は、機械学習の理論的な専門書を呼んでください。SVM)を用いたアヤメの分類学習を取り上げます。広範に利用されている学習アルゴリズムで、パーセプトロンモデルの拡張とも言えます。SVMでの学習は、各品種を分類する境界(超平面)と、この超平面に最も近いトレーニングデータとの距離を最大化することを目指します。超平面に最も近いトレーニングデータとの距離をマージンと言います。超平面に最も近いトレーニングデータのサンプルをサポートベクトルと呼びます。パーセプトロンモデルと同じ限界を持っているにも関わらず、人気が高いのはなぜでしょうか。非線形の問題に対して、「カーネル化」することが容易であることに理由があります。SVMによる境界(超平面)確定問題の実際を見て見ましょう。以下のコードを見てください。入れ替わったところだけです。SVC)を読み込んでいます。線形サポートベクトルマシンを組み込むためのオプションです。マージンを計算するときの関数のパラメータの値をデフォルト値に指定することです。このコードを実行すると、SVMの決定境界が図示されます。パーセプトロンモデルと同じく、3つの品種をこの境界で完全に分離することはできません。線形サポートベクトルマシンの採用」以下のセルで実行できます。ここで、カーネルトリックという操作が必要となります。カーネルトリックとは、分類の境界となる超平面を直線や平面ではなく、曲線や曲面にしてしまおうとする操作のことです。データ2点間の関係を表現する関数をカーネルと言います。このカーネル関数を用いてマージンを最大化するトレーニングが行われます。function)と言います。sklearnで採用されている動径基底関数はガウスカーネルと呼ばれる以下の関数です。表現される関数をRBFカーネルと言います。\]で表現されるハイパーパラメータです。カーネルと呼ばれる理由は、二つのサンプル間の類似性を表現すると解釈されるからです。類似度は同一のサンプルのときに1となり、全く類似性がないときには0となります。\)の値が大きくなるほど、曲線の曲がり方が急進になります。\)がカットオフ値になります。C=1.0)と書きます。\)の値を大きくします。width)に変更してみました。結果は以下の通りです。境界が曲線になっていることが確認できます。0.5」以下のセルで実行できます。4つの特徴量全てを用いて、アヤメ3品種の分類を行います。以下のコードを見てください。sum(result==y)print('正解率:%表示')print(100.0*success/total)このコードを実行すると、以下の結果が得られます。2]正解率:%表示99.33333333333333誤分類は1箇所だけですが、正解率を100%にする完全な識別は不可能です。現実のデータでは、超平面で100%の正解率で分類できることはあり得ません。言い換えると、線形の超平面で分離可能なデータは現実には殆どありません。次に、多層パーセプトロンモデルを使った学習問題を取り上げます。以下が3層ニューラルネットワークを使用したトレーニング用のコードです。Colabにあります。0.95となり、単純パーセプトロンモデルに比較して、予測の精度が改善されます。4種類の特徴を用いて分類を行うと、より予測の精度は改善されます。修正して、コードを実行してください。正解率は0.99に上昇します。線形サポートベクトルマシンでは誤識別は1回、正解率は99.3%でしたから、分類器としての性能は優れているとは言えません。言え、学習の時間を長くすれば、正解率は100%に近づきます。その分、時間はかかります。PCA)は様々な分野において使用されている線形変換法で、データ情報の次元削減のためによく利用されています。PCAは、特徴量同士の相関関係に基づいてデータからパターンを抽出するのに役に立つます。高次元データにおいて分散が最大となる方向を見つけ出して、元の次元よりも低い次元の部分空間へ射影する手法です。この新しく作成された部分空間では、分散が最大となる方向に座標系の軸を設定します。