データの一貫性評価指標の低下
データの一貫性メトリックの低下は、実行時トランザクションをトレーニングデータのトランザクションパターンと比較し、不整合を特定します。
メトリックの詳細
データの一貫性の低下は、時間の経過とともにモデルが結果を予測する精度を評価するドリフト評価指標です。
有効範囲 (Scope)
データの一貫性メトリックの低下は、機械学習モデルのみを評価します。
- AI 資産の種類:機械学習モデル
- 機械学習の問題タイプ :
- 2 項分類
- マルチクラス分類
スコアと価値
データの一貫性メトリックスコアの低下は、トレーニングデータのパターンに違反してトランザクションに一貫性が欠けているかどうかを示します。
値の範囲 : 0.0-1.0
評価プロセス
各トランザクションは、実行時のトランザクションをトレーニングデータのトランザクションパターンと比較することで、データの不整合について分析されます。 トランザクションがトレーニングデータのパターンに1つ以上違反している場合、そのトランザクションは不整合であると識別されます。 データの整合性の低下を算出するには、トランザクションの総数を、不整合として特定されたトランザクションの数で割ります。 例えば、100件のトランザクションから10件のトランザクションが不整合であると特定された場合、データの一貫性の低下は10%となります。
データの不整合を特定するために、 ドリフト検出の設定時に
ファイルを作成して入力データが従うべきルールを指定すると、スキーマが生成されます。 このスキーマは、指定された制約に適合しない異常値を特定することで、データのドリフトを評価するために使用されます。 スキーマは、次の例に示すように、トレーニングデータを記述する constraints.json
と columns
の配列を含むJSONオブジェクトとして指定されますconstraints
{
"columns": [
{
"name": "CheckingStatus",
"dtype": "categorical",
"count": 5000,
"sparse": false,
"skip_learning": false
},
"constraints": [
{
"name": "categorical_distribution_constraint",
"id": "f0476d40-d7df-4095-9be5-82564511432c",
"kind": "single_column",
"columns": [
"CheckingStatus"
],
"content": {
"frequency_distribution": {
"0_to_200": 1304,
"greater_200": 305,
"less_0": 1398,
"no_checking": 1993
}
}
}
、 name
、 dtype
、 count
、 sparse
の各キーには、列を記述するための値が指定されています。skip_learning
と name
キーは、列のラベルとデータタイプを記述します。 dtype
キーで指定される以下の値は、データタイプを説明しますdtype
categorical
numeric_discrete
numeric_continuous
指定されたデータタイプによって、
、 min
、 max
などのキーでより多くの統計的性質が記述されるかが決まります。 例えば、 mean
または numeric_discrete
データタイプが指定されている場合、プロパティは次の例のように記述されますnumeric_continuous
{
"name": "LoanDuration",
"dtype": "numeric_discrete",
"count": 5000,
"sparse": false,
"skip_learning": false,
"min": 4,
"max": 53,
"mean": 21.28820697954272,
"std": 10.999096037050032,
"percentiles": [
13.0,
21.0,
29.0
],
"count_actual": 4986
}
キーは、列の行数を指定します。 ブール値は、列の count
および sparse
キーを記述するために指定されます。 skip_learning
キーは、列が疎であるかどうかを指定し、 sparse
キーは、列がスキーマで説明されているルールの学習をスキップするかどうかを指定します。 25th パーセンタイルと 75th パーセンタイルが同じ値の場合、列は疎である。skip_learning
キーは制約の種類を指定します。 制約の種類を説明するために、以下の値が指定されていますname
categorical_distribution_constraint
numeric_range_constraint
numeric_distribution_constraint
catnum_range_constraint
catnum_distribution_constraint
catcat_distribution_constraint
キーは、一意に識別可能な識別子(UUID)で制約を識別します。 id
キーは、制約が kind
制約であるか、 single_column
制約であるかを指定します。two-column
キーは、カラム名の配列を指定します。 columns
制約に single_column
キーが指定されている場合、配列には、説明したいカラムに関連する値が含まれています。 kind
制約が two-column
キーとともに指定される場合、配列には関連データを含むカラムと相関する値が含まれます。kind
キーは、データの統計的特徴を説明する属性を指定します。 content
キーで指定された制約タイプによって、 name
キーで指定される属性が決定されます。次の表に示されているように:content
属性 | 制約 |
---|---|
度数分布 | categorical_distribution_constraint |
範囲 | numeric_range_constraint, catnum_range_constraint |
分布 | numeric_distribution_constraint, catnum_distribution_constraint |
まれな組み合わせ | catcat_distribution_constraint |
ソースカラム | catcat_distribution_constraint, catnum_range_constraint, catnum_distribution_constraint |
target_column | catcat_distribution_constraint, catnum_range_constraint, catnum_distribution_constraint |
以下のセクションでは、各制約タイプがどのように指定されるかの例を示します
カテゴリカル分布制約
{
"name": "categorical_distribution_constraint",
"id": "f0476d40-d7df-4095-9be5-82564511432c",
"kind": "single_column",
"columns": [
"CheckingStatus"
],
"content": {
"frequency_distribution": {
"0_to_200": 1304,
"greater_200": 305,
"less_0": 1398,
"no_checking": 1993
}
}
}
トレーニングデータでは、
列には、 CheckingStatus
属性で指定された4つの値が含まれています。 frequency_distribution
属性は、 frequency_distribution
などのカテゴリーの値で頻度をカウントします。 ペイロードデータに、 0_to_200
属性値と異なる値を指定するレコードが見つかった場合、そのレコードはドリフトとして識別されます。frequency_distribution
数値範囲の制約
{
"name": "numeric_range_constraint",
"id": "79f3a1f5-30a1-4c7f-91a0-1613013ee802",
"kind": "single_column",
"columns": [
"LoanAmount"
],
"content": {
"ranges": [
{
"min": 250,
"max": 11676,
"count": 5000
}
]
}
}
列には、トレーニングデータの範囲を設定するために LoanAmount
属性で指定された最小値と最大値が含まれています。 ranges
属性は、列の高密度領域を指定します。 トレーニングデータにほとんど発生しない範囲は含まれません。 ペイロードデータ内に、範囲と事前定義のバッファに収まらないレコードが見つかった場合、そのレコードはドリフトとして識別されます。ranges
数値分布制約
{
"name": "numeric_distribution_constraint",
"id": "3a97494b-0cd7-483e-a1c6-adb7755c1cb0",
"kind": "single_column",
"columns": [
"LoanAmount"
],
"content": {
"distribution": {
"name": "norm",
"parameters": {
"loc": 3799.62,
"scale": 1920.0640064678398
},
"p-value": 0.22617155797563282
}
}
}
列には、 LoanAmount
属性で指定された値が含まれ、トレーニングデータの正規分布を設定します。 ペイロードデータに通常の分布に当てはまらないレコードが発見された場合、そのレコードはドリフトとして識別されます。 内挿される分布は、一様分布、指数分布、正規分布のいずれかです。 これらの分布に当てはまるレコードが見つからない場合、この制約は学習されません。distribution
カテゴリカル - カテゴリカル分布制約
{
"name": "catcat_distribution_constraint",
"id": "99468600-1924-44d9-852c-1727c9c414ee",
"kind": "two_column",
"columns": [
"CheckingStatus",
"CreditHistory"
],
"content": {
"source_column": "CheckingStatus",
"target_column": "CreditHistory",
"rare_combinations": [
{
"source_value": "no_checking",
"target_values": [
"no_credits"
]
}
]
}
}
と CheckingStatus
の列では、 CreditHistory
属性は、トレーニングデータではほとんど発生しない値の組み合わせを指定しています。 ペイロードデータにその組み合わせを含むレコードが見つかった場合、そのレコードはドリフトとして識別されます。rare_combinations
カテゴリ別数値範囲制約
{
"name": "catnum_range_constraint",
"id": "f252033c-1635-4974-8976-3f7904d0c37d",
"kind": "two_column",
"columns": [
"CheckingStatus",
"LoanAmount"
],
"content": {
"source_column": "CheckingStatus",
"target_column": "LoanAmount",
"ranges": {
"no_checking": [
{
"min": 250,
"max": 11676,
"count": 1993
}
],
"less_0": [
{
"min": 250,
"max": 7200,
"count": 1398
}
],
"0_to_200": [
{
"min": 250,
"max": 9076,
"count": 1304
}
],
"greater_200": [
{
"min": 250,
"max": 9772,
"count": 305
}
]
}
}
}
属性は、トレーニングデータの範囲を設定する ranges
および CheckingStatus
列の最小値と最大値を指定します。 ペイロードデータに、 LoanAmount
と LoanAmount
の列値が範囲と事前定義されたバッファ内に収まる値を含まないレコードが見つかった場合、そのレコードはドリフトとして識別されます。CheckingStatus
カテゴリ別数値分布制約
{
"name": "catnum_distribution_constraint",
"id": "3a97494b-0cd7-483e-a1c6-adb7755c1cb0",
"kind": "two_column",
"columns": [
"CheckingStatus",
"LoanAmount"
],
"content": {
"source_column": "CheckingStatus",
"target_column": "LoanAmount",
"distribution": {
"greater_200": {
"name": "norm",
"parameters": {
"loc": 3799.62,
"scale": 1920.0640064678398
},
"p-value": 0.22617155797563282
}
}
}
}
と LoanAmount
の列には、 CheckingStatus
属性で指定された値が含まれており、トレーニングデータの正規分布を設定します。 ペイロードデータに、正規分布に適合する distribution
および LoanAmount
列の値を含まないレコードが見つかった場合、そのレコードはドリフトとして識別されます。CheckingStatus
次のステップ
ドリフトが検出された後にその影響を緩和するには、問題を修正した新しいバージョンのモデルを構築する必要があります。 そのための良い足掛かりとなるのが、ドリフトの理由として強調表示されているデータ・ポイントです。 ドリフトしたトランザクションを手動でラベル付けし、そのデータを使用してモデルを再学習させた後、新しいデータを予測モデルに導入します。
親トピック: 評価指標