非線形な関係にも対応できる、柔軟な回帰分析モデルを構築

Neural Network Regression

Neural Network Regressionアプリは、ニューラルネットワーク(NN)を使って、複数の説明変数(X)と目的変数(Y)の関係をモデル化・予測するためものです。従来の回帰モデルでは捉えにくい非線形な関係や複雑なデータ構造も、ニューラルネットの柔軟性で表現することができます。このアプリは Pythonの scikit-learn ライブラリをベースとしています。

このアプリの良いところ

  • 非線形な関係を含むデータにも対応できます。
  • 説明変数と目的変数の関係を学習して、予測モデルを構築できます。
  • 学習済みモデルを使って、新しいデータから予測値を出力できます。

※インストールの際、必要なPythonライブラリ(scikit-learnなど)が自動的にダウンロードされます。インストールが完了するまで数分お待ちいただき、その後Originを再起動してください。

Neural Network Regressionアプリ実行例

           
アプリアイコン Neural Network Regression
作者 OriginLab Technical Support
ライセンス 無料
必要バージョン Origin2022b (9.95)以降、Pro版専用
ユーザインタフェースの言語 英語
カテゴリ 解析
開発元ページ
※英語のみ

使用方法(基本の流れ)

  1. ワークシートまたはグラフをアクティブにする
  2. アプリアイコンをクリックしてダイアログを開く
  3. 入力変数と出力変数を選択
  4. 「Options」タブでネットワーク構造・学習条件を設定
  5. OKをクリックして学習開始(必要に応じて「Prediction」タブで予測を実行)

実行後には、フィット結果、残差プロット、交差検証統計、学習済みモデルのレポートが出力されます。

学習条件

Neural Network Regressionアプリの「Options」タブでは、次のような学習条件(ハイパーパラメータ)を設定できます。
※隠れ層の構成や学習条件は、データによって最適な組み合わせが異なります。一度でうまくいかない場合もありますが、何度か試すことで精度の高いモデルが見つかります。(参考:構造選定のヒントはこちら

パラメータ名 説明
Hidden Neurons in Each Layer 層ごとの隠れニューロン数を空白区切りで入力(例: 4 8 7 4)
Maximum Iterations 学習の最大反復回数
Learning Rate 重み更新時の学習率
Loss Tolerance 誤差関数の収束しきい値
Epochs Without Change 誤差改善が見られない場合の打ち切り条件
Activation Function Tanh、Logistic、Identityから活性化関数を選択
Standardization 正規化の手法をNone, Z-scores, Normalize to (0, 1)から選択

学習条件の設定についてのご相談やご要望などございましたら、お気軽にご相談ください。

結果レポートシートに表示される主な項目

項目 意味・解釈
Number of Points 使用されたデータ点数
Degrees of Freedom 自由度。データ点数からパラメータ数などを差し引いた値
Residual Sum of Squares 残差平方和。実測値と予測値の差の2乗の合計。小さいほど良い
R-Square (COD) 決定係数。モデルがデータをどの程度説明できているかを示す(1に近いほど良好)
Adj. R-Square 調整済み決定係数。モデルの複雑さを考慮して補正されたR²
Root-MSE (SD) 残差の標準偏差(平均的な誤差の大きさ)。小さいほど良い
Loss / Iterations 最終的な損失関数の値と、学習にかかった繰り返し回数
Fitted Plot 元データとNNによるフィット結果の重ね合わせ。精度の視覚的確認に有用
Residual Plot 残差の分布や傾向を確認。偏りやパターンがないかをチェック
Regression Plot 予測値と実測値の相関を確認。直線に近いほど良好
Loss Curve Plot 学習中の損失値の推移。滑らかに減少し、平坦になれば収束していると判断できる

例1:ピークを持つ曲線のフィッティング

2つのピークを持つ波形データに対して、ニューラルネットワークを使ってフィッティングを行う例です。非線形な波形に対してNNがどのようにフィットできるかを確認できます。
以下のようなステップで操作します。

  1. アプリウィンドウにあるNeural Network Regressionアプリアイコンを右クリックし、「サンプルフォルダを開く」を選択して開いたフォルダ中のNeural Network Regression Sample.opjuを開きます。
  2. サンプルデータを開く

  3. 表示されたノートウィンドウの「Two-Peaks Curve Fitting」をクリックしてデータを表示します。
  4. 「Two-Peaks Curve Fitting」データを表示

  5. Book5にあるA、B列を選択し、「作図:基本の2Dグラフ:散布図」を選択して作図します。
  6. データから散布図を作成

  7. アプリウィンドウにあるNeural Network Regressionアプリアイコンをクリックしてダイアログを開きます。
  8. 「Options」タブで、層ごとの隠れニューロン数や活性化関数、学習条件などを下図のように設定します。ここでの活性化関数には Hyperbolic Tangentを使用しています。非線形なピークを含むカーブに対応するには Hyperbolic Tangent や Logistic のいずれも有効です。
    ※隠れ層の構成や学習条件は、データによって最適な組み合わせが異なります。一度でうまくいかない場合もありますが、何度か試すことで精度の高いモデルが見つかります。(参考:構造選定のヒントはこちら
  9. ダイアログの設定-「Options」タブ

  10. 「OK」をクリックして実行すると、結果レポートシートが出力します。
  11. 結果レポートが出力し、グラフが更新

    結果から読み取れること

    統計表
    残差プロット
    損失曲線
    • 決定係数 R² は 0.9988 と非常に高く、モデルがデータのほとんどを正確に説明できていることがわかります。
    • 残差の標準偏差(Root-MSE)も小さく、予測誤差が全体的に抑えられています。
    • 残差プロットに大きな偏りがなく、特定の範囲で外れた予測も見られません。
    • 損失曲線(Loss Curve)がなだらかに収束しており、学習が安定して進んだことが確認できます。

    今回のニューラルネットワークモデルは、与えられた非線形な波形データに対して非常に良好なフィット性能を示していると評価できます。

    予測の手順(Predictボタンを使う方法)

    入力データ(X)を与えることで、対応する出力(Y)を予測できます。実際の操作は以下の通りです。

  12. 結果レポートシートの右上にある 「Predict」ボタン をクリックします。
  13. 表示されるダイアログで、新しい入力データ(X)の範囲を指定し、「OK」をクリックすると、学習済みモデルを使って新しいYの予測結果が出力されます。
  14. モデルに与える条件データ(X)を指定することで、それに対応する結果(Y)を出力

例2:重回帰的な分析例

3つの説明変数(Indep1~3)と1つの目的変数(Dep)の関係を学習する例です。重回帰に似た設定ですが、ニューラルネットを使うことで非線形性や変数間の相互作用にも対応できます。
実際の操作は以下の通りです。

  1. アプリウィンドウにあるNeural Network Regressionアプリアイコンを右クリックし、「サンプルフォルダを開く」を選択して開いたフォルダ中のNeural Network Regression Sample.opjuを開きます。
  2. サンプルデータを開く

  3. 表示されたノートウィンドウの「Multiple Linear Regression」をクリックしてデータを表示します。
  4. 「Multiple Linear Regression」データを表示

  5. Book6をアクティブにして、アプリウィンドウにあるNeural Network Regressionアプリアイコンをクリックしてダイアログを開きます。
  6. 「Input Data」タブを開き、Independent Dataとして列A~Cを選択し、Dependent Dataとして列Dを選択します。
  7. 入力データを設定

  8. 「Options」タブで、層ごとの隠れニューロン数や活性化関数、学習条件などを下図のように設定します。活性化関数には Identity を使用し、線形モデルに近い構成を選びます。
    ※隠れ層の構成や学習条件は、データによって最適な組み合わせが異なります。一度でうまくいかない場合もありますが、何度か試すことで精度の高いモデルが見つかります。(参考:構造選定のヒントはこちら
  9. ダイアログの設定-「Options」タブ

  10. 「OK」をクリックして実行すると、結果レポートシートが出力します。
  11. 結果レポートが出力

    結果から読み取れること

    統計表
    残差プロット
    損失曲線
    • 決定係数 R² は 0.9484 と高く、モデルがデータの傾向を十分に捉えていることがわかります。
    • 残差の標準偏差(Root-MSE)が 0.39007 と比較的小さく、予測誤差も許容範囲に収まっています。
    • 残差プロットでは大きな偏りやトレンドは見られず、特定の入力条件に対して著しくずれた予測も確認されていません。
    • 交差検証の結果(Cross Validation)でも全体的に安定しており、モデルの汎化性能にも信頼性があります。
    • 損失曲線(Loss Curve)が初期から滑らかに減少し、短い学習回数で早期に収束していることが確認できます。

    今回のように比較的線形に近いデータであれば、隠れ層の設定を少なめにしたシンプルなネットワーク構成でも、高い予測精度が得られることがわかります。

Neural Network Fittingアプリについて

OriginProには、もうひとつのニューラルネットアプリ「Neural Network Fitting」も用意されています。両者の主な違いは次の通りです。

項目 Neural Network Regression(NNR) Neural Network Fitting(NNF)
実行環境 Python(scikit-learn を使用) R(neuralnet パッケージを使用)
モデルの再利用 可能(学習済みモデルを保存し、予測に再利用可) 不可(毎回再学習が必要)
予測機能 Predictionタブ、Predictionボタン、Pythonスクリプトから実行 Predictionタブから手動で実行
パラメータ設定 詳細に指定可能(学習率、収束条件なども) 基本的な項目のみでシンプル
ネットワークプロット 非対応 対応(Origin 2021b 以降)
計算時間 構成が複雑な場合はやや重くなる 比較的高速
スクリプトからのモデル再利用 nnr.LoadRegressionModel() により、アクティブブックの学習済みモデルを呼び出して新しい入力に対して予測可能。 モデルは直接呼び出せないため、スクリプトによる再利用はできない。

テクニカルサポート

ご不明な点がございましたら、お気軽にお問合せフォームよりテクニカルサポートまでご連絡ください。

その際、必ず「製品名」「バージョン」「シリアル番号」をご連絡ください。

page_top_icon