MultiLabel Ranking Metrics - ծածկույթի սխալ մեքենայական ուսուցման մեջ
MultiLabel մոդելների որակը գնահատելու համար անհրաժեշտ է օգտագործել MultiLabel Ranking չափանիշները, այդպիսի չափիչներից է Coverage Error-ը, որը քանակականացնում է դասակարգման մոդելի կարողությունը ծածկելու բոլոր համապատասխան պիտակները որոշակի օրինակի համար:
Բազմաթիվ պիտակների դասակարգման առաջադրանքները ներառում են մի քանի համապատասխան պիտակների վերագրում տվյալ օրինակին, օրինակ՝ պատկերների պիտակավորում կամ փաստաթղթերի դասակարգում: Այս հոդվածում մենք խորանում ենք ծածկույթի սխալի հայեցակարգի մեջ և ուսումնասիրում դրա նշանակությունը բազմապիտակ վարկանիշային մոդելների արդյունավետությունը գնահատելու համար:
Ի՞նչ է ծածկույթի սխալը:
Ծածկույթի սխալը չափիչ է, որն օգտագործվում է մեքենայական ուսուցման մեջ՝ գնահատելու բազմանշանակ վարկանիշային մոդելները: Այն չափում է մոդելի կարողությունը ծածկելու բոլոր համապատասխան պիտակները յուրաքանչյուր օրինակի համար: Ծածկույթի ավելի ցածր սխալը ցույց է տալիս ավելի լավ կատարողականություն, իսկ զրոը ցույց է տալիս կատարյալ ծածկույթ, որտեղ բոլոր իրական պիտակները ճիշտ են կանխատեսված:
Ծածկման սխալի մաթեմատիկական արտահայտությունը կարող է սահմանվել հետևյալ կերպ
Coverage Error = (1/N) * Σ |Yi - Ŷi|
Որտեղ −
-
N-ը ներկայացնում է գնահատման հավաքածուի դեպքերի ընդհանուր թիվը:
Yi-ն նշանակում է i-րդ օրինակի ճշմարիտ պիտակների բազմությունը:
Ŷi-ն նշանակում է i-րդ օրինակի համար կանխատեսված պիտակների բազմությունը:
|Yi - Ŷi| ներկայացնում է իրական պիտակների և կանխատեսված պիտակների բացարձակ տարբերությունը՝ նշելով i-րդ օրինակի համար բացակայող պիտակների թիվը:
Ամփոփելով բոլոր ատյանների բացարձակ տարբերությունները և դրանք բաժանելով դեպքերի ընդհանուր թվին (N), մենք ստանում ենք ծածկույթի միջին սխալը, որը գնահատում է համապատասխան պիտակները ճշգրիտ ծածկելու մոդելի կարողությունը:
Ինչպե՞ս հաշվարկել MultiLabel Ranking Metrics - ծածկույթի սխալ:
Ստորև բերված են այն քայլերը, որոնք մենք կհետևենք՝ հաշվարկելու MultiLabel Ranking Metrics - Ծածկման սխալ -
Ձեռք բերեք իրական պիտակները և կանխատեսված պիտակները ձեր տվյալների բազայի յուրաքանչյուր օրինակի համար:
Որոշեք ձեր տվյալների հավաքածուի օրինակների և պիտակների քանակը:
Նախաձեռնեք զանգված կամ ցուցակ՝ յուրաքանչյուր օրինակի համար ծածկույթի սխալը պահելու համար:
Յուրաքանչյուր օրինակի համար −
-
Բացահայտեք ճշմարիտ պիտակները՝ գտնելով այն ինդեքսները, որտեղ իսկական պիտակների արժեքները 1 են:
Բացահայտեք կանխատեսված պիտակները՝ գտնելով այն ցուցանիշները, որտեղ կանխատեսված պիտակների արժեքները 1 են:
Հաշվարկեք ճշմարիտ պիտակների և կանխատեսված պիտակների միջև սահմանված տարբերությունը՝ բացակայող պիտակները գտնելու համար:
Այդ օրինակի համար պահեք բացակայող պիտակների թիվը ծածկույթի սխալների զանգվածում:
Հաշվեք ծածկույթի միջին սխալը՝ հաշվի առնելով ծածկույթի սխալի զանգվածի միջինը:
Ստացված արժեքը ներկայացնում է ծածկույթի սխալի չափանիշը ձեր բազմապիտակ վարկանիշային մոդելի համար:
Օրինակ
Ստորև բերված են ծրագրավորման երկու օրինակներ, մեկը՝ ստեղծելով մեր սեփական տվյալների բազան, իսկ մյուսը՝ օգտագործելով ներկառուցված տվյալների բազա:
import numpy as np
def coverage_error(y_true, y_pred):
num_samples, num_labels = y_true.shape
coverage = np.zeros(num_samples)
for i in range(num_samples):
true_labels = set(np.where(y_true[i])[0])
predicted_labels = set(np.where(y_pred[i])[0])
coverage[i] = len(true_labels - predicted_labels)
return np.mean(coverage)
# Example usage
y_true = np.array([[1, 0, 1, 0],
[0, 1, 0, 1],
[1, 0, 0, 1]])
y_pred = np.array([[1, 0, 1, 0],
[0, 1, 1, 0],
[1, 0, 0, 0]])
error = coverage_error(y_true, y_pred)
print("Coverage Error:", error)
Արդյունք
Coverage Error: 0.6666666666666666
Ծածկույթի սխալի միավորը 0,66666666 է, ինչը նշանակում է, որ միջին հաշվով մենք պետք է ներառենք ամենաբարձր վարկանիշ ունեցող պիտակների 66%-ը, որպեսզի ծածկենք բոլոր իրական պիտակները: Սա համեմատաբար լավ միավոր է, բայց այն կարելի է բարելավել՝ օգտագործելով այլ մոդել կամ կարգավորելով մոդելի հիպերպարամետրերը:
Մենք ունենք երեք օրինակ գնահատման հավաքածուում, որոնք նշվում են y_true և y_pred տողերով: Յուրաքանչյուր օրինակ ունի չորս պիտակ:
Առաջին ատյանի համար −
Ճշմարիտ պիտակները [0, 2] են (1 արժեք ունեցող տարրերի ինդեքսները y_true-ի առաջին շարքում):
Կանխատեսված պիտակները [0, 2] են (1 արժեք ունեցող տարրերի ինդեքսները y_pred-ի առաջին շարքում):
Ճշմարիտ և կանխատեսված պիտակների միջև տարբերությունը դատարկ բազմություն է ([]), քանի որ երկու բազմությունները նույնն են:
Այսպիսով, ծածկույթի սխալն առաջին ատյանի համար 0 է:
Երկրորդ ատյանի համար −
Ճշմարիտ պիտակները [1, 3] են (1 արժեք ունեցող տարրերի ինդեքսները y_true-ի երկրորդ շարքում):
Կանխատեսված պիտակները [1, 2] են (1 արժեք ունեցող տարրերի ինդեքսները y_pred-ի երկրորդ շարքում):
Ճշմարիտ և կանխատեսված պիտակների միջև տարբերությունը [3] է:
Այսպիսով, ծածկույթի սխալը երկրորդ ատյանի համար 1 է:
Երրորդ օրինակի համար −
Ճշմարիտ պիտակները [0, 3] են (1 արժեք ունեցող տարրերի ինդեքսները y_true-ի երրորդ շարքում):
Կանխատեսված պիտակները [0] են (1 արժեք ունեցող տարրերի ինդեքսները y_pred-ի երրորդ շարքում):
Ճշմարիտ և կանխատեսված պիտակների միջև տարբերությունը [3] է:
Այսպիսով, երրորդ ատյանի ծածկույթի սխալը 1 է:
Ընդհանուր ծածկույթի սխալը հաշվարկելու համար մենք վերցնում ենք ծածկույթի սխալների միջինը բոլոր դեպքերի համար −
(0 + 1 + 1)/3=2/3=0.6666666666666666
Հետևաբար, օրինակի ծածկույթի սխալը 0,6666666666666666 է, ինչը ցույց է տալիս, որ միջինում 3 դեպքերից 2-ում մոդելի կանխատեսումներում բացակայում է մեկ պիտակ՝ համեմատած իրական պիտակների հետ:
Ծրագիր՝ օգտագործելով ներկառուցված տվյալների բազա (Iris) −
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import MultiLabelBinarizer
import numpy as np
def coverage_error(y_true, y_pred):
num_samples, num_labels = y_true.shape
coverage = np.zeros(num_samples)
for i in range(num_samples):
true_labels = set(np.where(y_true[i])[0])
predicted_labels = set(np.where(y_pred[i])[0])
coverage[i] = len(true_labels - predicted_labels)
return np.mean(coverage)
# Load the Iris dataset
iris = load_iris()
# Data cleaning and preprocessing
X = iris.data
y = iris.target.reshape(-1, 1)
# Convert labels to binary form
mlb = MultiLabelBinarizer()
y = mlb.fit_transform(y)
# Split the dataset into train and test sets
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
# Example usage
error = coverage_error(y_test, y_test)
print("Coverage Error:", error)
Coverage Error: 0.0
Վերոնշյալ օրինակում ծածկույթի սխալը 0.0 է, ինչը նշանակում է, որ բազմանշանակ դասակարգման մոդելը հիանալի կերպով ծածկում է բոլոր համապատասխան պիտակները յուրաքանչյուր օրինակի համար՝ Iris տվյալների հավաքածուի թեստային հավաքածուում: 0.0 ծածկույթի սխալը ցույց է տալիս, որ մոդելի կանխատեսումներում բացակայող կամ սխալ պիտակներ չկան, երբ համեմատվում են իրական պիտակների հետ:
Եզրակացություն
Եզրափակելով, ծածկույթի սխալը արժեքավոր չափիչ է մեքենայական ուսուցման մեջ բազմանշանակ վարկանիշային մոդելների կատարողականությունը գնահատելու համար: Այն քանակականացնում է մոդելի կարողությունը՝ ճշգրիտ կանխատեսելու բոլոր համապատասխան պիտակները յուրաքանչյուր օրինակի համար: Ավելի ցածր ծածկույթի սխալի ձեռքբերումը ցույց է տալիս ավելի բարձր ճշգրտություն և արդյունավետություն բազմապիտակ վարկանիշային առաջադրանքներում: