Akaike Information Criterion ose AIC është një metodë statistikore e përdorur për zgjedhjen e modelit. Ju ndihmon të krahasoni modelet e kandidatëve dhe të zgjidhni më të mirët mes tyre.

Modelet kandidate mund të jenë modele që secili përmban një nëngrup të ndryshëm ose kombinim variablash të pavarur/parashikues.

AIC synon të zgjedhë modelin i cili shpjegon variancën në variablin e varur me më paknumrin e variablave (parametrave) të pavarur. Pra, ndihmon në zgjedhjen e një modeli më të thjeshtë (më pak parametra) mbi një modelkompleks (më shumë parametra).

Por pse të zgjidhni një model më të thjeshtë në vend të një modeli kompleks?

  • Për të reduktuar mbipërshtatjen:

Ne e dimë se sa më kompleks të jetë modeli, aq më mirë përshtatet. Megjithatë, kjo rritje e kompleksitetit mund të çojë në përshtatje të tepërt, p.sh. paragjykim i ulët (saktësia e lartë e trenit) dhe variancë e lartë (saktësia e ulët e provës). Prandaj, AIC ndihmon në përballimin e këtij shkëmbimi midis një modeli të thjeshtë dhe atij kompleks.

  • Zvogëloni numrin e parametrave (zvogëloni numrin e dimensioneve):

Ekziston një kosto e shtuar llogaritëse e lidhur me shtimin e një parametri. Gjithashtu, parametrat e padëshiruar mund të rezultojnë në shtimin e zhurmës që pengon përshtatshmërinë në model. Rezultati AIC ndihmon në përcaktimin nëse kostoja e shtimit të ndonjë parametri të caktuar është e justifikuar.

AIC mat informacionin e humbur, kështu që modeli me një rezultat më të ulët AIC tregon një përshtatje më të mirë.

AIC përbëhet nga dy aspekte të rëndësishme

  • Mundësia maksimale e log-it (mat sa mirë modeli i dhënë ka kapur variancën në variablin e varur)
  • Numri i parametrave

Ajo llogaritet duke përdorur formulën:

Meqenëse preferohet një rezultat më i vogël AIC, bazuar në këtë formulë shtimi i më shumë parametrave në të vërtetë epenalizon rezultatin. Pra, nëse dy modele shpjegojnë në mënyrë të barabartë variancën në të dhënat e dhëna, modeli me më pak parametra do të ketë një rezultat AIC më të ulët dhe do të zgjidhet si modeli më i përshtatshëm.

Kur kërkohet AIC?

  • Supozoni se për një deklaratë të caktuar problemi keni mbledhur ose gërvishtur variablat e nevojshëm duke përdorur njohuritë tuaja të domenit, por nuk jeni të sigurt nëse këta janë tregues të rëndësishëm për problemin.
  • Ju mungon sasia e kërkuar e të dhënave për të testuar saktë saktësinë.

Një pikë e rëndësishme për t'u theksuar është se rezultati AIC në vetvete nuk ka asnjë rëndësi. Duhet krahasuarme një model tjetër.

Le të zhytemi më thellë duke përdorur një shembull

Supozoni se kam një problem regresioni ku duhet të parashikoj çmimin e një makine. Më lejoni t'ju jap një përmbledhje të kornizës së të dhënave.

df.head()

  • Variablat e pavarur: kuajfuqi, madhësia e motorit, mpg autostradë
  • Variabli i varur: çmimi

Ka 3 parametra. Kështu që,

  • K = 3 + 1 = 4 (Numri i parametrave në model + Ndërprerja)

Prandaj, numri i nënbashkësive (kombinimet e parametrave të dhënë) është 2^numri i parametrave = 2³ = 8, pra me fjalë të tjera, ekzistojnë 8 modele kandidate.

# Print the subsets of parameters
import itertools
for i in range(len(all_cols)+1):
    for subset in itertools.combinations(all_cols, i):
        print(list(subset))

Këtu grupi i zbrazët i referohet një modeli vetëm me ndërprerje, modeli më i thjeshtë i mundshëm.

Unë do të përdor Regresionin Linear për t'iu përshtatur modeleve të dhëna.

y = df['price']
r2_scores = []
predictor_subsets = []
for i in range(len(all_cols)+1):
    for subset in itertools.combinations(all_cols, i):
        model = LinearRegression(n_jobs = -1, normalize=False)
        
        cols = list(subset)
        predictor_subsets.append(cols)
        # If intercept-only model
        if len(cols) < 1:
            x = np.full(len(y), 0)
            x = x.reshape(-1, 1)
            
            model.fit(x, y)
            ypred = model.predict(x
            score = model.score(x, y)
            r2_scores.append(score)
            
            
        else:     
            x = df[cols]
            model.fit(x, y)
            ypred = model.predict(x)
            score = model.score(x, y)            
            r2_scores.append(score)

Këto janë rezultatet R2 pas përshtatjes së secilit model:

results_df = pd.DataFrame({'Predictor Subset': predictor_subsets,
                          'R2 Score': r2_scores})

Ju mund të shihni se modeli me rezultatin më të lartë përbëhet nga të gjithë parametrat, ndërsa modeli i dytë përmban të gjitha përveç highwaympg, por ndryshimi në rezultatin e tyre R2 është mjaft i parëndësishëm. Pra, a është e justifikuar kjo rritje e lehtë në rezultatin R2?

Për ta zbuluar, së pari, le të llogarisim rezultatin AIC për secilin model kandidat.

# Function to calculate the AIC score
# N: number of obervations
# K: Number of parameters
# mse: Mean squared error (SSe/N)
def calculate_aic(N, mse, K):
    aic = N*np.log(mse)+2*K
    return aic
y = df['price']
aic_scores = []
for i in range(len(all_cols)+1):
    for subset in itertools.combinations(all_cols, i):
        model = LinearRegression(n_jobs = -1, normalize=False)
        
        cols = list(subset)
        #If intercept-only model
        if len(cols) < 1:
            x = np.full(len(y), 0)
            x = x.reshape(-1, 1)
            
            model.fit(x, y)
            ypred = model.predict(x)
            
            N = len(y)
            K = len(model.coef_) + 1
            mse = mean_squared_error(y, ypred)
            aic = calculate_aic(N, mse, K)
            aic_scores.append(aic)            
            
        else:     
            x = df[cols]
            model.fit(x, y)
            ypred = model.predict(x)
            
            N = len(y)
            K = len(model.coef_) + 1
            mse = mean_squared_error(y, ypred)
            aic = calculate_aic(N, mse, K)
            aic_scores.append(aic)

Rezultatet e AIC janë:

Siç mund ta shihni, rezultati AIC i modelit më të mirë (modeli me rezultatin më të ulëtAIC) është vetëm pak më i ulët se modeli i dytë më i mirë. Që parametri shtesë të justifikohet, rezultati AIC duhet të jetë më i ulët me të paktën 2 njësi.

Le të llogarisim Delta AIC për çdo model. Delta AIC është vetëm ndryshimie rezultatit AIC të secilit model nga modeli më i mirë. Pra, Delta AIC e modelit më të mirë duhet të jetë 0.

results_df['Delta AIC'] = results_df['AIC score']- min(results_df['AIC score'])

Ju mund të shihni se rezultati AIC i modelit më të mirë është më shumë se 2 njësi më i ulët se modeli i dytë më i mirë. Meqenëse diferenca në rezultatet e AIC është mjaft domethënëse, mund të konkludojmë se rritja e lehtë në rezultatin R2 duke shtuar highwaympg është e justifikuar.

Me fjalë të tjera, rritja e variancës e shpjeguar duke shtuar highwaympgështë mjaft e rëndësishme që ajo të shtohet.

Mund të shkojmë një hap më tej duke llogaritur rezultatin e ponderuar të AIC për secilin model. Rezultati i ponderuar AIC jepfuqinë parashikuese të një modeli të caktuar në lidhje me të gjitha modelet e tjera.

Për të llogaritur AIC të ponderuar fillimisht, llogarisni probabilitetin relative të modelit i cili është vetëm exp(-0,5 * Delta AIC) i një modeli pjesëtuar me shumën totale të rezultateve të AIC të ponderuara të të gjitha modeleve.

results_df['Weighted AIC'] = round(np.exp(-0.5 * results_df['Delta AIC'])/sum(np.exp(-0.5 * results_df['Delta AIC'])), 4)

Kjo tabelë ilustron se 2 modelet kryesore shpjegojnë pothuajse 100% të variancës kur krahasohen me të gjitha modelet kandidate.

Pra, modeli më i mirë është modeli kandidat i cili përfshin të gjitha variablat e pavarur në kornizën e të dhënave. Ka rezultatin më të ulët të AIC dhe përmban rreth 75% të fuqisë parashikuese krahasuar me 25% të modelit të dytë më të mirë.

Bazuar në analizën e mësipërme, ju mund të zgjidhni modelin më të mirë të dhënë që përbëhet nga të gjitha variablat e pavarur për të parashikuar çmimintë makinave.

Përmbledhje

  • Akaike Information Criterion ju ndihmon të krahasoni dhe zgjidhni modelin më të mirë të kandidatit.
  • Modeli me një rezultat AIC më të ulët tregon një përshtatje më të mirë.
  • Preferon modelin që shpjegon më së shumti variancë me më pak parametra.
  • Penalizon modelet me më shumë parametra.
  • Rezultati AIC duhet të jetë të paktën 2 njësi më i ulët në krahasim me modelin tjetër që ai të jetë mjaft i rëndësishëm.
  • AIC i ponderuar tregon fuqinë parashikuese të një modeli të caktuar në lidhje me modelet e tjera.
  • Rezultati AIC në vetvete nuk ka asnjë rëndësi. Duhet të krahasohet me një model tjetër.

Burim i të dhënave"