Middle+
Ինչ է back leakage-ը?
sobes.tech AI
Պատասխան AI-ից
Հետադարձ արտահոսք (back leakage) — դա մեքենայական ուսուցման իրավիճակ է, երբ թեստային կամ վալիդացիոն տվյալների հավաքածուից տեղեկատվությունը անգիտակցաբար անցնում է ուսուցման գործընթացին: Սա հանգեցնում է մոդելի ավելի շատ հարմարեցման այդ տվյալների վրա, ինչի հետևանքով թեստային հավաքածուի արդյունավետության գնահատականները (գुणական մետրիկները) բարձր են թվում և չեն արտացոլում մոդելի իրական կարողությունը նոր, unseen տվյալների վրա ընդհանուր առմամբ:
Հետադարձ արտահոսքի պատճառներ՝
- Տվյալների նախապատրաստական աշխատանքների իրականցում (չափում, նորմալիզացիա, կատեգորիական նշանների կոդավորում) ամբողջ տվյալների հավաքածուի վրա՝ նախքան այն բաժանելը ուսուցանող, թեստային և վալիդացիոն հավաքածուների:
- Ստատիստիկայի օգտագործում թեստային կամ վալիդացիոն հավաքածուից (օրինակ, միջին, ստանդարտ շեղում)՝ ուսուցանող հավաքածուի մշակման ժամանակ:
- Նշանների ընտրություն (feature selection) ամբողջ տվյալների հավաքածուի հիման վրա՝ ներառյալ թեստայինը:
- "Անձամբ" մոդելի կամ հիպերպարամետրերի հարմարեցում՝ հիմնվելով թեստային տվյալների վրա:
Հետադարձ արտահոսքի հետևանքներ՝
- Անպատասխանատու գնահատականներ մոդելի արդյունավետության մասին:
- Մոդելը վատ է աշխատում նոր տվյալների վրա արտադրությունում:
- Զարգացման վրա ռեսուրսների վատնում:
Հետադարձ արտահոսքը կանխելու միջոցներ՝
- Ամեն դեպքում տվյալները բաժանեք ուսուցանող, վալիդացիոն և թեստային հավաքածուների՝ առանց նախապատրաստական աշխատանքների կամ վերլուծության:
- Տվյալների նախապատրաստական աշխատանքներ կիրառեք միայն ուսուցանող հավաքածուի վրա՝ օրինակ,
StandardScaler,OneHotEncoder, և հետո օգտագործեք ուսուցանված փոխակերպիչները՝ վալիդացիոն և թեստային հավաքածուների վերամշակման համար: - Նշանների ընտրությունը կատարեք միայն ուսուցանող հավաքածուի վրա:
- Օգտագործեք խաչմերուկային վալիդացիա՝ հարմարեցնելու հիպերպարամետրերը և գնահատելու մոդելը՝ նախքան վերջնական թեստավորումը՝ պահած թեստային հավաքածուի վրա:
Նախատիպ սխալ չափում (հանգեցնում է back leakage)՝
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
# Նպատակը՝ df տվյալների ֆրեյմը
# Սխալ մոտեցում՝ ամբողջ df-ն չափել
scaler = StandardScaler()
df_scaled = scaler.fit_transform(df)
# Հետո բաժանել տվյալները
X_train, X_test, y_train, y_test = train_test_split(df_scaled, ...)
Կարող է ճիշտ չափում կիրառել՝ խուսափելու համար back leakage՝
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
# Նպատակը՝ df տվյալների ֆրեյմը
# Ճիշտ մոտեցում՝ սկզբից բաժանել տվյալները
X_train, X_test, y_train, y_test = train_test_split(df, ...)
# Հետո ուսուցանել չափիչը միայն ուսուցանող տվյալների վրա
scaler = StandardScaler()
X_train_scaled = scaler.fit_transform(X_train)
# Եւ կիրառել ուսուցանված չափիչը՝ թեստային տվյալների վրա
X_test_scaled = scaler.transform(X_test)
# Այժմ X_train_scaled և X_test_scaled պատրաստ են մոդելի ուսուցման համար