tkbo 生成AI投入用コンテキスト

このファイルは tkbo を使うコード生成のため、マニュアルとAPIリファレンスを1ファイルへ統合したものです。API名・引数は下記APIリファレンスを優先し、存在しないAPIを推測で作らないでください。ソースコードが同時に与えられた場合はソースコードを最優先します。


tkbo マニュアル

1. 役割

tkbo は、離散的な候補点集合から、次に評価する点を選ぶためのベイズ最適化・適応学習パッケージです。回帰器そのものを比較・利用する tkmlr と責務を分け、tkboinitialize ask tell の探索ループを担当します。

内部は次の3層に分かれます。

責務

surrogate

観測データから候補点の予測平均・標準偏差を返す

acquisition

予測平均・標準偏差から候補点のスコアを計算する

backend / optimizer

候補集合、観測済み点、ask/tell ループを管理する

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. バックエンド

model / backend

意味

sklearn_gpr

CustomOptimizer + sklearn GPR surrogate

physbo_gp

CustomOptimizer + PHYSBO surrogate

custom

surrogate と acquisition を明示指定

physbo

PHYSBO native の離散探索

random

未観測候補からランダム選択

grid

元の順序で未観測候補を返す

model="sklearn_gpr"model="physbo_gp" は、内部で backend="custom" に変換されます。

5. acquisition関数

名前

クラス

主なパラメータ

用途

ei

ExpectedImprovement

xi

改善量と不確かさの両方を考慮

pi

ProbabilityImprovement

xi

改善確率を最大化

ucb

UpperConfidenceBound

kappa

平均と不確かさの加重和

lcb

LowerConfidenceBound

kappa

最小化向けの下側信頼限界

stein

SteinLiteAcquisition

eps, std_weight, grad_weight

不確かさと平均勾配を使う探索heuristic

entropy

EntropySearchLite

なし

log(std) による不確かさ探索

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. 依存関係

  • 必須コア: numpy

  • analytic acquisition: scipy

  • sklearn_gpr: scikit-learn

  • physbo / physbo_gp: physbo

  • CLI表入出力: pandas, Excelでは openpyxl

11. 生成AI向けコード生成ルール

  1. 通常は create_optimizer() を使い、backendクラスを直接生成しない。

  2. 離散候補集合を必ず先に用意し、initialize() を1回呼ぶ。

  3. 未観測目的値は NaN とし、0や空文字で代用しない。

  4. ask() が返すのは候補のインデックスであり、目的値ではない。

  5. 実験・計算後に同じインデックスを tell() へ返す。

  6. surrogateパラメータは surrogate__、acquisitionパラメータは acquisition__ を付ける。

  7. 連続変数最適化、制約最適化、多目的Pareto最適化を、このAPIだけで実装済みと仮定しない。

  8. 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,
)

名前

推奨用途

create_optimizer

トップレベルから安定してimportできる公開API

register_backend

トップレベルから安定してimportできる公開API

register_acquisition

トップレベルから安定してimportできる公開API

register_surrogate

トップレベルから安定してimportできる公開API

モジュール一覧

モジュール

ソース

関数

クラス

tkbo

tkbo/__init__.py

0

0

tkbo.acquisitions

tkbo/acquisitions/__init__.py

0

0

tkbo.acquisitions.analytic

tkbo/acquisitions/analytic.py

0

4

tkbo.acquisitions.entropy

tkbo/acquisitions/entropy.py

0

1

tkbo.acquisitions.stein

tkbo/acquisitions/stein.py

0

1

tkbo.backends

tkbo/backends/__init__.py

0

0

tkbo.backends.custom_backend

tkbo/backends/custom_backend.py

0

1

tkbo.backends.physbo_backend

tkbo/backends/physbo_backend.py

0

1

tkbo.backends.simple

tkbo/backends/simple.py

0

2

tkbo.base

tkbo/base.py

4

4

tkbo.cli

tkbo/cli.py

3

0

tkbo.data

tkbo/data.py

3

0

tkbo.factory

tkbo/factory.py

3

0

tkbo.registry

tkbo/registry.py

6

0

tkbo.surrogates

tkbo/surrogates/__init__.py

0

0

tkbo.surrogates.physbo_gp

tkbo/surrogates/physbo_gp.py

0

1

tkbo.surrogates.sklearn_gpr

tkbo/surrogates/sklearn_gpr.py

0

1

tkbo

ソース: tkbo/__init__.py

tkbo: lightweight Bayesian/adaptive optimization helpers.

Design goals

  • Discrete candidate optimization for experimental design.

  • Backend switching by model / backend parameter.

  • PHYSBO can be used in two ways:

    1. PHYSBO native backend: uses PHYSBO's own bayes_search (EI/PI/TS).

    2. 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)

クラス定数

名前

name

'ei'

class ProbabilityImprovement — bases: BaseAcquisition

ソース内docstringはありません。シグネチャと実装を参照してください。

コンストラクタ

ProbabilityImprovement(xi: float = 0.0)

クラス定数

名前

name

'pi'

class UpperConfidenceBound — bases: BaseAcquisition

ソース内docstringはありません。シグネチャと実装を参照してください。

コンストラクタ

UpperConfidenceBound(kappa: float = 2.0)

クラス定数

名前

name

'ucb'

class LowerConfidenceBound — bases: BaseAcquisition

LCB score converted so larger is better.

コンストラクタ

LowerConfidenceBound(kappa: float = 2.0)

クラス定数

名前

name

'lcb'

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).

クラス定数

名前

name

'entropy'

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)

クラス定数

名前

name

'stein'

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)

フィールド

名前

既定値

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)

フィールド

名前

既定値

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')

フィールド

名前

既定値

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

公開定数・モジュール変数

名前

型/値

BACKENDS

dict[str, type] = {}

SURROGATES

dict[str, type] = {}

ACQUISITIONS

dict[str, type] = {}

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)

クラス定数

名前

supports_std

True

メソッド/プロパティ

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)

クラス定数

名前

supports_std

True

メソッド/プロパティ

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はありません。シグネチャと実装を参照してください。