Features¶
What is a Feature¶
From the perspective of a developer, features are nothing but variables. The risk system is driven by these features and it's important to understand them.
At an abstract level, risk supports two types of features.
* Lifetime features - Variables which hold aggregated/running data from the time they were added into the system. They are helpful in telling the first/last/count of something happened over time. Like calculating age, or saving user info, or telling how many times some information is modified.
* Velocity features - Theses variables are more granular in nature and can tell information for a specific timeframe. Like sum transaction amount over last 1sec, 1min, 1hour, 1day etc.
Feature Structure¶
Features use a naming pattern like this:
<DocumentType>/<EventName>/<Duration>/<VariableName>/<Aggregation>/<Aggregation_SubType>/<Type>
Supported Features (Ref: Click here)¶
| Type | Stored Type | Aggregations | Remarks |
|---|---|---|---|
| Lifetime | bool | <DocumentType>/<EventName>/*/<VariableName>/first/bool |
|
<DocumentType>/<EventName>/*/<VariableName>/last/bool |
|||
| date | <DocumentType>/<EventName>/*/<VariableName>/first/seconds_since/double |
||
<DocumentType>/<EventName>/*/<VariableName>/first/minutes_since/double |
|||
<DocumentType>/<EventName>/*/<VariableName>/first/days_since/double |
|||
<DocumentType>/<EventName>/*/<VariableName>/last/seconds_since/double |
|||
<DocumentType>/<EventName>/*/<VariableName>/last/minutes_since/double |
|||
<DocumentType>/<EventName>/*/<VariableName>/last/days_since/double |
|||
| double | <DocumentType>/<EventName>/*/<VariableName>/sum/double |
||
<DocumentType>/<EventName>/*/<VariableName>/count/int |
|||
| f_int | <DocumentType>/<EventName>/*/<VariableName>/int |
returns actual value | |
<DocumentType>/<EventName>/*/<VariableName>/count/int |
|||
| string | <DocumentType>/<EventName>/*/<VariableName>/first/string |
||
<DocumentType>/<EventName>/*/<VariableName>/last/string |
|||
| stats | <DocumentType>/<EventName>/*/<VariableName>/sum/double |
||
<DocumentType>/<EventName>/*/<VariableName>/avg/double |
|||
<DocumentType>/<EventName>/*/<VariableName>/stdev/double |
|||
<DocumentType>/<EventName>/*/<VariableName>/first/double |
|||
<DocumentType>/<EventName>/*/<VariableName>/last/double |
|||
<DocumentType>/<EventName>/*/<VariableName>/min/double |
|||
<DocumentType>/<EventName>/*/<VariableName>/max/double |
|||
<DocumentType>/<EventName>/*/<VariableName>/count/int |
|||
| Velocity | record | <DocumentType>/<EventName>/<Duration>/<VariableName>/sum/double |
|
<DocumentType>/<EventName>/<Duration>/<VariableName>/avg/double |
|||
<DocumentType>/<EventName>/<Duration>/<VariableName>/stdev/double |
|||
<DocumentType>/<EventName>/<Duration>/<VariableName>/min/double |
|||
<DocumentType>/<EventName>/<Duration>/<VariableName>/max/double |
|||
<DocumentType>/<EventName>/<Duration>/<VariableName>/first/double |
|||
<DocumentType>/<EventName>/<Duration>/<VariableName>/last/double |
|||
<DocumentType>/<EventName>/<Duration>/<VariableName>/count/int |
|||
<DocumentType>/<EventName>/<Duration>/<VariableName>/distinct/sum/double |
|||
<DocumentType>/<EventName>/<Duration>/<VariableName>/distinct/avg/double |
|||
<DocumentType>/<EventName>/<Duration>/<VariableName>/distinct/max/double |
|||
<DocumentType>/<EventName>/<Duration>/<VariableName>/distinct/min/double |
|||
<DocumentType>/<EventName>/<Duration>/<VariableName>/distinct/first/double |
|||
<DocumentType>/<EventName>/<Duration>/<VariableName>/distinct/last/double |
|||
<DocumentType>/<EventName>/<Duration>/<VariableName>/distinct/count/int |
|||
<DocumentType>/<EventName>/<Duration>/<VariableName>/tx/count/int |
Counts tx (+ - -) |
||
<DocumentType>/<EventName>/<Duration>/<VariableName>/distinct_tx/count/int |
same with distinct |
Supported durations for Velocity features¶
Minimum granularity supported by system is minutes and it can go up to year.
| Supported Duration | Duration |
|---|---|
| last<*>m | Minutes |
| last<*>h | Hours |
| last<*>d | Days |
| last<*>y | Year |
| *Any number |