機械学習(機械学習)[ズハウ・ジワのバージョン - 「スイカ帳」 - ノート] DAY6- SVM

ここに画像を挿入説明

パンチ部品、今日は-
より後方より呉服最後にああを必ずお読みください。@!@

6.1間隔とサポートベクターマシン
ここに画像を挿入説明
ここに画像を挿入説明
ここに画像を挿入説明
双対問題の6.2ペア
ここに画像を挿入説明
SMO
プラットのSMOアルゴリズムは、多くの小規模な最適化問題解決のための大規模な最適化問題を分解することで、全体的な解決の結果として、それらを解決するための彼らの順序の結果はまだ時間と完全に一致していますはるかに短いです。
SMOアルゴリズム動作は、各サイクルは、2つのαを最適化するように選択します。アルファの適切な対たら他方を減少させながら、増加される、見つかりました。ここで、はしない処理部に、またはを通じて、間隔境界の外側でなければならない2つの適切なアルファを意味するか、境界上にありません。(これは、より多くの証拠と実装せずに、実装する複雑さ)
コア6.3機能
我々はカーネル5つのスキルを言及しているシーンの手前インチ 私たちは、SVM直線的に切り離せない問題が別の特徴空間に1つの空間からのデータを変換するために、一般的に処理されます。新しい特徴空間の下では、比較的明確なテストの結果を持っている傾向があります。私たちは、サンプルを分割することができるように、その後、高次元の特徴空間がなければならない、元の空間が有限次元の場合は、集計を取得し、すなわち限られたプロパティ。
SVM最適化目的関数は、製品の形で書かれている、ベクター製品は単一のスカラまたは値を乗じて得られた二兄弟ベクトルであり、我々は、φ(x)は、φ(x)は、最適化目標、XXマッピング後の特徴ベクトルを表していると仮定しますこの関数は次のようになります。
ここに画像を挿入説明
6.4ソフト間隔正則

允许支持向量机在一些样本上出错,为此要引入”软间隔“(soft margin)的概念。

ここに画像を挿入説明
6.5サポートベクトル回帰

回归和分类从某种意义上讲,本质上是一回事。SVM分类,就是找到一个平面,
让两个分类集合的支持向量或者所有的数据(LSSVM)离分类平面最远;
SVR回归,就是找到一个回归平面,让一个集合的所有数据到该平面的距离最近。 

SVRとSVMコスト関数は非常に似ていますが、最も最適化されたオブジェクトは異なる、非常に異なるデュアルタイプ、同じ溶液をラグランジュ最適化問題の解決に基づいています。このような問題に早期解決を解決することは非常に複雑であり、後のほとんどのエンジニアリング人々のためのハイレベルの要件に新しい簡単なソリューション、数学とプログラミングの多くのうち、まだ実装するのは非常に複雑で困難であるため、大きな牛が導入されましたいくつかのSVMライブラリ。より多くの有名なLIBSVM、SVMおよびSVRを達成しながら、ライブラリがあります。

単純な例のランダムアレイ、データに見てみましょう[-5.0,9.0]、関数y = 12x2 + 3X + 5 +ノイズ、Iは、コアの三種類を使用SVRは、次のとおりペナルティ係数と一つのポリRBF二種類。結果は以下の通りであります:

from sklearn import svm
import numpy as np
from matplotlib import pyplot as plt 

X = np.arange(-5.,9.,0.1)
X=np.random.permutation(X)
X_=[[i] for i in X]
#print X
b=5.
y=0.5 * X ** 2.0 +3. * X + b + np.random.random(X.shape)* 10.
y_=[i for i in y]

rbf1=svm.SVR(kernel='rbf',C=1, )#degree=2,,gamma=, coef0=
rbf2=svm.SVR(kernel='rbf',C=20, )#degree=2,,gamma=, coef0=
poly=svm.SVR(kernel='poly',C=1,degree=2)
rbf1.fit(X_,y_)
rbf2.fit(X_,y_)
poly.fit(X_,y_)
result1 = rbf1.predict(X_)
result2 = rbf2.predict(X_)
result3 = poly.predict(X_)

plt.plot(X,y,'bo',fillstyle='none')
plt.plot(X,result1,'r.')
plt.plot(X,result2,'g.')
plt.plot(X,result3,'c.')
plt.show()

結果:
ここに画像を挿入説明
ここに画像を挿入説明

青は、C = RBF 1、緑色がC = RBF 20件のである、ポリ赤です。それは、C = RBF 20のベストです。私たちはより良い表現、線形プログラミング機能の効果を知っているが、ほとんどの場合、我々は、機能発現データを知らないので、ゆっくりとしか、ここにSVMの役割をテストします。場合 私の視点では、回帰SVRの効果は、ニューラルネットワークとしてではありません。
6.6カーネル法の
ここに画像を挿入説明
SVMのトレーニング
SVMモデルの構築には、あまりにも多くの経験を費やす必要はありません、自分の建物、そのようなモデルは、常に報われない事、SVMを達成されている言語は、独自の機械学習ツールのライブラリを持っているプログラミングの様々な、ですアルゴリズム。Pythonの一般的に使用される機械学習ライブラリscikit学習です。

5倍のクロスバリデーションテストモデルのパフォーマンスを分け、最も基本的なアイリスデータセットを分類するSVM分類器を使用して複数を用いて以下ません検索パラメータのデフォルトモデルの良い結果をたくさんした後、見ることができます。


from sklearn.svm import SVC
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split, KFold
import numpy as np


def build_model():
    """
    建立模型
    :return:
    """
    svc = SVC(C=1.0, kernel='rbf', gamma='scale')
    return svc


if __name__ == '__main__':
    data = load_iris()
    x, y = data.data, data.target
    x_train, x_test, y_train, y_test = train_test_split(x, y, test_size=0.2, random_state=2019)
    model = build_model()
    model.fit(x_train, y_train)
    print("准确率: {:.4f}".format(np.sum(y_test == model.predict(x_test)) / y_test.shape[0]))

    # 交叉验证效果
    kf = KFold(n_splits=5)
    i = 0
    for train_index, test_index in kf.split(x):
        train_x, train_y = x[train_index], y[train_index]
        test_x, test_y = x[test_index], y[test_index]
        model = build_model()
        model.fit(train_x, train_y)
        acc = np.sum(test_y == model.predict(test_x)) / test_y.shape[0]
        print("Fold {}, test accuracy {:.2f}".format(i+1, acc))
        i += 1

結果:
ここに画像を挿入説明

公開された552元の記事 ウォンの賞賛129 ・は 40000 +を見て

おすすめ

転載: blog.csdn.net/weixin_43838785/article/details/104245921