HN 日本語サマリー

← 一覧へ戻る
AI・機械学習

Pure-Pythonシンボリック回帰が8つのデータポイントからケプラーの法則を再発見

Pure-Python symbolic regression that rediscovered Kepler's law from 8 data point (github.com)

25 pointsby sade_9511 コメント

要約

GP-ELITEは、実験データから解釈可能な法則を発見するためのPure-Python製シンボリック回帰ライブラリです。ニューラルネットワークのようなブラックボックスではなく、変数とターゲットの関係を示す数式を生成します。特に小規模な実験データセットに適しており、ケプラーの第三法則をわずか8つのデータポイントから数秒で再発見した例も紹介されています。

全文翻訳

GP_ELITE 遺伝子プログラミングによるシンボリック回帰 — 実験データから解釈可能な法則を発見します。フランス語版 GP_ELITE は、ブラックボックスではなく、変数とターゲットを結びつける数学的公式を探索します。これは、小規模な実験データセット(変数≤10、データ点100〜5000)で、関係性を理解したい場合(劣化法則、センサー校正、工学相関、用量反応曲線、物理法則)に最適です。Pure Python / NumPy — Julia、コンパイル、GPUは不要です。pip install で準備完了です。8つの惑星の距離と公転周期のみを与えると、GP_ELITEは数秒でケプラーの第三法則(T = a·√a = a^1.5)を再発見しました — examples/kepler_demo.py を参照してください。from gp_elite import symbolic_regression result = symbolic_regression(X, y, feature_names="cycle", "temperature", "current") print(result.expression) # capacity_SOH = 0.913 - 0.352·tanh(...) print(result.r2_validation) # 0.996 (学習中に一度も見ていないデータでの結果) 0.2.0の新機能 Levenberg–Marquardt定数フィッティング(デフォルト):定数が機械精度に達します — クーロンの法則 q1·q2/(4πεr²) が正確に復元されました(1−R² ≈ 8e-32)。定数が多い問題では6〜14倍高速化。マルチリスタート信頼性(restarts=N):独立した実行は、1つの決定論的なホールドアウトセットを共有し、それらの候補アーカイブはマージされ、1つのグローバル選択が行われます。パレートフロント出力(result.pareto):複雑さ↔精度の完全な階段状表示、各エントリは独自の.predictを持ちます。予測/外挿モード(extrapolate_feature=, extrapolate_direction=):ドメイン外のダイバージェンスプローブ、線形安全フロア、フロンティアベースの選択。インタラクティブメニューのモード7としても利用可能です。再現性:プロセス内ではシードごとに同一の結果が得られます。呼び出し間では、PYTHONHASHSEED=0 で実行してください。 GP_ELITEを選ぶ理由? GP_ELITE ニューラルネットワーク PySR(最先端) 読みやすい公式を出力 ブラックボックス 読みやすい公式 インストール pip install(Pure Python) 重い、Juliaが必要 過学習ガード 組み込み(ホールドアウト) 自分で実装 自分で実装 変数選択 重要度レポート 部分的なものはなし GP_ELITEのニッチ:参入障壁ゼロ。ラボエンジニア、学生、技術者がCSVファイルを示し、開発者になることなく、検証済みの法則を得ることができます。 インストール pip install gp-elite # PyPIから # または、ソースから: git clone https://github.com/ariel95500-create/gp-elite cd gp-elite && pip install -e . 依存関係:numpy, pandas, scikit-learn。 使用方法 1行で、自分のデータに対して(コンソールUI) gp-elite モード6(汎用CSV)を選択し、ファイルを指定して、デフォルト設定を維持します。GP_ELITEは列を検出し、検証セットをホールドアウトし、進化させ、発見された法則とその汎化レポートを出力します。 プログラムで(ノートブック、パイプライン) import numpy as np from gp_elite import symbolic_regression X = np.random.uniform(1, 5, (200, 2)) y = 2.0 + 3.0 * np.sqrt(X[:, 0]) - 0.5 * X[:, 1] result = symbolic_regression( X, y, feature_names=["a", "b"], operators="physical", # 'physical' | 'trig' | 'full' | 'poly' generations=60, speed="fast", # 'ultrafast' | 'fast' | 'normal' ) print(result.expression) # 例: 2.0 + 3.0·sqrt(a) - 0.5·b print(result.r2_validation) # ホールドアウトセットでの品質 print(result.size) # ノード数(可読性) 🛡️ ロバスト回帰(外れ値に強いカスタム損失) 現実世界のデータは汚れています。少数の外れ値が通常の最小二乗法フィットを真の関係から大きく引き離すことがあります。GP_ELITEは、データのかなりの部分が破損していても真の法則をフィットさせる、ワンタッチのロバストモードを提供します。 from gp_elite import symbolic_regression # X, y : あなたの(汚れている可能性のある)データ result = symbolic_regression(X, y, feature_names=["x"], robust=True) print(result.expression) 内部では、robust=True は目的関数をHuber損失に切り替え、最終的な係数をIRLS(Iteratively Reweighted Least Squares)手順で再スケーリングするため、フィットは少数の極端な点ではなく、データの大部分によって決定されます。コンパクトで読みやすい公式のままです。 測定された挙動(y = 2x + 1 を復元 — クリーンな点での真の法則に対するRMSE、低いほど良い): 外れ値 MSE(デフォルト) robust=True 0 % 0.063 0.063 10 % 1.398 1.374 20 % 1.925 0.543 クリーンなデータでは、通常のMSEがわずかに優位ですが、ロバスト性は無料ではありません。10〜20%の外れ値がある場合、ロバストモードは真の法則を復元しますが、通常のMSEは脱線します。データに外れ値が含まれている疑いがある場合は、robust=True を使用してください。完全な再現可能なベンチマークについては、examples/robust_regression.py を参照してください。 完全な例:バッテリー劣化(NASAデータ) python examples/battery_soh.py 168回の実際の充電サイクルから、GP_ELITEは状態健康度(SOH)の法則を発見します:capacity_SOH ≈ 0.913 − 0.352 · tanh( cycle^((temperature/cycle)^0.485) ) R²検証 = 0.996(未見のサイクルに対して) 12ノード サイクル数による飽和劣化で、温度によって変調される — 物理的に妥当であり、未見のデータで検証されています。 GP_ELITEは何が得意で、何が苦手か? 得意なこと:乗法的または指数的構造を持つ物理的/工学的法則、適度なサイズのノイズのある実験データ、解釈可能性が最も重要な問題。凍結されたFeynmanベンチマーク(15の物理方程式、PYTHONHASHSEED=0、restarts=4)で:10/15で機械精度(1−R² < 1e-9)での完全なシンボリック復元(67%)、14/15で1e-3以内(93%)。同一のデータ/分割でのgplearnとの直接対決(gplearnには十分な予算):67%対40%の完全一致 — GP_ELITEが9つの式で先行、5つで引き分け、1つで後れ。実データ予測(NASAバッテリーSOH、未見サイクルでの真の外挿):線形回帰の+0.34に対して中央値R² +0.52、ダイバージェントモデルはゼロ。 再現:PYTHONHASHSEED=0 python benchmarks/feynman_bench.py 0 15 および benchmarks/duel.py。 苦手なこと:カオスシーケンス(例:Collatzフライトタイム — 本質的にランダムな成分)、20以上の変数(探索空間が爆発する)、生の精度が解釈可能性を上回る大規模データセット(アンサンブルモデルがそこで支配的)。 技術的特徴 Levenberg–Marquardt定数最適化(v0.2):閉形式品質の定数、決定論的、LM/Adam切り替え可能 マルチリスタート+マージされた候補アーカイブ(v0.2):シード分散を信頼性に変換 パレートフロントAPI(v0.2):非支配的な複雑さ/精度の階段表示 保護された外挿/予測モード(v0.2):ドメイン外プローブ、線形フロア、フロンティア選択 合成モチーフシーディング(v0.2):ネスト構造のためのピタゴラス、逆数和、ガウステンプレート 非対称アイランドモデル(エクスプローラー/クリーナー/スティグメルギック)と周期的な移行 線形スケーリング(Keijzer 2003):エンジンは形状を検索します。スケールとオフセット係数は閉形式で解決されます ε-lexicase選択(La Cava 2016)で行動多様性を維持 アイランド並列処理(マルチコア) — 4コアで測定して約×3 ホールドアウト検証+パシモニアスチャンピオン選択(R²許容誤差):組み込み過学習ガード 乗法的構造を維持するシフトフリー正規化(x·yはクリーンな積のまま) 転送可能なスティグメルギックメモリ(グラムエクスポート/インポート) テスト pip install pytest pytest -q ライセンス MIT — LICENSEを参照してください。著作権表示を保持したまま、商用利用を含め、自由に使用できます。 GP_ELITEの引用 GP_ELITEが学術研究で役立つ場合は、CITATION.cffを参照してください。