Model liniar adaptat prin minimizarea unei pierderi empirice regularizate cu SGD

adăugat opțiunea

SGD înseamnă Stochastic Gradient Descent: gradientul pierderii este estimat la fiecare eșantion la un moment dat și modelul este actualizat pe parcurs cu un program de rezistență descrescător (alias rata de învățare).

Regulatorul este o penalizare adăugată funcției de pierdere care micșorează parametrii modelului către vectorul zero folosind fie norma euclidiană pătrată L2, fie norma absolută L1 sau o combinație a ambelor (Elastic Net). Dacă actualizarea parametrului depășește valoarea 0,0 din cauza regulatorului, actualizarea este trunchiată la 0,0 pentru a permite învățarea modelelor rare și pentru a obține selectarea caracteristicilor online.

Această implementare funcționează cu date reprezentate ca matrice numpy dense de valori în virgulă mobilă pentru caracteristici.

Citiți mai multe în Ghidul utilizatorului .

Parametrii pierderi str, implicit = ‘squared_loss’

Funcția de pierdere care trebuie utilizată. Valorile posibile sunt „squared_loss”, „huber”, „epsilon_insensitive” sau „squared_epsilon_insensitive”

„Squared_loss” se referă la cele mai mici pătrate obișnuite. „Huber” modifică „squared_loss” pentru a se concentra mai puțin pe obținerea corectă a valorilor aberante trecând de la pierderea pătrată la cea liniară pe o distanță de epsilon. „Epsilon_insensitive” ignoră erorile mai puțin decât epsilon și este trecut liniar; aceasta este funcția de pierdere utilizată în SVR. „Squared_epsilon_insensitive” este același, dar devine o pierdere pătrată după o toleranță de epsilon.

Mai multe detalii despre formulele de pierdere pot fi găsite în Ghidul utilizatorului .

Pedeapsa (cunoscut și ca termen de regularizare) care va fi utilizat. Valoarea implicită este „l2”, care este regulatorul standard pentru modelele SVM liniare. „L1” și „elasticnet” ar putea aduce raritatea modelului (selectarea caracteristicilor) care nu poate fi realizată cu „l2”.

alfa float, implicit = 0,0001

Constantă care înmulțește termenul de regularizare. Cu cât valoarea este mai mare, cu atât regularizarea este mai puternică. De asemenea, este utilizat pentru a calcula rata de învățare atunci când este setat la learning_rate este setat la „optim”.

l1_ratio float, implicit = 0,15

Parametrul de amestecare a rețelei elastice, cu 0 penalizare este „elasticnet”.

fit_intercept bool, implicit = Adevărat

Dacă interceptarea ar trebui estimată sau nu. Dacă este falsă, se presupune că datele sunt deja centrate.

max_iter int, implicit = 1000

Numărul maxim de treceri peste datele de antrenament (aka epoci). Are impact doar asupra comportamentului în metoda de potrivire și nu în metoda partial_fit.

Nou în versiunea 0.19.

Criteriul de oprire. Dacă nu este Niciuna, antrenamentul se va opri când (pierdere> cel mai bun_loss - tol) pentru n_iter_no_change epoci consecutive.

Nou în versiunea 0.19.

Dacă datele de antrenament trebuie sau nu amestecate după fiecare epocă.

detaliat int, implicit = 0

Nivelul de verbozitate.

epsilon float, implicit = 0,1

Epsilon în funcțiile de pierdere insensibile la epsilon; numai dacă pierderea este „huber”, „epsilon_insensitive” sau „squared_epsilon_insensitive”. Pentru „huber”, determină pragul la care devine mai puțin important să obțineți exact predicția. Pentru epsilon-insensitive, orice diferențe între predicția curentă și eticheta corectă sunt ignorate dacă sunt mai mici decât acest prag.

random_state int, instanță RandomState, implicit = None

Folosit pentru amestecarea datelor, când amestecarea este setată la True. Transmiteți un int pentru ieșire reproductibilă prin apeluri cu funcții multiple. Vezi Glosar .

rata_învățării șir, implicit = ‘invscaling’

Programul ratei de învățare:

‘Constant’: eta = eta0

„Optim”: eta = 1.0/(alfa * (t + t0)) unde t0 este ales de o euristică propusă de Leon Bottou.

„Invscaling”: eta = eta0/pow (t, power_t)

„Adaptiv”: eta = eta0, atâta timp cât antrenamentul scade în continuare. De fiecare dată când n_iter_no_change epoci consecutive nu reușesc să reducă pierderea antrenamentului cu tol sau nu reușesc să mărească scorul de validare cu tol dacă early_stopping este adevărat, rata de învățare curentă este împărțită la 5.

Nou în versiunea 0.20: s-a adăugat opțiunea „adaptivă”

Rata inițială de învățare pentru programele „constante”, „invscaling” sau „adaptive”. Valoarea implicită este 0,01.

putere_t dublu, implicit = 0,25

Exponentul pentru rata de învățare cu scalare inversă.

early_stop bool, implicit = False

Dacă se folosește oprirea timpurie pentru a termina antrenamentul atunci când scorul de validare nu se îmbunătățește. Dacă este setat la True, va anula automat o parte din datele de antrenament ca validare și va termina antrenamentul atunci când scorul de validare returnat de metoda scorului nu se îmbunătățește cu cel puțin tol pentru n_iter_no_change epoci consecutive.

Nou în versiunea 0.20: s-a adăugat opțiunea „early_stopping”

Proporția datelor de instruire care trebuie puse deoparte ca validare stabilite pentru oprirea timpurie. Trebuie să fie între 0 și 1. Se folosește numai dacă early_stopping este True.

Nou în versiunea 0.20: s-a adăugat opțiunea „validation_fraction”

Numărul de iterații fără îmbunătățiri de așteptat înainte de oprirea timpurie.

Nou în versiunea 0.20: s-a adăugat opțiunea „n_iter_no_change”

Când este setat la True, refolosiți soluția apelului anterior pentru a se potrivi ca inițializare, altfel, ștergeți soluția anterioară. Vezi Glosarul .

Apelarea fit sau partial_fit în mod repetat atunci când warm_start este True poate duce la o soluție diferită de cea a apelului fit o singură dată din cauza modului în care datele sunt amestecate. Dacă se utilizează o rată de învățare dinamică, rata de învățare este adaptată în funcție de numărul de eșantioane deja văzute. Apelarea potrivirii resetează acest contor, în timp ce partial_fit va duce la creșterea contorului existent.

in medie bool sau int, implicit = False

Când este setat la True, calculează ponderile SGD medii pentru toate actualizările și stochează rezultatul în atributul coef_. Dacă este setat la un int mai mare de 1, media va începe odată ce numărul total de eșantioane văzute atinge media. Așadar, media = 10 va începe să facă media după ce ați văzut 10 eșantioane.

Atribute coef_ ndarray de formă (n_features,)

Ponderile atribuite caracteristicilor.

intercepta_ ndarray de formă (1,)

Termenul de interceptare.

medie_coef_ ndarray de formă (n_features,)

Ponderile medii atribuite caracteristicilor. Disponibil numai dacă medie = Adevărat .

Învechit de la versiunea 0.23: Atributul average_coef_ a fost depreciat în versiunea 0.23 și va fi eliminat în 1.0 (redenumirea de 0.25).

Termenul mediu de interceptare. Disponibil numai dacă medie = Adevărat .

Învechit de la versiunea 0.23: Atributul average_intercept_ a fost depreciat în versiunea 0.23 și va fi eliminat în 1.0 (redenumirea de 0.25).

Numărul real de iterații înainte de atingerea criteriului de oprire.

t_ int

Numărul de actualizări ale greutății efectuate în timpul antrenamentului. La fel ca (n_iter_ * n_samples) .