CoolFace
Apppublic

labkasei/symbolic-regression

sourceHugging Faceupdated 4mo agoView on Hugging Face
0likes
App README

シンボリック回帰アプリ

CSVデータをアップロードし、目的変数と説明変数を選択するだけで、説明変数から目的変数を予測する人間が読める数式を自動発見するWebアプリケーションです。

概要

このアプリは、単に予測精度の高いブラックボックスモデルを作ることが目的ではありません。最終成果物として人間が読める数式を出力することが最重要です。

主な機能

  • —CSVファイルのアップロードとデータ確認
  • —目的変数・説明変数の選択
  • —シンボリック回帰による数式の自動探索
  • —数式の通常表記・LaTeX表記・Python関数形式での出力
  • —精度指標の表示(R², RMSE, MAE, MAPE, sMAPE, AIC/BIC等)
  • —候補モデルの比較(Pareto frontier)
  • —結果のエクスポート(テキスト, LaTeX, Python, CSV, Markdown, HTML, ZIP)

セットアップ

必要要件

  • —Python 3.11 以上
  • —pip

インストール

bash
# リポジトリをクローンまたはダウンロード
cd symbolic_regression_app

# 依存パッケージのインストール
pip install -r requirements.txt

オプション: PySR のインストール

PySRはJulia言語に依存するため、追加のセットアップが必要です:

bash
pip install pysr
python -c "import pysr; pysr.install()"

PySRが利用できない場合は、自動的にgplearnまたはフォールバック方式が使用されます。

起動方法

bash
streamlit run app.py

ブラウザで http://localhost:8501 にアクセスしてください。

使い方

  1. 1.データアップロード: CSVファイルをアップロード(またはサンプルデータを使用)
  2. 2.変数選択: 目的変数(y)を1つ、説明変数(X)を複数選択
  3. 3.探索条件設定: エンジン、最大複雑度、探索時間等を設定
  4. 4.モデル探索開始: ボタンをクリックして探索を実行
  5. 5.結果確認: 数式、精度指標、プロットを確認
  6. 6.エクスポート: 必要な形式でダウンロード

探索エンジン

以下の3つのエンジンを優先順位に従って使用します:

優先度エンジン特徴
1PySRJulia製の高性能シンボリック回帰。最も高品質な数式を発見可能
2gplearnPython製の遺伝的プログラミング。インストールが容易
3フォールバックLassoCV + 候補特徴量生成。確実に動作

ファイル構成

symbolic_regression_app/
├── app.py                  # Streamlit UIアプリケーション
├── symbolic_engine.py      # シンボリック回帰エンジン
├── preprocessing.py        # データ前処理モジュール
├── metrics.py              # 精度指標計算モジュール
├── plotting.py             # 可視化モジュール
├── export_utils.py         # エクスポートユーティリティ
├── requirements.txt        # 依存パッケージ
├── README.md               # このファイル
├── sample_data.csv         # サンプルデータ
├── generate_sample_data.py # サンプルデータ生成スクリプト
└── tests/
    ├── __init__.py
    └── test_smoke.py       # スモークテスト

サンプルデータ

sample_data.csv は以下の関係式で生成されたデータです:

y = 3 * x1^2 + 2 * x2 / (abs(x3) + 1) - 0.5 * log(abs(x4) + 1) + noise

テスト

bash
pytest tests/ -v

精度指標

以下の精度指標を表示します:

  • —Train R² / Test R² / Adjusted R²
  • —RMSE / MAE / MAPE / sMAPE
  • —Median Absolute Error
  • —交差検証 R² / RMSE(平均・標準偏差)
  • —数式の複雑度・項数
  • —実行時間
  • —AIC / BIC(参考値)

過学習対策

  • —Train/Test Split
  • —K-Fold Cross Validation
  • —Random Seed の固定
  • —目的変数の説明変数混入チェック
  • —欠損値・無限大値の処理
  • —Complexity Penalty
  • —最大式サイズ制限
  • —最大探索時間制限
  • —Pareto Frontier による精度-複雑さトレードオフの可視化

既知の制約

  • —PySRはJulia環境のセットアップが必要で、環境によっては動作しない場合があります
  • —gplearnは大規模データでは計算時間が長くなる場合があります
  • —フォールバック方式は線形結合に基づくため、非線形な交互作用の発見に限界があります
  • —AIC/BICはシンボリック回帰ではパラメータ数の定義が難しいため、参考値です

今後改善できる点

  • —PySRの自動インストール機能
  • —より多様な演算子のサポート
  • —並列処理による高速化
  • —モデルの保存・読み込み機能
  • —時系列データへの対応
  • —カテゴリ変数の自動エンコーディング
  • —インタラクティブなプロット(Plotly)の強化
  • —モデルの解釈性スコアの追加

ライセンス

MIT License