HingeRampFD Component Specification¶
Contents
Overview¶
HingeRampFD component is a feature descriptor. This component produces an output by linear function with upper/lower limit. The scale of the input must be INTEGER or REAL.
Example:
SPD:
dl1 -> hr1 --- components: dl1: component: DataLoader hr1: component: HingeRampFDComponent features: scale == 'real' or scale == 'integer' hinge_ramp_param: [["re_match('.*Length', name)", [{'slope': 2.0, 'intercept': 1.0, 'upper_limit': 50.0, 'lower_limit': 0.0}]]]
Input of the component:
_sid
Sepal.Length
Petal.Length
0
5.1
1.4
1
inf
1.4
2
4.7
1.3
3
4.6
-inf
4
NaN
NaN
Output of the component:
_sid
hr1(2.0:1.0:50.0:0.0)_Sepal.Length
hr1(2.0:1.0:50.0:0.0)_Petal.Length
0
11.2
3.8
1
50.0
3.8
2
10.4
3.6
3
10.2
0.0
4
NaN
NaN
This component has no component-specific external formats.
See also
Component-common external format files in convert_process
Parameters¶
Here are the component-specific parameters for the HingeRampFD component.
SPD¶
The following parameter is for “components” section of SPD.
Parameter Name |
Type |
Domain |
Default Value |
Description |
---|---|---|---|---|
hinge_ramp_param 1 |
[[feature_expr, [{params}]]] |
– |
– |
Specifies target features and parameters of HingeRamp function. |
- 1
Required parameter
Details of hinge_ramp_param¶
feature_expr follows the format described in Attribute Selection of SPD (SAMPO Process Description) File Specification:
're_match(".*Length", name)'
params can be described as dict:
{'slope':2.0, 'intercept':1.0, 'upper_limit':50.0, 'lower_limit':0.0}
Here we define the relationship of an input \(x\) and an output \(y\) through the linear function \(y = ax + b\).
Key of params
Type
Domain
Default Value
Description
slope
float
(-inf, 0), (0, inf)
1.0
\(a\) in the linear function \(y = ax + b\).
intercept
float
(-inf, inf)
0.0
\(b\) in the linear function \(y = ax + b\).
upper_limit
float
(-inf, inf]
inf
The upper limit of the output \(y\).
lower_limit
float
[-inf, inf)
-inf
The lower limit of the output \(y\).
upper_limit
must be larger thanlower_limit
.
Output Attributes¶
HingeRampFD component generates the following attribute:
Attribute Name |
Scale |
Description |
---|---|---|
<component_id>(<slope>:<intercept>:<upper_limit>:<lower_limit>)_<original_attribute_name> |
REAL |
Linearly-transformed value with upper/lower limit of the original value. |
These attributes are in the component output data. These can be loaded in SAMPO API or saved as data.csv after executing convert_process.
See also
Obtaining process results via ProcessResultLoader.
Attribute Metadata¶
The metadata of the output attributes is created with the following rules.
Context Rule¶
Attribute Name |
Context Name |
Description |
---|---|---|
<component_id>(<slope>:<intercept>:<upper_limit>:<lower_limit>)_<original_attribute_name> |
slope |
Set the value of |
<component_id>(<slope>:<intercept>:<upper_limit>:<lower_limit>)_<original_attribute_name> |
intercept |
Set the value of |
<component_id>(<slope>:<intercept>:<upper_limit>:<lower_limit>)_<original_attribute_name> |
upper_limit |
Set the value of |
<component_id>(<slope>:<intercept>:<upper_limit>:<lower_limit>)_<original_attribute_name> |
lower_limit |
Set the value of |
Derivation Rule¶
Each new attribute is derived from the corresponding attribute selected by the features
parameter of the component.
Example¶
{
"nodes": [
{"aid": "_sid", "name": "_sid", ... },
{"aid": "dl1[0]", "name": "Sepal.Length", ... },
{"aid": "dl1[1]", "name": "Petal.Length", ... },
{"aid": "hr1[0]", "name": "hr1(2.0:1.0:50.0:0.0)_Sepal.Length", "scale": "real",
"is_excluded": false, "cid": "hr1", "cindex": 0, "values": null, "is_kept": false,
"context": {"slope": 2.0000000000000000e+00, "intercept": 1.0000000000000000e+00,
"lower_limit": 0.0000000000000000e+00, "upper_limit": 5.0000000000000000e+01}},
{"aid": "hr1[1]", "name": "hr1(2.0:1.0:50.0:0.0)_Petal.Length", "scale": "real",
"is_excluded": false,"cid": "hr1", "cindex": 1, "values": null, "is_kept": false,
"context": {"slope": 2.0000000000000000e+00, "intercept": 1.0000000000000000e+00,
"lower_limit": 0.0000000000000000e+00, "upper_limit": 5.0000000000000000e+01}}
],
"links": [
{"source": "dl1[0]", "target": "hr1[0]"},
{"source": "dl1[1]", "target": "hr1[1]"}
]
}
See also
Attribute metadata file format in Attribute Metadata File Specification
Model¶
The model of this component can be described by its fd_params.
fd_params |
Type |
Description |
---|---|---|
source_attr_names |
list of string |
A list of attribute names where the output attribute is derived from. |
params |
dict |
The keys of this dictionary are the same as the context of this component’s Attribute Metadata. |
When loaded in the SAMPO API, the model is represented as a dict of its fd_params.
See also
Obtaining process results via ProcessResultLoader.
{'fd_params':
[{'source_attr_names': ['Sepal.Length'],
'params': {'slope': 2.0000000000000000e+00,
'intercept': 1.0000000000000000e+00,
'lower_limit': 0.0000000000000000e+00,
'upper_limit': 5.0000000000000000e+01}},
{'source_attr_names': ['Petal.Length'],
'params': {'slope': 2.0000000000000000e+00,
'intercept': 1.0000000000000000e+00,
'lower_limit': 0.0000000000000000e+00,
'upper_limit': 5.0000000000000000e+01}}]}
Details¶
In the running phase, the output values are calculated by the input values and parameter of linear function as follows.
Linear Function
\(y =\)
slope
\(\times\) input value \(+\)intercept
Conditional Branching
- \(y <\)
lower_limit
: output value =
lower_limit
lower_limit
\(\leq y \leq\)upper_limit
:output value = \(y\)
upper_limit
\(< y\):output value =
upper_limit
- \(y <\)
where
slope
,intercept
,lower_limit
, andupper_limit
are the component parameters.