Rule API¶
Experimental
mars.rule 的 DSL、筛选策略、结果字段和 artifact 仍可能在 0.0.x 调整。请从 mars.rule
导入这些名称,根 mars 不提供这些导出。在受控流程中使用时,固定精确版本,并对 JSON 和 SQL 结果增加契约测试。
mars.rule.mine_rules ¶
mine_rules(
train_df: FrameLike,
*,
target: str,
validation_df: FrameLike | None = None,
aux_targets: Sequence[str] | None = None,
features: Sequence[str] | None = None,
group_col: str | None = None,
time_col: str | None = None,
time_grain: str | None = None,
amount_col: str | None = None,
customer_col: str | None = None,
seed_rules: (
Sequence[Union[str, MarsRule]] | None
) = None,
spec: MarsRuleMiningSpec | None = None,
generators: Sequence[MarsRuleGenerator] | None = None
) -> MarsRuleMiningResult
生成、评估、筛选并组装可部署规则集。
参数:
| 名称 | 类型 | 描述 | 默认 |
|---|---|---|---|
train_df
|
FrameLike
|
候选生成和训练筛选样本。 |
必需 |
target
|
str
|
主二分类目标列。 |
必需 |
validation_df
|
FrameLike | None
|
独立验证样本。explore 下省略时使用训练表做样本内筛选,并发出警告; production 下必须提供,否则报错。 |
None
|
aux_targets
|
Sequence[str] | None
|
仅参与评估和类型化筛选的辅助目标。 |
None
|
features
|
Sequence[str] | None
|
自动生成使用的数值特征;不传时排除所有数据角色列后推断。 |
None
|
group_col
|
str | None
|
验证样本中已有的业务分组列;提供后优先于 |
None
|
time_col
|
str | None
|
未传 |
None
|
time_grain
|
str | None
|
验证时间切片粒度,支持 |
None
|
amount_col
|
str | None
|
用于规则评估的金额列,默认不计算金额指标。 |
None
|
customer_col
|
str | None
|
用于去重客户指标的客户标识列,默认不计算客户指标。 |
None
|
seed_rules
|
Sequence[Union[str, MarsRule]] | None
|
用户提供的 DSL 规则候选。 |
None
|
spec
|
MarsRuleMiningSpec | None
|
类型化挖掘策略;不传时使用默认高风险策略。 |
None
|
generators
|
Sequence[MarsRuleGenerator] | None
|
自定义生成器;不传时使用组合规则和浅层树,空序列表示只评估 seed rules。 |
None
|
返回:
| 类型 | 描述 |
|---|---|
MarsRuleMiningResult
|
不保存原始 DataFrame 的挖掘结果,包含最终规则、完整候选审计、评估表和实际策略。
没有合法入选规则时返回 |
引发:
| 类型 | 描述 |
|---|---|
TypeError
|
spec、generators 或 seed_rules 未遵循类型化公开契约时抛出。 |
ValueError
|
production 缺少独立验证集或输入配置非法时抛出。 |
mars.rule.MarsRule
dataclass
¶
保存规则表达式、生成来源和稳定标识,不保存样本指标。
参数:
| 名称 | 类型 | 描述 | 默认 |
|---|---|---|---|
expression
|
str
|
Mars Rule DSL 表达式。构造时解析、校验并规范化,用规范文本生成 |
必需 |
source
|
str
|
候选生成来源,默认为 |
'manual'
|
labels
|
tuple[str, ...]
|
调用方附加的稳定标签。 |
()
|
属性:
| 名称 | 类型 | 描述 |
|---|---|---|
rule_id |
str
|
由规范化表达式确定性生成的规则标识。 |
complexity |
int
|
原子条件数量。 |
required_features |
tuple[str, ...]
|
规则引用的输入列。 |
示例:
mars.rule.MarsRuleSet
dataclass
¶
保存有序规则定义、等级归属和部署资格。
参数:
| 名称 | 类型 | 描述 | 默认 |
|---|---|---|---|
rules
|
Sequence[MarsRule]
|
有序规则定义。 |
tuple()
|
grades
|
Mapping[str, Sequence[str]]
|
等级到规则 ID 的映射。 |
dict()
|
metadata
|
Mapping[str, Any]
|
不包含样本指标的 artifact 元数据。 |
dict()
|
qualification
|
('exploratory', 'validated', 'temporally_validated')
|
规则集部署资格;手工构造和 explore 结果默认为 |
"exploratory"
|
validation_summary
|
Mapping[str, Any]
|
资格状态所依据的验证摘要。具有验证资格时必须满足摘要契约; 默认空摘要用于 exploratory 规则集。 |
dict()
|
transform ¶
追加逐规则、总命中数和等级命中数。
参数:
| 名称 | 类型 | 描述 | 默认 |
|---|---|---|---|
df
|
FrameLike
|
待应用规则的数据集。 |
必需 |
返回:
| 类型 | 描述 |
|---|---|
DataFrame | DataFrame
|
保留输入列并追加命中列,返回类型与输入一致。
|
引发:
| 类型 | 描述 |
|---|---|
ValueError
|
输入缺少任一规则引用列时抛出。规则与列类型不兼容时传播 schema 校验异常。 |
from_dict
classmethod
¶
从严格 artifact 恢复规则集。
参数:
| 名称 | 类型 | 描述 | 默认 |
|---|---|---|---|
payload
|
Mapping[str, Any]
|
由 :meth: |
必需 |
返回:
| 类型 | 描述 |
|---|---|
MarsRuleSet
|
完成 ID 和引用校验的规则集。 |
引发:
| 类型 | 描述 |
|---|---|
MarsRuleArtifactError
|
artifact 类型、版本、规则条目、ID 或等级引用非法时抛出。 |
save_json ¶
原子写出规则集 JSON。
参数:
| 名称 | 类型 | 描述 | 默认 |
|---|---|---|---|
path
|
Union[str, Path]
|
输出文件;父目录必须已经存在。 |
必需 |
引发:
| 类型 | 描述 |
|---|---|
FileNotFoundError
|
输出目录不存在时抛出。 |
Exception
|
临时文件写入、同步或原子替换失败时原样抛出。 |
load_json
classmethod
¶
读取并严格校验规则集 JSON。
参数:
| 名称 | 类型 | 描述 | 默认 |
|---|---|---|---|
path
|
Union[str, Path]
|
Mars RuleSet artifact 文件。 |
必需 |
返回:
| 类型 | 描述 |
|---|---|
MarsRuleSet
|
恢复后的规则集。 |
引发:
| 类型 | 描述 |
|---|---|
MarsRuleArtifactError
|
JSON 语法、顶层结构或 artifact 契约非法时抛出。 |
generate_sql ¶
generate_sql(
*,
table_alias: str = "",
include_grade_counts: bool = True,
minimum_qualification: (
Literal["validated", "temporally_validated"] | None
) = "validated",
missing_policy: Literal[
"reject", "normalized_to_null"
] = "reject"
) -> str
生成 ANSI SQL 命中列和汇总列片段。
参数:
| 名称 | 类型 | 描述 | 默认 |
|---|---|---|---|
table_alias
|
str
|
输入表别名;空字符串表示不添加前缀。 |
''
|
include_grade_counts
|
bool
|
是否生成各等级的命中计数列,默认为 |
True
|
minimum_qualification
|
Literal['validated', 'temporally_validated'] | None
|
SQL 导出的最低部署资格,默认要求 |
'validated'
|
missing_policy
|
Literal['reject', 'normalized_to_null']
|
|
'reject'
|
返回:
| 类型 | 描述 |
|---|---|
str
|
可嵌入 |
引发:
| 类型 | 描述 |
|---|---|
MarsRuleDeploymentError
|
资格不足、策略非法或 MISSING 无法安全导出时抛出。 |
mars.rule.MarsRuleMetricCondition
dataclass
¶
定义单个规则评估指标条件。
参数:
| 名称 | 类型 | 描述 | 默认 |
|---|---|---|---|
metric
|
str
|
评估长表中支持的指标列名,例如 |
必需 |
operator
|
('<', '<=', '==', '!=', '>=', '>')
|
比较运算符。 |
"<"
|
value
|
float
|
比较阈值,单位与指标一致。coverage 和事件率使用小数比例,Lift 无量纲。 |
必需 |
mars.rule.MarsRuleFilter
dataclass
¶
定义规则筛选阈值与跨目标、切片通过策略。
参数:
| 名称 | 类型 | 描述 | 默认 |
|---|---|---|---|
conditions
|
tuple[MarsRuleMetricCondition, ...]
|
规则命中行必须同时满足的指标条件;所需指标为 null 时不通过。 |
必需 |
targets
|
"primary"、"all" 或目标列元组
|
参与筛选的目标范围。默认 |
'primary'
|
target_scope
|
('all', 'any')
|
多目标结果的通过方式。默认 |
"all"
|
slice_pass_rate
|
float | None
|
整体通过后,切片还需满足的最小通过比例。默认 |
None
|
mars.rule.MarsRuleMiningSpec
dataclass
¶
规则挖掘的可复用、可序列化策略。
参数:
| 名称 | 类型 | 描述 | 默认 |
|---|---|---|---|
profile
|
('explore', 'production')
|
默认 |
"explore"
|
direction
|
('high_risk', 'low_risk')
|
默认 |
"high_risk"
|
candidate_filter
|
MarsRuleFilter
|
训练集候选筛选规则。 |
_high_candidate_filter()
|
validation_filter
|
MarsRuleFilter
|
验证集最终筛选规则。 |
_high_validation_filter()
|
grade_filters
|
Mapping[str, MarsRuleFilter]
|
规则等级到筛选条件的映射。 |
dict()
|
selection_strategy
|
('ranked', 'cascade')
|
默认 |
"ranked"
|
top_k
|
int
|
最终最多保留的规则数。 |
10
|
max_candidates
|
int
|
合并生成器后允许评估的候选上限。 |
100000
|
iou_threshold
|
float
|
规则命中集合的交并比阈值,默认为 0.3。候选与更高优先级规则的 IoU 大于等于该值时被剔除。 |
0.3
|
batch_size
|
int
|
规则批量评估大小。 |
100
|
iou_batch_size
|
int
|
IoU 掩码处理批次大小。 |
512
|
max_rounds
|
int
|
cascade 最多轮数。 |
10
|
random_state
|
int
|
默认生成器随机种子。 |
42
|
on_generator_error
|
('raise', 'record')
|
默认 |
"raise"
|
confidence_level
|
float
|
Wilson 单侧置信水平,默认为 0.95。production 使用相应的 Lift 置信界 检查筛选条件;高级分析中的 bootstrap 使用单独的双侧区间。 |
0.95
|
max_fdr
|
float
|
production 允许的最大 BH q 值,默认为 0.05; 按相同 dataset、target 和 slice 内的候选检验校正。 |
0.05
|
min_time_slices
|
int
|
获得时间验证资格所需的最少有效切片数。 |
3
|
explore
classmethod
¶
构造允许 in-sample 结果的探索策略。
参数:
| 名称 | 类型 | 描述 | 默认 |
|---|---|---|---|
**overrides
|
Any
|
覆盖默认 dataclass 字段的显式配置。 |
{}
|
返回:
| 类型 | 描述 |
|---|---|
MarsRuleMiningSpec
|
|
production
classmethod
¶
构造强制独立验证和统计门禁的生产策略。
参数:
| 名称 | 类型 | 描述 | 默认 |
|---|---|---|---|
**overrides
|
Any
|
覆盖默认 dataclass 字段的显式配置。 |
{}
|
返回:
| 类型 | 描述 |
|---|---|
MarsRuleMiningSpec
|
|
low_risk
classmethod
¶
构造默认低风险挖掘策略。
参数:
| 名称 | 类型 | 描述 | 默认 |
|---|---|---|---|
**overrides
|
Any
|
覆盖默认 dataclass 字段的显式配置。 |
{}
|
返回:
| 类型 | 描述 |
|---|---|
MarsRuleMiningSpec
|
训练候选 Lift 上限为 0.9、验证 Lift 上限为 0.8 的低风险策略。 |
mars.rule.MarsRuleMiningResult
dataclass
¶
规则挖掘的可审计结构化结果。
参数:
| 名称 | 类型 | 描述 | 默认 |
|---|---|---|---|
status
|
('success', 'no_rules')
|
最终业务状态。没有规则通过筛选时为 |
"success"
|
rule_set
|
MarsRuleSet
|
最终规则定义与资格;能否导出部署 SQL 还取决于资格和缺失值策略。 |
必需 |
candidate_table
|
DataFrame
|
候选来源、淘汰阶段和原因审计表。 |
必需 |
evaluation
|
MarsRuleEvaluation
|
训练与验证整体、切片长表。 |
必需 |
spec
|
MarsRuleMiningSpec
|
完整解析后的挖掘策略。 |
必需 |
metadata
|
Mapping[str, Any]
|
数据角色、验证状态、版本和阶段耗时。 |
dict()
|
analyze ¶
analyze(
df: FrameLike,
*,
target: str | None = None,
amount_col: str | None = None,
customer_col: str | None = None,
max_pairs: int = 5000,
bootstrap_repeats: int = 0,
confidence_level: float | None = None,
random_state: int | None = None
) -> MarsRuleAnalysis
按需计算最终规则的交互和累计贡献。
参数:
| 名称 | 类型 | 描述 | 默认 |
|---|---|---|---|
df
|
FrameLike
|
分析样本;结果对象不会保存该数据。 |
必需 |
target
|
str | None
|
分析目标;不传时使用挖掘主目标。 |
None
|
amount_col
|
str | None
|
金额列;不传时沿用挖掘阶段配置。 |
None
|
customer_col
|
str | None
|
客户列;不传时沿用挖掘阶段配置。 |
None
|
max_pairs
|
int
|
交互分析最大规则对数。 |
5000
|
bootstrap_repeats
|
int
|
最终规则 Lift 重采样次数;默认关闭。 |
0
|
confidence_level
|
float | None
|
bootstrap 区间置信水平;不传时沿用挖掘 spec。 |
None
|
random_state
|
int | None
|
bootstrap 种子;不传时沿用挖掘 spec。 |
None
|
返回:
| 类型 | 描述 |
|---|---|
MarsRuleAnalysis
|
交互、累计表和分析元数据。 |
to_report ¶
to_report(
analysis: MarsRuleAnalysis | None = None,
*,
feature_metadata: FeatureMetadata | None = None,
business_context: dict[str, Any] | None = None
) -> MarsRuleReport
将已有挖掘结果整理为结构化报告。
参数:
| 名称 | 类型 | 描述 | 默认 |
|---|---|---|---|
analysis
|
MarsRuleAnalysis | None
|
已显式计算的高级分析结果;默认不添加交互、累计和 bootstrap 表,
并在 |
None
|
feature_metadata
|
FeatureMetadata | None
|
英文特征 ID 对应的中文名、业务来源、定义和单位。 |
None
|
business_context
|
dict[str, Any] | None
|
标签、样本、币种及发现证据说明;不改变实际计算参数。 |
None
|
返回:
| 类型 | 描述 |
|---|---|
MarsRuleReport
|
满足公共 Report 契约,可查询、保存及导出 HTML 或 Excel 的报告。 本方法只整理已有结果,不重新挖掘、验证或自动执行高级分析。 |
示例:
mars.rule.MarsRuleEvaluation
dataclass
¶
保存一次规则评估的固定长表。
参数:
| 名称 | 类型 | 描述 | 默认 |
|---|---|---|---|
overall_table
|
DataFrame
|
整体评估长表, |
DataFrame()
|
slice_table
|
DataFrame
|
按业务分组或时间切片展开的同结构长表;未请求切片时为空。 |
DataFrame()
|
metadata
|
Mapping[str, Any]
|
数据集角色、目标和列配置等运行元数据。 |
dict()
|
mars.rule.MarsRuleAnalysis
dataclass
¶
保存按需执行的规则高级分析结果。
参数:
| 名称 | 类型 | 描述 | 默认 |
|---|---|---|---|
interaction_table
|
DataFrame
|
两两命中重叠和组合风险表,按需包含金额与客户指标。 |
DataFrame()
|
cumulative_table
|
DataFrame
|
按 RuleSet 顺序累计覆盖与边际贡献表,按需包含金额与客户指标。 |
DataFrame()
|
bootstrap_table
|
DataFrame
|
最终规则的 Lift bootstrap 分位数区间;默认不执行重采样,表为空。 |
DataFrame()
|
metadata
|
Mapping[str, Any]
|
分析目标、字段配置、配对预算和样本量。 |
dict()
|
mars.rule.MarsRuleReport ¶
Bases: _ReportQuery
规则挖掘的结构化报告与显式导出器。
参数:
| 名称 | 类型 | 描述 | 默认 |
|---|---|---|---|
summary_table
|
DataFrame | None
|
挖掘状态、候选数量和验证状态汇总。 |
None
|
detail_tables
|
Mapping[str, DataFrame] | None
|
候选审计、评估、切片和可选高级分析表。 |
None
|
metadata
|
Mapping[str, Any] | None
|
已解析策略、数据角色和运行版本。 |
None
|
caption
|
str
|
Notebook 与文件报告标题。 |
'MARS Rule Mining Report'
|
feature_metadata
|
FeatureMetadata | None
|
英文特征 ID 对应的业务名、来源、定义和单位。 |
None
|
business_context
|
dict[str, Any] | None
|
标签定义、样本范围、币种及证据来源;缺失解释保持 unknown。 |
None
|
属性:
| 名称 | 类型 | 描述 |
|---|---|---|
report_id |
str
|
构造时生成的报告标识,查询、保存和恢复时保持不变。 |
report_type |
str
|
|
format_version |
int
|
公共 |
Notes
Rule 仍为 Experimental。报告只保存已有证据,不重建 RuleSet 或赋予部署权限。
业务元数据、上下文或规则表达式校验失败时抛出 ValueError。
特征查询依据规则成员关系筛选原统计表,每条统计行只返回一次。
features 和 sources 条件必须同时满足,但可以匹配同一规则的不同特征。
sources 指特征元数据中的业务来源;候选生成来源保存在规则表和候选表中。
示例:
describe ¶
show_table ¶
from_benchmark
classmethod
¶
from_benchmark(
benchmark: Union[
FrameLike,
Mapping[str, Any],
Sequence[Mapping[str, Any]],
],
*,
caption: str = "MARS Rule Benchmark Report"
) -> MarsRuleReport
从 benchmark 记录构造可导出的结构化报告。
参数:
| 名称 | 类型 | 描述 | 默认 |
|---|---|---|---|
benchmark
|
Union[FrameLike, Mapping[str, Any], Sequence[Mapping[str, Any]]]
|
单条记录、记录序列或 Pandas/Polars 表。 |
必需 |
caption
|
str
|
报告标题。 |
'MARS Rule Benchmark Report'
|
返回:
| 类型 | 描述 |
|---|---|
MarsRuleReport
|
包含 benchmark 明细和行数汇总的报告。 |
引发:
| 类型 | 描述 |
|---|---|
TypeError
|
benchmark 不是支持的表或记录结构时抛出。 |
示例:
write_excel ¶
write_html ¶
render_html ¶
mars.rule.MarsRuleGenerator ¶
Bases: ABC
规则候选生成器抽象接口。
子类只负责从训练数据生成不含样本指标的 :class:MarsRule。最终方向、筛选和去重由
:func:mars.rule.mine_rules 统一完成。
mars.rule.MarsRuleEvaluator ¶
评估规则命中的样本、金额和客户指标。
接受 Pandas 或 Polars 表,返回固定结构的 Polars 长表。每个目标分别校验标签,
sample_count、事件率和 Lift 只使用该目标已表现样本;total_count 和分布覆盖率
保留全部样本。未定义比率为 null。全未表现切片仍保留分布人数,
状态为 "unobserved",监督指标为空。
示例:
>>> import polars as pl
>>> from mars.rule import MarsRule, MarsRuleEvaluator, MarsRuleSet
>>> frame = pl.DataFrame({"age": [20, 40], "y": [1, 0]})
>>> rules = MarsRuleSet([MarsRule("age < 30")])
>>> result = MarsRuleEvaluator().evaluate(frame, rules, target="y")
>>> result.overall_table.filter(pl.col("group") == "hit")["event_count"][0]
1
evaluate ¶
evaluate(
df: FrameLike,
rule_set: MarsRuleSet,
*,
target: str,
aux_targets: Sequence[str] | None = None,
dataset: str = "evaluation",
group_col: str | None = None,
time_col: str | None = None,
time_grain: str | None = None,
amount_col: str | None = None,
customer_col: str | None = None,
batch_size: int = 100,
direction: RuleDirection = "high_risk",
confidence_level: float = 0.95,
compute_statistics: bool = False
) -> MarsRuleEvaluation
评估规则整体与切片指标。
参数:
| 名称 | 类型 | 描述 | 默认 |
|---|---|---|---|
df
|
FrameLike
|
待评估样本。 |
必需 |
rule_set
|
MarsRuleSet
|
不含样本指标的规则定义。 |
必需 |
target
|
str
|
主二分类目标列,用于评估并写入 |
必需 |
aux_targets
|
Sequence[str] | None
|
额外评估的目标列;每个目标独立排除自己的 null、NaN 标签,默认不添加。 |
None
|
dataset
|
str
|
写入长表 |
'evaluation'
|
group_col
|
str | None
|
已存在的业务分组列。提供后按该列切片,优先于 |
None
|
time_col
|
str | None
|
未传 |
None
|
time_grain
|
str | None
|
|
None
|
amount_col
|
str | None
|
金额列。提供后计算已表现样本中的金额覆盖、事件金额占比和金额 Lift; 省略时相关指标保持 null。 |
None
|
customer_col
|
str | None
|
客户标识列。提供后计算已表现样本中的去重客户指标; 省略时相关指标保持 null。 |
None
|
batch_size
|
int
|
单批物化和聚合的规则数量。 |
100
|
direction
|
RuleDirection
|
单侧超几何检验的方向,默认为 |
'high_risk'
|
confidence_level
|
float
|
Wilson 单侧置信水平。 |
0.95
|
compute_statistics
|
bool
|
是否增加 Wilson 单侧置信界、超几何检验 p 值和 BH q 值,默认关闭。 关闭时保留这些列并填 null;开启时在相同 dataset、target、slice 内校正。 |
False
|
返回:
| 类型 | 描述 |
|---|---|
MarsRuleEvaluation
|
整体表、切片表和运行元数据。每行由 dataset、rule_id、target、slice 和 group 标识;coverage 的分母为相同 dataset、target、slice 的已表现人数。 |
引发:
| 类型 | 描述 |
|---|---|
ValueError
|
缺列、目标非二分类、时间粒度非法或规则引用缺失时抛出。 |
mars.rule.MarsCombinationRuleGenerator ¶
Bases: MarsRuleGenerator
使用分位点生成单变量和受控交叉规则。
参数:
| 名称 | 类型 | 描述 | 默认 |
|---|---|---|---|
n_bins
|
int
|
数值特征的目标分位区间数,默认为 5;重复分位点去重后可能减少。 |
5
|
max_cross_features
|
int
|
单条组合规则最多引用的特征数,默认为 2。两特征生成 AND、OR 组合, 三个及以上特征只生成 AND 组合。 |
2
|
max_candidates
|
int
|
本生成器最多返回的候选数,默认为 100,000;工作流还会应用合并后的总预算。 |
100000
|
random_state
|
int | None
|
宽表预筛抽样种子。 |
None
|
prefilter_single_rules
|
bool
|
是否先按样本内 Lift 排序单变量规则,默认开启。开启后最多使用
|
True
|
feature_prefilter_top_k
|
int
|
宽表统计预筛最多保留的特征数。 |
300
|
feature_prefilter_min_features
|
int
|
触发 :class: |
500
|
feature_prefilter_sample_size
|
int
|
统计预筛最大样本数。 |
100000
|
引发:
| 类型 | 描述 |
|---|---|
ValueError
|
分箱、交叉、候选或特征预筛预算非法时抛出。 |
mars.rule.MarsTreeRuleGenerator ¶
Bases: MarsRuleGenerator
从多棵随机浅层决策树提取叶子路径。
每棵树使用确定性中位数填充值和显式缺失指示器训练;提取路径时将缺失分支还原为
IS MISSING,使训练和后续执行的缺失命中保持一致。
参数:
| 名称 | 类型 | 描述 | 默认 |
|---|---|---|---|
n_trees
|
int
|
训练的浅层树数量,默认为 15。 |
15
|
max_depths
|
Sequence[int] | None
|
每棵树随机选择的最大深度集合;默认使用 |
None
|
feature_fraction
|
float
|
每棵树抽取的原始特征比例,默认为 0.8,至少抽取一个特征。 |
0.8
|
n_jobs
|
int
|
joblib 并行拟合任务数,默认为 |
-1
|
random_state
|
int | None
|
特征抽样、深度选择和树种子的随机种子;默认不固定。 |
None
|
dt_params
|
Dict[str, Any] | None
|
传给 |
None
|
tuning_backend
|
Literal['none', 'optuna']
|
是否在各树内部调参,默认 |
'none'
|
tuning_trials
|
int
|
启用 Optuna 后每棵树的试验次数,默认为 10。 |
10
|
引发:
| 类型 | 描述 |
|---|---|
ValueError
|
树数量或调参次数小于 1、特征比例不在 (0, 1] 内、深度包含非正值, 或调参后端不受支持时抛出。 |
mars.rule.MarsForestRuleGenerator ¶
Bases: MarsRuleGenerator
从随机森林叶子路径提取候选规则。
参数:
| 名称 | 类型 | 描述 | 默认 |
|---|---|---|---|
n_estimators
|
int
|
森林中的树数量,默认为 50。 |
50
|
max_depth
|
int
|
每棵树的最大深度,默认为 3。 |
3
|
feature_fraction
|
float
|
每次分裂可考虑的模型矩阵特征比例,默认为 0.8。 |
0.8
|
min_samples_leaf
|
NumericLeafSize
|
叶子的最小样本量,默认 0.01。整数表示人数,浮点数表示训练样本比例。 |
0.01
|
random_state
|
int | None
|
随机森林种子;默认不固定。 |
None
|
n_jobs
|
int
|
sklearn 并行任务数,默认为 |
-1
|
mars.rule.MarsGBDTRuleGenerator ¶
Bases: MarsRuleGenerator
从 sklearn 或 LightGBM GBDT 弱学习器提取规则路径。
参数:
| 名称 | 类型 | 描述 | 默认 |
|---|---|---|---|
backend
|
Literal['sklearn', 'lightgbm']
|
模型后端,默认为 |
'sklearn'
|
n_estimators
|
int
|
弱学习器数量,默认为 80。 |
80
|
max_depth
|
int
|
每棵树的最大深度,默认为 3。 |
3
|
learning_rate
|
float
|
弱学习器的学习率,默认为 0.05。 |
0.05
|
feature_fraction
|
float
|
特征采样比例,默认为 0.8。sklearn 使用 |
0.8
|
min_samples_leaf
|
NumericLeafSize
|
叶子的最小样本量,默认 0.01。整数表示人数,浮点数表示训练样本比例。
LightGBM 将比例换算为至少一个样本的 |
0.01
|
random_state
|
int | None
|
模型随机种子;默认不固定。 |
None
|
n_jobs
|
int
|
LightGBM 的并行任务数,默认为 |
-1
|
model_params
|
Dict[str, Any] | None
|
额外模型参数,默认空字典。sklearn 后端允许覆盖 |
None
|
引发:
| 类型 | 描述 |
|---|---|
ValueError
|
模型后端不受支持,或树数量、最大深度、特征比例、叶子样本量、 学习率不满足要求时抛出。 |
mars.rule.MarsIsolationRuleGenerator ¶
Bases: MarsRuleGenerator
从孤立森林异常路径生成无监督候选规则。
模型不使用目标值拟合,但训练矩阵仍只保留目标转为数值后非空且非 NaN 的行。 候选的业务风险方向和最终资格由挖掘工作流评估。
参数:
| 名称 | 类型 | 描述 | 默认 |
|---|---|---|---|
n_estimators
|
int
|
孤立树数量,默认为 100。 |
100
|
max_samples
|
Union[int, float, Literal['auto']]
|
每棵树使用的样本数或比例,传给 sklearn;默认 |
'auto'
|
feature_fraction
|
float
|
每棵树抽取的模型矩阵特征比例,默认为 0.8。 |
0.8
|
contamination
|
Union[float, Literal['auto']]
|
sklearn 的异常比例参数,默认 |
'auto'
|
path_depth_limit
|
int
|
提取路径时允许的最大深度,默认为 4;更深的叶子路径不生成候选。 |
4
|
min_leaf_samples
|
int
|
叶子命中人数下限,默认为 50。 |
50
|
anomaly_quantile
|
float
|
异常分数的分位阈值,默认为 0.95;达到阈值的行标记为异常。 仅保留异常人数大于 0、且异常比例不低于全体异常比例的叶子。 |
0.95
|
max_candidates
|
int
|
去重后最多返回的候选数,默认为 5,000,包含显式缺失规则。 |
5000
|
random_state
|
int | None
|
模型随机种子;默认不固定。 |
None
|
n_jobs
|
int
|
sklearn 并行任务数,默认为 |
-1
|
model_params
|
Dict[str, Any] | None
|
传给 |
None
|
引发:
| 类型 | 描述 |
|---|---|
ValueError
|
树数量、路径深度、叶子人数或候选预算小于 1, 特征比例不在 (0, 1] 内,或异常分位阈值不在 (0, 1) 内时抛出。 |
generate ¶
训练孤立森林并提取受深度和预算约束的路径。
参数:
| 名称 | 类型 | 描述 | 默认 |
|---|---|---|---|
df
|
FrameLike
|
用于生成候选的训练表;规则结果不保存原始数据。 |
必需 |
target
|
str
|
目标列名。默认推断候选特征时排除该列;显式传入 |
必需 |
features
|
Sequence[str] | None
|
候选特征范围;默认推断除目标列外的数值特征,显式范围也只保留数值列。 |
None
|
返回:
| 类型 | 描述 |
|---|---|
list[MarsRule]
|
返回满足路径深度、叶子样本数和异常比例条件的叶子路径规则,并补充显式缺失规则。
合并去重后按 |