tkbo 生成AI投入用コンテキスト
このファイルは
tkboを使うコード生成のため、マニュアルとAPIリファレンスを1ファイルへ統合したものです。API名・引数は下記APIリファレンスを優先し、存在しないAPIを推測で作らないでください。ソースコードが同時に与えられた場合はソースコードを最優先します。
tkbo マニュアル
1. 役割
tkbo は、離散的な候補点集合から、次に評価する点を選ぶためのベイズ最適化・適応学習パッケージです。回帰器そのものを比較・利用する tkmlr と責務を分け、tkbo は initialize → ask → tell の探索ループを担当します。
内部は次の3層に分かれます。
層 |
責務 |
|---|---|
surrogate |
観測データから候補点の予測平均・標準偏差を返す |
acquisition |
予測平均・標準偏差から候補点のスコアを計算する |
backend / optimizer |
候補集合、観測済み点、 |
2. 推奨import
from tkbo import create_optimizer
独自バックエンド等を登録するときだけ、次を追加します。
from tkbo import register_backend, register_surrogate, register_acquisition
3. 最小例
import numpy as np
from tkbo import create_optimizer
X = np.linspace(0.0, 10.0, 101).reshape(-1, 1)
y = np.full(len(X), np.nan)
initial = np.array([0, 30, 80])
y[initial] = np.sin(X[initial, 0])
optimizer = create_optimizer(
model="sklearn_gpr",
acquisition="ei",
surrogate__alpha=1.0e-8,
surrogate__n_restarts_optimizer=10,
)
optimizer.initialize(X, y=y)
suggestion = optimizer.ask(n_points=1)
index = int(suggestion.indices[0])
value = float(np.sin(X[index, 0])) # 実際には実験・計算を実行
optimizer.tell(index, value)
y を候補数と同じ長さにし、未観測点を np.nan とする形式が最も単純です。
4. バックエンド
|
意味 |
|---|---|
|
|
|
|
|
surrogate と acquisition を明示指定 |
|
PHYSBO native の離散探索 |
|
未観測候補からランダム選択 |
|
元の順序で未観測候補を返す |
model="sklearn_gpr" と model="physbo_gp" は、内部で backend="custom" に変換されます。
5. acquisition関数
名前 |
クラス |
主なパラメータ |
用途 |
|---|---|---|---|
|
|
|
改善量と不確かさの両方を考慮 |
|
|
|
改善確率を最大化 |
|
|
|
平均と不確かさの加重和 |
|
|
|
最小化向けの下側信頼限界 |
|
|
|
不確かさと平均勾配を使う探索heuristic |
|
|
なし |
|
stein は厳密なSVGDではなく、有限差分した予測平均の勾配を使う実務的な探索スコアです。
6. データ契約
X_candidates: shape(n_candidates, n_features)の数値配列。1次元配列は(n, 1)に変換されます。y: 候補数と同じ長さで、未観測をNaNにするか、observed_indicesと同じ長さにします。observed_mask: 候補数と同じ長さのbool配列。ask()の戻り値:BOResult(indices, scores, X)。tell(indices, y_new): 候補インデックスと新しい目的値を登録します。maximize=False: 最小化問題として扱います。
観測点が1点もない状態では、CustomOptimizer.ask() は未観測点を先頭から返し、予測平均は NaN、標準偏差は inf になります。初期点をランダムにしたい場合は random backendを使うか、初期観測を明示してください。
7. パラメータの渡し方
create_optimizer() では、surrogate用とacquisition用のパラメータを接頭辞で分離します。
optimizer = create_optimizer(
model="sklearn_gpr",
acquisition="ucb",
maximize=True,
surrogate__alpha=1.0e-8,
surrogate__n_restarts_optimizer=20,
acquisition__kappa=2.5,
)
接頭辞なしの引数はoptimizer backendへ渡されます。
8. 独自acquisitionの登録
import numpy as np
from tkbo.base import BaseAcquisition
from tkbo import register_acquisition
class MeanPlusUncertainty(BaseAcquisition):
name = "mean_plus_uncertainty"
def __init__(self, weight=2.0):
self.weight = float(weight)
def __call__(self, X, mean, std, y_observed=None,
observed_mask=None, maximize=True, **kwargs):
mean = np.asarray(mean, dtype=float)
std = np.asarray(std, dtype=float)
signed_mean = mean if maximize else -mean
return signed_mean + self.weight * std
register_acquisition("mean_plus_uncertainty", MeanPlusUncertainty)
9. CLI
python -m tkbo.cli \
--mode ask \
--infile data.xlsx \
--target "max:y" \
--features x1,x2 \
--model sklearn_gpr \
--acquisition ei
CLIはpandasでCSV/Excelを読み、候補・予測・提案フラグを付加した表を出力します。正確なオプションは python -m tkbo.cli --help で確認してください。
10. 依存関係
必須コア:
numpyanalytic acquisition:
scipysklearn_gpr:scikit-learnphysbo/physbo_gp:physboCLI表入出力:
pandas, Excelではopenpyxl
11. 生成AI向けコード生成ルール
通常は
create_optimizer()を使い、backendクラスを直接生成しない。離散候補集合を必ず先に用意し、
initialize()を1回呼ぶ。未観測目的値は
NaNとし、0や空文字で代用しない。ask()が返すのは候補のインデックスであり、目的値ではない。実験・計算後に同じインデックスを
tell()へ返す。surrogateパラメータは
surrogate__、acquisitionパラメータはacquisition__を付ける。連続変数最適化、制約最適化、多目的Pareto最適化を、このAPIだけで実装済みと仮定しない。
PHYSBO固有スコアとtkbo側acquisitionを混同しない。独自acquisitionには
model="physbo_gp"またはmodel="sklearn_gpr"を使う。
tkbo APIリファレンス
対象ソース:
tklib2.zip(解析日: 2026-08-03)。この文書はソースコードを静的解析して生成しています。
APIの読み方
パッケージ公開APIは、原則としてトップレベルの
__all__に含まれる名前です。モジュールAPIには、公開名(先頭が
_でない関数・クラス・メソッド)を列挙しています。docstringがないAPIでは、シグネチャとソースパスを一次情報として扱ってください。
生成AIは、この文書に存在しない引数・戻り値・メソッドを推測で追加しないでください。
パッケージ公開API
from tkbo import (
create_optimizer,
register_backend,
register_acquisition,
register_surrogate,
)
名前 |
推奨用途 |
|---|---|
|
トップレベルから安定してimportできる公開API |
|
トップレベルから安定してimportできる公開API |
|
トップレベルから安定してimportできる公開API |
|
トップレベルから安定してimportできる公開API |
モジュール一覧
モジュール |
ソース |
関数 |
クラス |
|---|---|---|---|
|
|
0 |
0 |
|
|
0 |
0 |
|
|
0 |
4 |
|
|
0 |
1 |
|
|
0 |
1 |
|
|
0 |
0 |
|
|
0 |
1 |
|
|
0 |
1 |
|
|
0 |
2 |
|
|
4 |
4 |
|
|
3 |
0 |
|
|
3 |
0 |
|
|
3 |
0 |
|
|
6 |
0 |
|
|
0 |
0 |
|
|
0 |
1 |
|
|
0 |
1 |
tkbo
ソース: tkbo/__init__.py
tkbo: lightweight Bayesian/adaptive optimization helpers.
Design goals
Discrete candidate optimization for experimental design.
Backend switching by
model/backendparameter.PHYSBO can be used in two ways:
PHYSBO native backend: uses PHYSBO's own bayes_search (EI/PI/TS).
Custom backend with PhysBOSurrogate: uses PHYSBO posterior mean/std and tkbo-side acquisition functions.
sklearn GaussianProcessRegressor backend is available for flexible kernels and custom acquisition functions.
このモジュールには静的解析で検出された公開関数・クラス・定数はありません。
tkbo.acquisitions
ソース: tkbo/acquisitions/__init__.py
このモジュールには静的解析で検出された公開関数・クラス・定数はありません。
tkbo.acquisitions.analytic
ソース: tkbo/acquisitions/analytic.py
class ExpectedImprovement — bases: BaseAcquisition
Analytic EI for independent posterior mean/std.
コンストラクタ
ExpectedImprovement(xi: float = 0.0)
クラス定数
名前 |
値 |
|---|---|
|
|
class ProbabilityImprovement — bases: BaseAcquisition
ソース内docstringはありません。シグネチャと実装を参照してください。
コンストラクタ
ProbabilityImprovement(xi: float = 0.0)
クラス定数
名前 |
値 |
|---|---|
|
|
class UpperConfidenceBound — bases: BaseAcquisition
ソース内docstringはありません。シグネチャと実装を参照してください。
コンストラクタ
UpperConfidenceBound(kappa: float = 2.0)
クラス定数
名前 |
値 |
|---|---|
|
|
class LowerConfidenceBound — bases: BaseAcquisition
LCB score converted so larger is better.
コンストラクタ
LowerConfidenceBound(kappa: float = 2.0)
クラス定数
名前 |
値 |
|---|---|
|
|
tkbo.acquisitions.entropy
ソース: tkbo/acquisitions/entropy.py
class EntropySearchLite — bases: BaseAcquisition
Simple uncertainty/entropy score for Gaussian marginal posterior.
For a Gaussian marginal, entropy is proportional to log(std).
クラス定数
名前 |
値 |
|---|---|
|
|
tkbo.acquisitions.stein
ソース: tkbo/acquisitions/stein.py
class SteinLiteAcquisition — bases: BaseAcquisition
Practical Stein-like exploration score.
This is not a strict SVGD implementation. It is an extensible heuristic:
score = std_weight * std + grad_weight * std * ||grad mean||
The gradient is evaluated by finite difference using surrogate.predict().
This class expects model to be passed in kwargs by CustomOptimizer.
コンストラクタ
SteinLiteAcquisition(eps: float = 1e-05, std_weight: float = 1.0, grad_weight: float = 1.0)
クラス定数
名前 |
値 |
|---|---|
|
|
tkbo.backends
ソース: tkbo/backends/__init__.py
このモジュールには静的解析で検出された公開関数・クラス・定数はありません。
tkbo.backends.custom_backend
ソース: tkbo/backends/custom_backend.py
class CustomOptimizer — bases: BaseOptimizer
Discrete BO optimizer with pluggable surrogate and acquisition.
This is the main extension point for custom scores such as Stein-lite.
コンストラクタ
CustomOptimizer(surrogate: BaseSurrogate, acquisition: BaseAcquisition, maximize: bool = True, refit_each_tell: bool = True)
メソッド/プロパティ
method CustomOptimizer.initialize
def initialize(self, X_candidates, y: Optional[Sequence[float]] = None, observed_mask: Optional[Sequence[bool]] = None, observed_indices: Optional[Sequence[int]] = None)
ソース内docstringはありません。シグネチャと実装を参照してください。
property CustomOptimizer.observed_indices
def observed_indices(self) -> np.ndarray
ソース内docstringはありません。シグネチャと実装を参照してください。
property CustomOptimizer.y_observed
def y_observed(self) -> np.ndarray
ソース内docstringはありません。シグネチャと実装を参照してください。
method CustomOptimizer.predict
def predict(self, X = None, return_std: bool = True)
ソース内docstringはありません。シグネチャと実装を参照してください。
method CustomOptimizer.acquisition
def acquisition(self, X = None)
ソース内docstringはありません。シグネチャと実装を参照してください。
method CustomOptimizer.ask
def ask(self, n_points: int = 1) -> BOResult
ソース内docstringはありません。シグネチャと実装を参照してください。
method CustomOptimizer.tell
def tell(self, indices, y_new)
ソース内docstringはありません。シグネチャと実装を参照してください。
tkbo.backends.physbo_backend
ソース: tkbo/backends/physbo_backend.py
class PhysBONativeOptimizer — bases: BaseOptimizer
PHYSBO-native discrete optimizer.
Uses PHYSBO's own bayes_search and score modes (typically EI/PI/TS). For arbitrary custom scores, use CustomOptimizer with PhysBOSurrogate or SklearnGPRSurrogate instead.
コンストラクタ
PhysBONativeOptimizer(score_mode: str = 'EI', num_rand_basis: int = 200, interval: int = 0, random_seed: int | None = None, maximize: bool = True)
メソッド/プロパティ
method PhysBONativeOptimizer.initialize
def initialize(self, X_candidates, y: Optional[Sequence[float]] = None, observed_mask: Optional[Sequence[bool]] = None, observed_indices: Optional[Sequence[int]] = None)
ソース内docstringはありません。シグネチャと実装を参照してください。
method PhysBONativeOptimizer.ask
def ask(self, n_points: int = 1) -> BOResult
ソース内docstringはありません。シグネチャと実装を参照してください。
method PhysBONativeOptimizer.tell
def tell(self, indices, y_new)
ソース内docstringはありません。シグネチャと実装を参照してください。
method PhysBONativeOptimizer.predict
def predict(self, X = None, return_std: bool = True)
ソース内docstringはありません。シグネチャと実装を参照してください。
tkbo.backends.simple
ソース: tkbo/backends/simple.py
class RandomOptimizer — bases: BaseOptimizer
ソース内docstringはありません。シグネチャと実装を参照してください。
コンストラクタ
RandomOptimizer(random_seed: int | None = None)
メソッド/プロパティ
method RandomOptimizer.initialize
def initialize(self, X_candidates, y: Optional[Sequence[float]] = None, observed_mask = None, observed_indices = None)
ソース内docstringはありません。シグネチャと実装を参照してください。
method RandomOptimizer.ask
def ask(self, n_points: int = 1)
ソース内docstringはありません。シグネチャと実装を参照してください。
method RandomOptimizer.tell
def tell(self, indices, y_new)
ソース内docstringはありません。シグネチャと実装を参照してください。
method RandomOptimizer.predict
def predict(self, X = None, return_std: bool = True)
ソース内docstringはありません。シグネチャと実装を参照してください。
class GridOptimizer — bases: BaseOptimizer
Sequentially returns unobserved candidates in their original order.
メソッド/プロパティ
method GridOptimizer.initialize
def initialize(self, X_candidates, y: Optional[Sequence[float]] = None, observed_mask = None, observed_indices = None)
ソース内docstringはありません。シグネチャと実装を参照してください。
method GridOptimizer.ask
def ask(self, n_points: int = 1)
ソース内docstringはありません。シグネチャと実装を参照してください。
method GridOptimizer.tell
def tell(self, indices, y_new)
ソース内docstringはありません。シグネチャと実装を参照してください。
method GridOptimizer.predict
def predict(self, X = None, return_std: bool = True)
ソース内docstringはありません。シグネチャと実装を参照してください。
tkbo.base
ソース: tkbo/base.py
class BOResult
Result returned by ask().
データクラス相当の初期化フィールド
BOResult(indices: np.ndarray, scores: Optional[np.ndarray] = None, X: Optional[np.ndarray] = None)
フィールド
名前 |
型 |
既定値 |
|---|---|---|
|
|
|
|
|
|
|
|
|
class BaseSurrogate
Base class for surrogate models.
Surrogates provide posterior mean/std. They do not decide the next point.
データクラス相当の初期化フィールド
BaseSurrogate(supports_std: bool = False)
フィールド
名前 |
型 |
既定値 |
|---|---|---|
|
|
|
メソッド/プロパティ
method BaseSurrogate.fit
def fit(self, X: np.ndarray, y: np.ndarray) -> 'BaseSurrogate'
ソース内docstringはありません。シグネチャと実装を参照してください。
method BaseSurrogate.predict
def predict(self, X: np.ndarray, return_std: bool = False)
ソース内docstringはありません。シグネチャと実装を参照してください。
method BaseSurrogate.get_params
def get_params(self, deep: bool = True) -> dict[str, Any]
ソース内docstringはありません。シグネチャと実装を参照してください。
method BaseSurrogate.set_params
def set_params(self, **params: Any) -> 'BaseSurrogate'
ソース内docstringはありません。シグネチャと実装を参照してください。
class BaseAcquisition
Base class for acquisition functions.
データクラス相当の初期化フィールド
BaseAcquisition(name: str = 'base')
フィールド
名前 |
型 |
既定値 |
|---|---|---|
|
|
|
class BaseOptimizer
Base ask/tell optimizer for discrete candidate sets.
メソッド/プロパティ
method BaseOptimizer.initialize
def initialize(self, X_candidates: np.ndarray, y: Optional[Sequence[float]] = None, observed_mask: Optional[Sequence[bool]] = None, observed_indices: Optional[Sequence[int]] = None) -> 'BaseOptimizer'
ソース内docstringはありません。シグネチャと実装を参照してください。
method BaseOptimizer.ask
def ask(self, n_points: int = 1) -> BOResult
ソース内docstringはありません。シグネチャと実装を参照してください。
method BaseOptimizer.tell
def tell(self, indices: Sequence[int] | int, y_new: Sequence[float] | float) -> 'BaseOptimizer'
ソース内docstringはありません。シグネチャと実装を参照してください。
method BaseOptimizer.predict
def predict(self, X: Optional[np.ndarray] = None, return_std: bool = True)
ソース内docstringはありません。シグネチャと実装を参照してください。
function as_2d_array
def as_2d_array(X: Any, name: str = 'X') -> np.ndarray
ソース内docstringはありません。シグネチャと実装を参照してください。
function as_1d_array
def as_1d_array(y: Any, name: str = 'y') -> np.ndarray
ソース内docstringはありません。シグネチャと実装を参照してください。
function make_observed_mask
def make_observed_mask(n: int, y: Optional[Sequence[float]] = None, observed_mask: Optional[Sequence[bool]] = None, observed_indices: Optional[Sequence[int]] = None) -> np.ndarray
ソース内docstringはありません。シグネチャと実装を参照してください。
function top_k_from_score
def top_k_from_score(score: np.ndarray, k: int, observed_mask: Optional[np.ndarray] = None) -> np.ndarray
ソース内docstringはありません。シグネチャと実装を参照してください。
tkbo.cli
ソース: tkbo/cli.py
function build_parser
def build_parser()
ソース内docstringはありません。シグネチャと実装を参照してください。
function run
def run(args)
ソース内docstringはありません。シグネチャと実装を参照してください。
function main
def main()
ソース内docstringはありません。シグネチャと実装を参照してください。
tkbo.data
ソース: tkbo/data.py
function read_table
def read_table(path: str | Path, sheet_name = 0) -> pd.DataFrame
ソース内docstringはありません。シグネチャと実装を参照してください。
function infer_columns
def infer_columns(df: pd.DataFrame, target: str | None = None, features: str | list[str] | None = None)
ソース内docstringはありません。シグネチャと実装を参照してください。
function split_observed_candidates
def split_observed_candidates(df: pd.DataFrame, target: str, features: list[str])
ソース内docstringはありません。シグネチャと実装を参照してください。
tkbo.factory
ソース: tkbo/factory.py
function create_surrogate
def create_surrogate(name: str, **params: Any)
ソース内docstringはありません。シグネチャと実装を参照してください。
function create_acquisition
def create_acquisition(name: str, **params: Any)
ソース内docstringはありません。シグネチャと実装を参照してください。
function create_optimizer
def create_optimizer(model: str = 'custom', backend: str | None = None, surrogate: str = 'sklearn_gpr', acquisition: str = 'ei', **params: Any)
Create optimizer.
Parameters
model, backend:
Backend selector. model is accepted for user-facing CLI compatibility.
Examples: physbo, custom, sklearn_gpr, random, grid.
surrogate:
Surrogate used by custom backend. Examples: sklearn_gpr, physbo_gp.
acquisition:
Acquisition used by custom backend. Examples: ei, pi, ucb, stein.
params:
Passed to backend. For CustomOptimizer, use prefixes:
surrogate__alpha=... and acquisition__kappa=....
tkbo.registry
ソース: tkbo/registry.py
公開定数・モジュール変数
名前 |
型/値 |
|---|---|
|
|
|
|
|
|
function register_backend
def register_backend(name: str, cls: type) -> None
ソース内docstringはありません。シグネチャと実装を参照してください。
function register_surrogate
def register_surrogate(name: str, cls: type) -> None
ソース内docstringはありません。シグネチャと実装を参照してください。
function register_acquisition
def register_acquisition(name: str, cls: type) -> None
ソース内docstringはありません。シグネチャと実装を参照してください。
function get_backend
def get_backend(name: str) -> type
ソース内docstringはありません。シグネチャと実装を参照してください。
function get_surrogate
def get_surrogate(name: str) -> type
ソース内docstringはありません。シグネチャと実装を参照してください。
function get_acquisition
def get_acquisition(name: str) -> type
ソース内docstringはありません。シグネチャと実装を参照してください。
tkbo.surrogates
ソース: tkbo/surrogates/__init__.py
このモジュールには静的解析で検出された公開関数・クラス・定数はありません。
tkbo.surrogates.physbo_gp
ソース: tkbo/surrogates/physbo_gp.py
class PhysBOSurrogate — bases: BaseSurrogate
PHYSBO posterior wrapper used as a regression surrogate.
PHYSBO is naturally designed for discrete candidate search. This wrapper builds a PHYSBO policy using the supplied training points as its test_X. In the tkbo CustomOptimizer, fit() is normally called with the observed subset and predict() is evaluated for X_candidates.
Note
PHYSBO may be more robust when X passed to predict() is identical to the candidate set used at policy construction. For flexible arbitrary-X GPR, use SklearnGPRSurrogate or a future BoTorch surrogate.
コンストラクタ
PhysBOSurrogate(num_rand_basis: int = 200, interval: int = 0, score_mode: str = 'EI', random_seed: int | None = None)
クラス定数
名前 |
値 |
|---|---|
|
|
メソッド/プロパティ
method PhysBOSurrogate.fit
def fit(self, X, y)
ソース内docstringはありません。シグネチャと実装を参照してください。
method PhysBOSurrogate.predict
def predict(self, X, return_std: bool = False)
ソース内docstringはありません。シグネチャと実装を参照してください。
method PhysBOSurrogate.acquisition
def acquisition(self, X, mode: str | None = None)
ソース内docstringはありません。シグネチャと実装を参照してください。
method PhysBOSurrogate.get_params
def get_params(self, deep: bool = True) -> dict[str, Any]
ソース内docstringはありません。シグネチャと実装を参照してください。
tkbo.surrogates.sklearn_gpr
ソース: tkbo/surrogates/sklearn_gpr.py
class SklearnGPRSurrogate — bases: BaseSurrogate
sklearn GaussianProcessRegressor wrapper.
Hyperparameters are optimized by maximizing log marginal likelihood during fit(), not only by cross validation.
コンストラクタ
SklearnGPRSurrogate(kernel = None, alpha: float = 1e-10, normalize_y: bool = True, n_restarts_optimizer: int = 10, random_state: int | None = None, length_scale: float = 1.0, noise_level: float | None = None)
クラス定数
名前 |
値 |
|---|---|
|
|
メソッド/プロパティ
method SklearnGPRSurrogate.fit
def fit(self, X, y)
ソース内docstringはありません。シグネチャと実装を参照してください。
method SklearnGPRSurrogate.predict
def predict(self, X, return_std: bool = False)
ソース内docstringはありません。シグネチャと実装を参照してください。
method SklearnGPRSurrogate.get_params
def get_params(self, deep: bool = True) -> dict[str, Any]
ソース内docstringはありません。シグネチャと実装を参照してください。