スポンサーリンク

【サポートベクターマシン回帰 Python】サポートベクター回帰(SVR)とは?SVRを実行できるライブラリ、SVRのサンプルコードと実装など、サポートベクターマシンを学びたいあなたにおすすめの本もご紹介します【scikit-learn】

スポンサーリンク
サポートベクターマシン サポートベクトルマシン 入門 サポートベクターマシン 回帰 python 講談社 機械学習プロフェッショナルシリーズ おすすめ 本 0 Python
スポンサーリンク
スポンサーリンク
スポンサーリンク

「サポートベクターマシン」とは、データの中の関係をモデル化する方法の1つです。

サポートベクターマシンは、英語で Support Vector Machine なのですが、

発音の問題で、サポートベクトルマシンと書かれることがありますが、同じものを指しています。

本記事では、サポートベクターマシンに統一して書いていきます。

下で示すように、サポートベクターマシンは、英語を略して SVM とも書かれます。

コードの中では、以下の略語がよく使われます。

  • サポートベクターマシン;SVM ( Support Vector Machine )
  • サポートベクター分類;SVC ( Support Vector Classification )
  • サポートベクター回帰;SVR  ( Support Vector Regression )

 

サポートベクターマシンは、線形的な回帰だけでなく、

非線形な関係の回帰問題にも適用することが可能です。

「線形」とは、データのある変数が増えたら別の変数も直線的に増える(または減る)という状態を指します。

「非線形」とは、線形でない状態を指します。

わかりやすい例としては、2次関数や指数関数などがあります。

「回帰」とは、データを式で表現することを言います。

サポートベクターマシンを使った回帰分析(サポートベクター回帰;SVR)を行うことで、データの性質を表現した数式が得られます。

その数式を「(サポートベクターマシン)回帰直線」や「(サポートベクターマシン)回帰モデル」と呼びます。

 

  • サポートベクター回帰の求め方は?
  • サポートベクター回帰を行うライブラリは?
  • サポートベクターマシンを学ぶためのおすすめの本は?

と思われる方も多いかと思います。

 

そこで本記事では、

  • サポートベクター回帰を Python で行う方法
  • サポートベクター回帰を行うライブラリ
  • サポートベクター回帰モデルのサンプルコード・実装
  • サポートベクター回帰を学ぶのにおすすめの本

などについて、サンプルコードを交えながら、わかりやすくまとめます。

 

スポンサーリンク

【サポートベクターマシン回帰 Python】サポートベクター回帰(SVR)とは?SVRを実行できるライブラリ、SVRのサンプルコードと実装など、サポートベクターマシンを学びたいあなたにおすすめの本もご紹介します【scikit-learn】

サポートベクターマシン回帰(SVR)のやり方とは

サポートベクターマシン回帰のやり方の全体像は以下になります。

(1), データの準備

(2), サポートベクター回帰(SVR)の実行

(3), 結果の可視化

の3ステップになります。

以下でそれぞれについて解説していきますね。

 

サポートベクター回帰のためのデータ準備

サポートベクター回帰は、2つ以上の変数の関係を調べる方法です。

サポートベクター回帰分析では、2つ以上の変数を含んだデータが必要です。

例えば2変数であれば、

  • 身長と体重
  • 気温と売り上げ

などの値のペアのデータとなります。

  • サポートベクター回帰分析では、分析に適した形式のデータが必要

ということになります。

 

これを読まれているあなたは、サポートベクター回帰を行ってみたいデータをお持ちかもしれません。

そのデータを使われて構いません。

この記事では、人工データを使って、サポートベクター回帰を行ってみたいと思います。

 

 

 

Python なら、サクッとサポートベクター回帰を実行できます。

サポートベクター回帰ができるライブラリがあるので、

細かいアルゴリズムをプログラミングしなくても

サポートベクター回帰をラクに実行することができます。

以下でサポートベクター回帰の実装を説明しますね。

Python によるサポートベクター回帰のためのライブラリ sklearn とは?

Python でサポートベクター回帰分析は、

scikit-learn(サイキット・ラーン)

というライブラリパッケージを使うとサクッと実行できます。

scikit-learn は、無料で使える高性能ライブラリです。

サポートベクター回帰だけでなく、

その他の様々な統計解析なども実行できます。

使い慣れておいて損はないライブラリとなっています。

以下で scikit-learn を使って、

サポートベクター回帰分析を Python でサンプルコードを示しながら、実装したいと思います。

 

サポートベクター回帰モデルの作成・実装

実装の流れは以下になります。

(1), scikit-learn などの必要なライブラリをインポート

(2), データの準備(今回は人工データを使います)

(3), サポートベクター回帰分析の実行

(4), 結果の表示(今回はグラフで可視化します)

 

(1), scikit-learn などの必要なライブラリをインポート

サポートベクターマシン サポートベクトルマシン 入門 サポートベクターマシン 回帰 python 講談社 機械学習プロフェッショナルシリーズ おすすめ 本 1

ここで使っているライブラリは

NumPy」は、データを扱いやすくするライブラリです。行列計算などを高速に行うことができます。

matplotlib」は、グラフを表示するためのライブラリです。

skearn」が、サポートベクター回帰を行うためのライブラリで、コードの中では「svm(サポートベクターマシン)」を使うことを示しています。

 

 

(2), データの準備(人工データの生成)

サポートベクターマシン サポートベクトルマシン 入門 サポートベクターマシン 回帰 python 講談社 機械学習プロフェッショナルシリーズ おすすめ 本 2

今回はデータを人口的にランダムに生成します。

気温と売上という2つの変数を生成します。

In[5]: 気温のデータは、500個のデータ(0から30までの実数)を生成しています。

(seed.rand(500)で0から1の間の数値をランダムに500個生成しています。

以下のような感じです↓

サポートベクターマシン サポートベクトルマシン 入門 サポートベクターマシン 回帰 python 講談社 機械学習プロフェッショナルシリーズ おすすめ 本 3

 

In[6]: 売上のデータは、気温データを使って、

以下の式で生成されています。

(売上)=2×(気温)+30 + ランダム数

 

「30 + ランダム数」の部分を見てみると以下の感じです↓

サポートベクターマシン サポートベクトルマシン 入門 サポートベクターマシン 回帰 python 講談社 機械学習プロフェッショナルシリーズ おすすめ 本 4

「10*seed.rand(500)」は、0から10の間の数値です。

「+ 30 +10*seed.rand(500)」は、30 から40 の間の数値が500個生成されていることがわかります。

これを平均すると、約 35.3となっています↓

なので、結局、データを生成するために使った数式は、

(売上)=2×(気温)+ 35.3

ということになります。

サポートベクターマシン サポートベクトルマシン 入門 サポートベクターマシン 回帰 python 講談社 機械学習プロフェッショナルシリーズ おすすめ 本 5

必要だった2つの変数(気温、売上)のデータがそろいました。

可視化して確かめてみるとと上の感じになります。

 

 

(3), サポートベクター回帰分析の実行

サポートベクターマシン サポートベクトルマシン 入門 サポートベクターマシン 回帰 python 講談社 機械学習プロフェッショナルシリーズ おすすめ 本 6

Python  でサポートベクター回帰分析を行うには、

scikit-learn の svm モジュールを

使います。

In[15] まずサポートベクター回帰を行うためのオブジェクト(svr と名付けています)を作ります。

この時、線形カーネル(kernel = ‘linear’)を指定しています。

 

In[16] 生成したsvrオブジェクトの回帰メソッド(fitメソッド)を使い、サポートベクター回帰を実行しています。

fitメソッドはカッコの中に、2つの変数を指定します。

今回は、気温から売上を予測したいので、

fit( 気温、売上) の順番で指定します。

気温については、変数の次元を調整するために

kion.reshape(-1, 1)

としています。

kion[: , newaxis] 

としてもオッケーです。

svm の fitメソッドの仕様に合わせるための処理となっています。

気温の次元は、500行0列の「ベクトル」ですが、

修正後は、500行1列の「行列」にしています。

 

 

(4), 結果の表示(グラフで可視化)

サポートベクターマシン サポートベクトルマシン 入門 サポートベクターマシン 回帰 python 講談社 機械学習プロフェッショナルシリーズ おすすめ 本 7

得られた直線の式を可視化しています。

直線がデータの傾向をよく再現しているのが見て取れます。

 

グラフの書き方については以下です↓

In[23] 直線を加えるために、点を大量にかくことで実現しています。

np.linspace で0から30までを500間隔で点を生成して、変数 kion_fit に代入しています。

ここでも次元を仕様に合うように変更しています。

生成したそれぞれの点(500点)について、

得られた直線の式を使って、売上の値を求めて、uriage_fit に代入しています。

これでサポートベクター回帰で求めた直線上の点(kion_fit, triage_fit)の500点のデータが得られたわけです。

このデータと最初のデータを同じグラフに表示すれば上の図になります。

 

 

サポートベクターマシンを学ぶのにおすすめの本とは

サポートベクターマシンの使い方のイメージはつかんでいただけたのではないでしょうか。

より高度な使い方をするには、

サポートベクターマシンのアルゴリズムや、様々なテクニックについて学ぶのがオススメです。

今回は、1番シンプルな例で直線的な回帰で、線形カーネルと用いました。

サポートベクター回帰は、非線形な傾向を持つデータの回帰も実行できます。

非線形な関係を表現するには、非線形カーネルやガウスカーネルなどを使う方法もあります。

このように、サポートベクターマシンをより詳しく学びたいあなたのには、以下の本がオススメです↓

サポートベクトルマシン (機械学習プロフェッショナルシリーズ)

パターン認識のためのサポートベクトルマシン入門

サポートベクターマシン入門

 

 

 

 

というわけで、本記事では、

  • サポートベクター回帰を Python で行う方法
  • サポートベクター回帰を行うライブラリ
  • サポートベクター回帰モデルのサンプルコード・実装
  • サポートベクター回帰を学ぶのにおすすめの本

などについて、サンプルコードを交えながら、わかりやすくまとめました。

 

bサイン

 

 

こちらもございます↓

 

 

 

こちらもございます↓

【線形回帰 Python】線形回帰とは?線形回帰モデルのアルゴリズム、最小二乗法とは?回帰直線式や係数の求め方など、線形回帰分析を Python でやりたいあなたはこちらをどうぞ【scikit-learn】

 

【ニューラルネットワーク Python】ニューラルネットワークとは?種類やモデル、仕組みを学習し、Python で入門・実装したいあなたは、サンプルコードなどもこちらをどうぞ【keras 入門】

スポンサーリンク
スポンサーリンク
スポンサーリンク
スポンサーリンク
スポンサーリンク
error: Content is protected !!
タイトルとURLをコピーしました