Sobes.tech
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 պատրաստ են մոդելի ուսուցման համար