Regresiju uzlabošana

Lineārā regresija, kas veikta kā piemērs šajā lapā, demonstrēja, ka pat ar noklusējuma iestatījumiem TableTorch var izveidot modeli ar pieņemamu veiktspēju. Tomēr vai šī veiktspēja varētu būt vēl labāka ar atšķirīgu konfigurāciju? Noskaidrosim.

Turpināsim izmantot transportlīdzekļu datu kopu un mēģināsim prognozēt kolonnas selling_price vērtību.

TableTorch nodrošina divas regresijas opciju sadaļas: apmācības opcijas, kas ietekmē regresijas algoritmu, un izlases opcijas, kas konfigurē sākotnējās datu kopas izlases procesu, sadalot to atsevišķās treniņu/testa kopās, kā arī pēc izvēles izmantojot K-kāršīgo šķērsvalidāciju, kas veic vairākas regresijas un automātiski izvēlas labāko modeli.

Sāksim ar pieejamo apmācības opciju izpēti.

Mācīšanās opcijas

TableTorch regresijas mācīšanās opcijas

  • Std. mērogošana: ja tas ir ieslēgts, tad visas pazīmes un rezultatīvā pazīme tiks standarta mērogotas pirms modeļa apmācīšanas, t.i., regresija darbosies ar vērtībām, kas apstrādātas ar formulu

    v=(v0 - average(V)) / std.dev(V)

    kur v0 ir sākotnējā vērtība un V ir visu pieejamo vērtību kopa.

    Standarta mērogošana ir plaši atzīta prakse lineārām regresijām, un būtībā ir jēga to izslēgt tikai tad, ja sākotnējie dati jau ir mērogoti.

  • Mācīšanās ātrums: ļoti svarīgs parametrs jebkuram gradientu nolaišanās algoritmam, tas nosaka tempu, kādā algoritms maina koeficientus, cenšoties sasniegt konverģenci. Augstākas vērtības var padarīt regresiju ātrāku, bet vairāk pakļautu augšup un lejup lēkāšanai pa noteiktiem līmeņiem. Zemākas vērtības palēnina procesu un var pat novest pie situācijas, kad iterāciju skaits konverģences sasniegšanai būtu nepieņemami liels. Kā vispārīgs noteikums, vai nu 0,01, vai 0,001 darbosies labi vairumā situāciju, bet TableTorch nodrošina arī citas opcijas.

  • Maks. iterācijas: maksimālais iterāciju (epohu) skaits, ko veikt regresijas laikā. Parasti nav jēgas mainīt šo parametru, jo noklusējuma 100 ir diezgan liels skaits, un regresija tik un tā apstāsies, kad pēdējo dažu iterāciju uzlabojums būs mazāks par 1E-6 (0,000001) no relatīvās kļūdas.

  • Mācību ātruma grafiks: ja nav konstants, samazina mācīšanās ātrumu atbilstoši pēc katras epohas. Tas varētu ļaut regresijai uztvert ļoti smalku datu signālu.

  • Rezultatīvās pazīmes pārveidošana: ja nelineārs, pārveido rezultatīvo pazīmi pirms no tās mācīšanās. Tas ļauj veikt lineārās regresijas uz rezultatīvām pazīmēm, kurām nav lineāras atkarības no neatkarīgajiem mainīgajiem, neievadot papildu kolonnas.

    a) Eksponenciālā variants pieņem, ka rezultatīvā pazīme ir eksponenciāli atkarīga no atlasītajām pazīmēm un mēģinās prognozēt e pakāpi, nevis lineāru vērtību.

    b) Loģistiskā variants pieņem, ka rezultatīvā pazīme ir diapazonā [0; 1] un apzīmē rindas bināru klasifikāciju, kas pieder noteiktai klasei vai notikumam. Ieteicams izmantot TableTorch loģistiskās regresijas rīku, nevis šo opciju, jo tas arī izveidoš noderīgāku kopsavilkumu.

  • Svars: ja norādīts, tad regresija izmanto svērtās mazāko kvadrātu metodi, nevis parastās mazākās kvadrātas. Praksē kolonna, kas norādīta kā svars, ietekmē mācīšanās ātrumu katrai konkrētai rindai un var tikt izmantota, lai izslēgtu vai samazinātu izlecošo rindu ietekmi.

Iestatīsim Rezultatīvās pazīmes pārveidošana uz Eksponenciālā un veiksim regresiju vēlreiz.

selling_price regresijas kopsavilkums ar eksponenciālu transformāciju

Pārsteidzoši, gan , gan MAE rādītāji ir uzlabojušies dramatiski, sasniedzot 0,75 un MAE gandrīz uz pusi samazinoties līdz 136 000.

Tas varētu liecināt, ka patiešām pastāv eksponenciāla attiecība starp selling_price un transportlīdzekļa pazīmēm. Tomēr transportlīdzekļu datu kopā trūkst tādu pazīmju kā ekonomiskā inflācija vai uzkrātā transportlīdzekļa nolietojuma likme, tāpēc varētu būt pāragri izdarīt secinājumu par atkarības raksturu starp transportlīdzekļa pazīmēm un selling_price.

Atgriezīsimies uz mirkli un pārslēgsim Rezultatīvās pazīmes pārveidošana atpakaļ uz Nav (lineāra), lai izpētītu izlases opcijas.

Izlases opcijas

TableTorch, izlases opcijas

  • Uzlabotas izlašu sadalīšanas opcijas: atzīmējiet, ja vēlaties precīzāk norādīt treniņa daļu treniņu/testu sadalījumam vai k-kārtīgai šķērsvalidācijai.
  • Izlases sadalīšana: visbiežāk izmantoto datu kopas sadalīšanas metožu kopa regresijām:

    a) Apmācība-validācija 50/50: sadala datu kopu tā, ka tikai 50% datu tiek izmantoti treniņam.

    b) Apmācība-validācija 80/20: tas pats kā (a), bet ar lielāku datu daļu, kas tiek izmantota treniņam.

    c) 3 reižu savstarpēja validācija: sadala datu kopu trīs vienāda lieluma izlasēs A, B un C, un pēc tam veic trīs dažādas regresijas: pirmā trenēta uz izlasēm (A, B) un validēta uz izlases C, otrā trenēta uz izlasēm (B, C) un validēta uz izlases A, trešā trenēta uz izlasēm (A, C) un validēta uz izlases B, pēc tam izvēlas modeli ar augstāko .

    d) 5 reižu savstarpēja validācija un 10 reižu savstarpēja validācija: vispārīgi tas pats kā (c), bet ar lielāku kāršu skaitu, t.i., veicamo regresiju skaitu.

  • Stratum: ļauj izvēlēties kolonnu, kas identificē stratu, kurai rinda pieder.

  • Stratifikācija: ja ir atlasīta viena no sadalīšanas opcijām, ir iespējams atlasīt vienu no stratifikācijas stratēģijām:

    a) Nav: rindas nonāk katrā sadalījumā uz nejaušības pamata.

    b) Proporcionāla: katra strata ir pārstāvēta katrā sadalījumā tādā pašā proporcijā, kāda tai bija visā datu kopā.

    c) Vienota: visām stratām ir vienāds rindu skaits katrā sadalījumā. Ja izlase ar nomaiņu ir atspējota, rindu skaitu nosaka rindu skaits mazākajā stratā. Pretējā gadījumā rindu skaitu nosaka rindu skaits lielākajā stratā. Tādējādi parasti ir jēga iespējot nomaiņu stratificētās vienmērīgās izlases gadījumā.

  • Izlase ar nomaiņu: ja iespējots, katra sadalījuma izlase tiks veikta ar nomaiņu, t.i., būs varbūtība, ka tā pati rinda parādīsies sadalījumā divas reizes. Tas ir īpaši noderīgi nelīdzsvarotām datu kopām, kurās konkrēta strata ir nepietiekami pārstāvēta. Ar nomaiņu ir iespējams izmantot nejaušu vienmērīgu stratifikāciju un izvairīties no signāla zuduma, kas saistīts ar mazu rindu skaitu.

Veiks selling_price regresiju vēlreiz ar izlases sadalīšanas opciju iestatītu uz 3 reižu savstarpēja validācija.

selling_price regresijas kopsavilkums 3-kāršīgi šķērsvalidētai regresijai

Interesanti, ir ievērojami uzlabojies, sasniedzot 0,83, savukārt MAE ir palielinājies līdz aptuveni 283 000. Tas var šķist mulsinoši, jo tas norāda, ka modelis tagad, iespējams, uztver dispersiju labāk, lai gan vidējā absolūtā kļūda ir palielinājusies.

Tomēr jāatceras, ka šie rezultāti tika sasniegti, trenējoties tikai uz divām trešdaļām datu. Tas nozīmē, ka šis modelis ir parādījis noturību pret datiem, ko tas neredzēja apmācības procesa laikā. Tas ir galvenais iemesls, kāpēc bieži izmantota prakse ir veikt K-kāršīgo šķērsvalidāciju praktiski jebkurā gadījumā, jo tā aizsargā modeli pret pārmērīgu apmācību.

Pazīmju inženierija

Transportlīdzekļu datu kopas sagatavošanas procesā mēs jau esam modificējuši datu kopu, lai pārvērstu teksta informāciju skaitliskos datos. Tomēr mēs neieviesām nekādas palīgpazīmes, kas varētu palīdzēt regresijai.

Turklāt mēs nepievērsām daudz uzmanības datu kopas korelācijas matricai, lai gan tā varētu būt būtiska, lai izslēgtu ļoti korelētus mainīgos no regresijas.

Korelācijas matricas rīks izveido šādu matricu datu kopai:

Pilna korelācijas matrica transportlīdzekļu datu kopai

Koeficienti parāda, ka dažas kolonnas var izslēgt no selling_price kolonnas regresijas:

  1. max torque max RPM tās augstās korelācijas dēļ ar max torque min RPM un niecīgās korelācijas ar selling price.
  2. petrol tās ļoti nozīmīgās korelācijas ar diesel dēļ.
  3. engine cc tās korelācijas ar max power bhp dēļ, kur pēdējam ir augstāka korelācija ar selling_price.

Atcelēsim kolonnu max torque max RPM, petrol, and engine cc atlasi pirms regresijas veikšanas.

Atlasiet tikai nozīmīgās regresijas kolonnas

Iespējojiet 3-kāršīgo šķērsvalidāciju un noklikšķiniet Apmāciet modeli, lai veiktu regresiju.

selling_price regresijas kopsavilkums 3-kāršīgi šķērsvalidētai regresijai

Regresijas veiktspēja ne uzlabojās, ne pasliktinājās, kas ir labs zīme: jo mazāk pazīmju, lai izveidotu tādas pašas kvalitātes modeli, jo labāk.

Tagad mēģināsim hipotizēt, kādas papildu pazīmes varētu atvasināt no mainīgajiem, kas jau ir klāt, veidā, kas palīdzētu regresijai izskaidrot dispersiju rezultatīvajā pazīmē.

gada strata

Ja apskatām rindu skaitu vienam year, izrādās, ka ir daudz gadu ar tikai dažiem ierakstiem.

Diagramma: rindu skaits vienam gadam, transportlīdzekļu datu kopa

Varētu būt jēga grupēt ierakstus tikai dažās kohortās vai stratās:

  • 1-3 gadi (year >= 2018);
  • 4-8 gadi (AND(year >= 2013, year < 2018));
  • 9-15 gadi (AND(year >= 2006, year < 2013);
  • vairāk nekā 15 gadi veci (year < 2006).

Ievietosim kolonnu year stratum tieši pēc year (L) kolonnas ar formulu:

=IFS(L2 >= 2018, "2018-2020", L2 >= 2013, "2013-2017", L2 >= 2006, "2006-2012", TRUE, "Older than 2005")

Ievērojiet, ka šai kolonnai ir teksta vērtība, nevis skaitliska. Tas ir pareizi, tā netiks tieši izmantota regresijā, bet gan palīdzēs atvasināt citas pazīmes un arī tiks izmantota stratificētā vienmērīgā nejaušā izlasē.

year stratum kolonnas piemērs

Inflācijas un nolietojuma ņemšana vērā

Ņemot vērā, ka transportlīdzekļiem ir tendence pasliktināt savu stāvokli ar vecumu un ka jaunajiem modeļiem tiek pievienotas arvien brīnišķīgākas jaunas funkcijas, ir saprātīgi ieviest sava veida inflāciju + nolietojumu pazīmi, lai novērtētu šo parādību vidējo ietekmi uz konkrētu rindu.

Viena iespēja to izdarīt būtu ieviest papildu datus datu kopā, kas pārstāv uzkrāto transportlīdzekļa cenu inflāciju noteiktā gadā, kā arī nolietojuma likmi konkrētam modelim. Tomēr dažkārt papildu dati var nebūt viegli pieejami vai to iegūšana varētu radīt papildu izmaksas.

Tādējādi izmantosim citu opciju: average price of year (O) kolonnu. Tās formula vienkārši apkops vidējo cenu visiem transportlīdzekļiem, kas ražoti noteiktā gadā. Tā kā ir mazāk par 100 ierakstiem gadā gadiem, kas ir mazāki par 2006, tiem izmantosim “Older than 2005” stratas vidējo cenu. Ņemiet vērā, ka šādas pazīmes ieviešana ir datu noplūdes forma, ko mēs apspriedīsim vēlāk šajā lapā.

=IF(L2 <= 2005, AVERAGEIF($M$2:$M$8129, "Older than 2005", $N$2:$N$8129), AVERAGEIF($L$2:$L$8129, L2, $N$2:$N$8129))

average price of year kolonnas piemērs

depreciated max power bhp (AG)

Visās selling_price regresijās, kas līdz šim veiktas, visnozīmīgākais koeficients ir bijis nemainīgi piešķirts max power bhp pazīmei.

Regresijas koeficienti pirms pazīmju inženierijas

Tomēr, tā kā automašīnas veiktspēja degradējas ar laiku, 100 bhp specifikācija automašīnai, kas ražota 2000. gadā, var nenozīmēt jaudu, kas identiska automašīnai, kas ražota 2020. gadā ar to pašu bhp rādītāju.

Iespējamais veids, kā koriģēt max power bhp pazīmi mūsu gadījumā, ir to reizināt ar average price of year un pēc tam dalīt ar maksimālo average price of year. Šīs pazīmes nozīme būtu max power bhp uztvertā vērtība automašīnai ar konkrētu vecumu.

=AG2 * O2 / MAX($O$2:$O$8129)

depreciated max power bhp kolonnas piemērs

Modeļa apmācīšana ar jaunām pazīmēm

Korelācijas matrica attiecībā uz selling_price, year un atvasinātām pazīmēm izskatās šādi:

Korelācijas matrica attiecībā uz atvasinātām pazīmēm

Labā ziņa ir, ka depreciated max power bhp kolonnai ir augstāks korelācijas koeficients ar selling_price nekā neskarotajai max power bhp. Turklāt average price of year arī ir korelēts ar selling_price nozīmīgāk nekā vienkāršāka year kolonna.

Pievienosim šīs jaunās pazīmes regresijai, vienlaikus noņemot kolonnas year un max power bhp no tās. Kolonnām max torque max RPM, petrol, un engine cc arī jābūt neatzīmētām pazīmju sarakstā, kā tika apspriests iepriekš. Turklāt 3 reižu savstarpēja validācija iestatījumam arī jābūt iespējotam.

Tagad, kad ir arī year stratum kolonna, tā jāiestata kā stratas kolonna, un stratifikācija jāiestata uz vienota. Tas nodrošinās, ka katra kārta satur tieši vienādu rindu skaitu no katras stratas, samazinot modeļa neobjektivitāti pret jaunākiem vai vecākiem transportlīdzekļiem.

Visa regresijas konfigurācija ir parādīta zemāk.

Uzlabotās lineārās regresijas konfigurācijas piemērs

Noklikšķiniet uz pogas Apmāciet modeli, lai veiktu regresiju.

Uzlabotās lineārās regresijas kopsavilkuma piemērs

Fascinējoši, gandrīz kļuva tik labs, cik tas varētu būt, ar 0,99. Gan RMSE, gan MAE kļūst ievērojami zemāki nekā regresijā ar noklusējuma iestatījumiem un bez jebkādām atvasinātām pazīmēm.

Turklāt, ja ievietojam prognozes kolonnu un relative error kolonnu =ABS((AP2 - N2) / N2) (kur N ir selling_price un AP2 ir prediction) un pēc tam kārtojam pēc relative error, varam redzēt, ka 19% rindu prognozes kļūda ir 10% vai mazāka no novērotās selling_price, un mediānas relatīvā kļūda ir aptuveni 28,8%.

Datu noplūde

Jāatzīmē, ka pazīmes atvasināšana no atkarīgā mainīgā, kā mēs izdarījām ar average price of year kolonnu, ievieš datu noplūdi. Tā ir situācija, kad rezultatīvā pazīme tiek prognozēta, pamatojoties uz datiem, kas satur pati sevi. Tas var sarežģīt vai pat padarīt neiespējamu modeļa izmantošanu uz jauniem datiem.

Average price of year, piemēram, varētu pārvietot uz atsevišķu diapazonu, un jauniem datiem mēs varētu izmantot LOOKUP funkciju, lai iegūtu pazīmes vērtību, jo AVERAGEIF nebūs praktisks, jo nav novērotu vērtību selling_price. Tomēr, ja sastopamies ar rindu, kurai ir year vērtība, kas netika novērota modeļa treniņa laikā, būtu neiespējami atrast atbilstošu average price of year, un būtu jāizmanto labākais pieņēmums, piemēram, atrodot vērtību tuvākajam gadam.

Tādējādi uzlabotie uzlabotā modeļa rādītāji jāvērtē piesardzīgi: tas var nedarboties tik labi prognozes laikā, ja dažas no atvasinātajām pazīmēm nevar uzticami iegūt.

Secinājums

Mēs mēģinājām demonstrēt, ka opcijas, ko TableTorch nodrošina regresijas procesa uzlabošanai kopā ar nedaudz pazīmju inženierijas, var izveidot noturīgāku un uzticamāku modeli nekā tikai noklusējuma iestatījumu izmantošana. Nav robežu pilnveidei, un ir vairāk ko darīt ar transportlīdzekļu datu kopas modelēšanu.

Viens veids, kā uzlabot modeli, faktiski varētu būt uzdot tam citu jautājumu. Piemēram, tā vietā, lai mēģinātu prognozēt precīzu selling_price vērtību, mēs varētu mēģināt prognozēt, vai tas pārdotos par cenu, kas augstāka par noteiktu slieksni vai nē. TableTorch nodrošina piemērotu rīku, lai apmācītu modeli, kas specializējas šajos jautājumu veidos, loģistisko regresiju.

Skatīt arī Vikipēdijā (angļu valodā):

Google, Google Izklājlapas, Google Workspace un YouTube ir Google LLC preču zīmes. Gaujasoft TableTorch nav saistīts ar Google un to neveicina Google.

Pasakiet mums!

Paldies, ka izmantojat vai apsverot izmantot TableTorch!

Vai šī lapa precīzi un atbilstoši apraksta attiecīgo funkciju? Vai tā patiešām darbojas tā, kā šeit izskaidrots, vai arī ir kāda problēma? Vai jums ir kādi ieteikumi, kā mēs varētu uzlaboties?

Lūdzu, paziņojiet mums, ja jums ir kādi jautājumi.