1. optimize_peakfit とは
optimize_peakfit は、 パラメータ数が事前に決まらない最適化問題 を対象としたプログラムです。
典型例として、
- XRD / XRR / Raman / 光学スペクトルのピーク分解
- 多峰性を持つ信号の分解・定量化
- バックグラウンドと信号が混在したデータ解析
が挙げられます。
この種の問題では、 「モデル構造そのものを最適化する必要がある」 という点が、optimize_mup との決定的な違いです。
2. なぜ可変パラメータ数が必要か
ピークフィッティングでは、次の問いが常に存在します。
- ピークはいくつ存在するのか
- どこまでがノイズで、どこからが信号か
- 弱いピークを含めるべきか
これらを事前に決め打ちすることはできません。
optimize_peakfit は、
- ピーク数の探索
- ピーク位置・幅・強度の同時最適化
を、同一フレームワーク内で扱うために設計されています。
3. 内部構造と使用ライブラリ
optimize_peakfit は、以下の構成で実装されています。
- optimize_peakfit.py:アプリケーション層
- optimize_peakfit_mf.py:可変次元対応 mf
- peakfit.py:モデル定義(ピーク関数群)
ピーク関数(Gaussian / Lorentzian 等)は model 側に閉じており、 最適化コードはピークの数を直接扱いません。
4. 解析フローの全体像
optimize_peakfit では、解析を次の段階に分けて進めます。
- データの可視化(plot)
- ピーク探索(search)
- 初期モデル確認(sim)
- 線形パラメータ最適化(lfit)
- 非線形最適化(fit)
- 誤差評価(scan)
この段階的設計により、 「自動化しすぎない解析」 が可能になります。
5. ピーク探索(search モード)
search モードでは、
- 平滑化
- 微分
- 閾値判定
を用いて、ピーク候補を自動検出します。
この結果として、
- ピーク数
- 初期位置
- 初期幅
が決定され、可変長パラメータが生成されます。
この段階の結果は仮説に過ぎません。
6. 線形+非線形ハイブリッド最適化
optimize_peakfit では、
- ピーク強度・背景:線形
- ピーク位置・幅:非線形
として扱います。
この分離により、
- 計算の安定性向上
- 探索空間の縮小
- 過剰フィットの抑制
が実現されます。
7. 最適化アルゴリズムの選択
可変次元問題では、 局所解・多峰性が特に問題になります。
- 初期探索:GA / Swarm
- 安定化:SIMPLEX
- 微調整:Nelder–Mead
optimize_peakfit は、 これらを同一の操作体系で切り替え可能です。
8. 誤差評価とモデル妥当性
ピークフィッティングでは、
- ピーク数の不確定性
- 強い相関
- 非対称誤差
が必ず存在します。
optimize_peakfit では、 尤度スキャンを用いることで、
- 各ピーク位置の不確定性
- 弱いピークの信頼性
を視覚的に評価できます。
9. optimize_mup / optimize_ATLAS との違い
| 項目 | optimize_peakfit | optimize_mup | optimize_ATLAS |
|---|---|---|---|
| パラメータ数 | 可変 | 固定 | 固定 |
| モデル構造 | データ駆動 | 物理モデル | 物理モデル(外部) |
| 主用途 | スペクトル分解 | 物性同定 | TCAD 同定 |
10. まとめ
optimize_peakfit は、
- モデル構造が不確定
- ピーク数を決め打ちできない
- 自動化と人間判断を両立したい
という解析に最適です。
次のページでは、 外部計算エンジンを評価関数とする optimize_ATLAS について解説します。