ホーム » scikit-learn

scikit-learn」カテゴリーアーカイブ

TensorFlow と scikit-learn 重回帰分析の 3D ビジョン

TensorFlow と scikit-learn 重回帰分析の 3D ビジョン

先の記事 : 「TensorFlow と scikit-learn 分類器の視覚的比較」 では線形分離できないデータセットについて決定境界を分類器別にプロットして比較してみましたが、今度は TensorFlow によるニューラルネットワークと scikit-learn の各種回帰分析器による近似曲面を 3-D ビジョンで比較してみます。

TensorFlow については基本的な MLP をベースにエポック数で比較、scikit-learn については代表的な回帰分析器 (Regresesor) 別に試しています。重回帰の題材はシンプルに sin(x) + cos(y) をノイズなしでサンプリングしています。(ノイズありだと曲面がきれいに見えなかったので。)MSE (平均二乗誤差)の数値も併せて表記しています。

サンプリングの結果をプロットすると以下のような図になります。
サンプリングの結果は青色で描画し、同じ xy 平面における予測近似曲面はライム(緑)色で描画します :

reg3d_graph

TensorFlow MLP による回帰

TensorFlow についてはユニット数 [512, 128] の 2 層 MLP で試しました。
活性化関数による差はあまり見られなかったので、エポック数で近似曲面の様子を比較してみました。

1) 1 epoch
# MSE : 0.8860
1 epoch 直後の画像です。ライム色が近似曲面です。

reg3d_tf1b

2) 5 epochs
# MSE : 0.2806

reg3d_tf5

3) 10 epochs
# MSE : 0.1555
10 epochs のトレーニングで予測の精度が高まっています。

reg3d_tf10

4) 100 epochs
# MSE : 0.0343
かなり近似できていますが、1000 epochs までトレーニングを続けます。

reg3d_tf100

5) 1000 epochs
# MSE : MSE : 0.0089
MSE が 0.01 を切りました。

reg3d_tf1000

scikit-learn の回帰分析器

scikit-learn については代表的な回帰分析器をデフォルト・パラメータで順繰りに試してみました :

線形回帰, 多項式フィッティング, K-近傍法, 決定木, Random Forest, SVM, Gaussian Process, AdaBoost

(線形回帰はともかくも)全体的に予想より上手く近似できていますが、Gaussian Process はほぼ誤差がありません。
決定木や Random Forest は図を拡大すれば AdaBoost 的になっているかもしれません。

 
1) 線形回帰 (linear_model.LinearRegression)
# MSE : 0.6370

reg3d_linear

2) 多項式フィッティング
# MSE : 0.0328
図は 3 次多項式です。

reg3d_polinomial

3) K-近傍法
# MSE : 0.0025

reg3d_k-neighbors

4) 決定木
# MSE : 0.0052

reg3d_dtree

5) Random Forest
# MSE : 0.0061

reg3d_rforest

6) SVM
# MSE : 0.0054

reg3d_svr

7) Gaussian Process
# MSE : 0.0000000000015268
%.4f (小数点以下4桁表示) では誤差が 0 になってしまいました。

reg3d_gp

8) AdaBoost
# MSE : 0.0753
決定木や Random Forest もこんな感じになるかと思いましたが…
reg3d_adaboost

 

以上

TensorFlow と scikit-learn 分類器の視覚的比較

TensorFlow と scikit-learn 分類器の視覚的比較

TensorFlow によるニューラルネットワークと scikit-learn の各種分類器について
線形分離ができないデータセットについて決定境界を描画して視覚的に比較してみました。
scikit-learn については代表的な分類器を、TensorFlow については基本的な MLP を活性化関数を変えて試しています。

データセットは以前にも使った sklearn.datasets.make_moons で、データポイント数は 500 ノイズは 0.1 です。
プロットすると以下のような図になります :

skl_moon

scikit-learn の分類器

scikit-learn の代表的な分類器をデフォルト・パラメータで順繰りに試してみました :

Gaussian NB, K-近傍法, 決定木, Random Forest, 線形 SVM, SVM, Gaussian Process, AdaBoost

K-近傍法, SVM, Gaussian Process が視覚的にきれいに分類できています。
決定木, Random Forest, AdaBoost は似た傾向の分類になっています。

 
1) Gaussian NB (Naive Bayes)

skl_moon_gnb

2) K-近傍法

skl_moon_k-neighbors

3) 決定木

skl_moon_dtree

4) Random Forest

skl_moon_random-forest

5) 線形 SVM

skl_moon_svm-linear

6) SVM

skl_moon_svm

7) Gaussian Process

skl_moon_gaussian-process

8) AdaBoost

skl_moon_adaboost

TensorFlow MLP による分類

TensorFlow についてはユニット数 [512, 128] の 2 層 MLP で試しました。
活性化関数は ReLU, Sigmoid, tanh を使用、明らかに ReLU が優れています。

1) ReLU

skl_moon_tfl_relu

2) Sigmoid

skl_moon_tfl_sigmoid

3) tanh

skl_moon_tfl_tanh

以上

AI導入支援 #2 ウェビナー

スモールスタートを可能としたAI導入支援   Vol.2
[無料 WEB セミナー] [詳細]
「画像認識 AI PoC スターターパック」の紹介
既に AI 技術を実ビジネスで活用し、成果を上げている日本企業も多く存在しており、競争優位なビジネスを展開しております。
しかしながら AI を導入したくとも PoC (概念実証) だけでも高額な費用がかかり取組めていない企業も少なくないようです。A I導入時には欠かせない PoC を手軽にしかも短期間で認知度を確認可能とするサービの紹介と共に、AI 技術の特性と具体的な導入プロセスに加え運用時のポイントについても解説いたします。
日時:2021年10月13日(水)
会場:WEBセミナー
共催:クラスキャット、日本FLOW(株)
後援:働き方改革推進コンソーシアム
参加費: 無料 (事前登録制)
人工知能開発支援
◆ クラスキャットは 人工知能研究開発支援 サービスを提供しています :
  • テクニカルコンサルティングサービス
  • 実証実験 (プロトタイプ構築)
  • アプリケーションへの実装
  • 人工知能研修サービス
◆ お問合せ先 ◆
(株)クラスキャット
セールス・インフォメーション
E-Mail:sales-info@classcat.com