Uuden päivän myötä tulee uutta voimaa ja uusia ajatuksia – Eleanor Roosevelt

We kaikki olemme ehkä kohdanneet tämän ongelman, joka liittyy siihen liittyvien piirteiden tunnistamiseen aineistosta ja epäolennaisten tai vähemmän tärkeiden piirteiden poistamiseen, jotka eivät vaikuta paljon kohdemuuttujaamme, jotta mallimme tarkkuus olisi parempi.

Ominaisuuksien valinta on yksi koneoppimisen keskeisistä käsitteistä, joka vaikuttaa valtavasti mallisi suorituskykyyn. Datan ominaisuuksilla, joita käytät koneoppimismallien kouluttamiseen, on valtava vaikutus saavutettavaan suorituskykyyn.

Epäolennaiset tai osittain olennaiset ominaisuudet voivat vaikuttaa negatiivisesti mallin suorituskykyyn.

Ominaisuuksien valinnan ja datan puhdistuksen tulisi olla ensimmäinen ja tärkein vaihe mallin suunnittelussa.

Tässä postauksessa tutustut ominaisuuksien valintatekniikoihin, joita voit käyttää koneoppimisessa.

Ominaisuuksien valinta on prosessi, jossa valitset automaattisesti tai manuaalisesti ne ominaisuudet, jotka vaikuttavat eniten ennustemuuttujaan tai tulokseen, josta olet kiinnostunut.

Epäolennaisten ominaisuuksien esiintyminen datassasi voi heikentää mallien tarkkuutta ja saada mallisi oppimaan epäolennaisten ominaisuuksien perusteella.

Miten ominaisuuksia valitaan ja mitä hyötyjä ominaisuuksien valinnan suorittaminen tuo mukanaan ennen datan mallintamista?

– Vähentää ylisovittamista: Vähemmän turhaa dataa tarkoittaa vähemmän mahdollisuuksia tehdä päätöksiä kohinan perusteella.

– Parantaa tarkkuutta: Vähemmän harhaanjohtavaa dataa tarkoittaa, että mallinnustarkkuus paranee.

– Vähentää harjoitteluaikaa: Vähemmän datapisteitä vähentää algoritmin monimutkaisuutta ja algoritmit harjoittelevat nopeammin.

Tahdon jakaa henkilökohtaisen kokemukseni tästä.

Valmistin mallin valitsemalla kaikki piirteet ja sain noin 65%:n tarkkuuden, mikä ei ole aika hyvä ennustavalle mallille, ja sen jälkeen kun olin tehnyt piirteiden valintaa ja piirteiden suunnittelua tekemättä mitään loogisia muutoksia mallin koodiin, tarkkuuteni hyppäsi 81%:iin, mikä on aika vaikuttavaa

Nyt tiedät, miksi sanon, että piirteiden valinnan pitäisi olla mallin suunnittelun ensimmäinen ja tärkein vaihe.

Ominaisuuksien valintamenetelmät:

Jaan 3 ominaisuuksien valintatekniikkaa, jotka ovat helppokäyttöisiä ja antavat myös hyviä tuloksia.

1. Univariate Selection

2. Feature Importance

3. Feature Importance

.Correlation Matrix with Heatmap

Katsotaanpa näitä tekniikoita yksi kerrallaan esimerkin avulla

Voit ladata datasetin täältä https://www.kaggle.com/iabhishekofficial/mobile-price-classification#train.csv

Muuttujien kuvaukset yllä olevassa tiedostossa

battery_power: Kokonaisenergia, jonka akku voi varastoida kerralla mitattuna mAh:ssa

blue: Onko Bluetooth tai ei

clock_speed: nopeus, jolla mikroprosessori suorittaa käskyjä

dual_sim: Onko dual sim -tuki tai ei

fc: Etukameran megapikseli

four_g: On 4G tai ei

int_memory: Sisäinen muisti gigatavuina

m_dep: Mobiilin syvyys cm:nä

mobile_wt: Matkapuhelimen paino

n_cores: Prosessorin ytimien lukumäärä

pc: Ensisijaisen kameran megapikseli

px_height

Pikseliresoluution korkeus

px_width: Pikseliresoluution leveys

ram: Random Access Memory megatavuina

sc_h: Kännykän näytön korkeus cm:nä

sc_w: Kännykän näytön leveys cm:nä

talk_time: pisin aika, jonka yksi akun lataus kestää, kun olet

three_g: Onko 3G vai ei

touch_screen: Onko kosketusnäyttö vai ei

wifi: Onko wifi vai ei

price_range:

1: Tämä on kohdemuuttuja, jonka arvo on 0(alhainen hinta), 1(keskihintainen hinta), 2(korkea hinta) ja 3(erittäin korkea hinta).

1. Univariate Selection

Tilastollisia testejä voidaan käyttää niiden piirteiden valitsemiseen, joilla on vahvin yhteys lähtömuuttujaan.

Scikit-learn-kirjastossa on SelectKBest-luokka, jota voidaan käyttää erilaisten tilastollisten testien kanssa tietyn määrän piirteiden valitsemiseen.

Alle seuraavassa esimerkissä käytetään khiin neliö -tilastotestiä (chi-Quadri (chi²)) einegatiivisille piirteille, jotta saadaan valittua 10 parhaan mukaista piirrettä Mobiilin hinnan vaihteluvälien ennustaminen -datakokonaisuudesta.

import pandas as pd
import numpy as np
from sklearn.feature_selection import SelectKBest
from sklearn.feature_selection import chi2data = pd.read_csv("D://Blogs//train.csv")
X = data.iloc #independent columns
y = data.iloc #target column i.e price range#apply SelectKBest class to extract top 10 best features
bestfeatures = SelectKBest(score_func=chi2, k=10)
fit = bestfeatures.fit(X,y)
dfscores = pd.DataFrame(fit.scores_)
dfcolumns = pd.DataFrame(X.columns)
#concat two dataframes for better visualization
featureScores = pd.concat(,axis=1)
featureScores.columns = #naming the dataframe columns
print(featureScores.nlargest(10,'Score')) #print 10 best features

Top 10 parasta ominaisuutta SelectKBest-luokan avulla

Ominaisuuden tärkeys

Mallin ominaisuuden tärkeyden ominaisuuden ominaisuuden tärkeys ominaisuuden tärkeys ominaisuuden tärkeys ominaisuuden tärkeys ominaisuuden tärkeys ominaisuuden tärkeys ominaisuuden tärkeys ominaisuuden tärkeys ominaisuuden tärkeys ominaisuuden tärkeys ominaisuuden tärkeys ominaisuuden tärkeys ominaisuuden tärkeys ominaisuuden tärkeys ominaisuuden tärkeys ominaisuuden tärkeys ominaisuuden tärkeys ominaisuuden tärkeys ominaisuuden tärkeys ominaisuus.

Feature importance antaa pisteytyksen jokaiselle aineistosi piirteelle, ja mitä korkeampi pistemäärä on, sitä tärkeämpi tai merkityksellisempi piirre on tulomuuttujasi kannalta.

Feature importance on sisäänrakennettu luokka, joka tulee Tree Based Classifiers -luokittelijoiden mukana, käytämme Extra Tree Classifier -luokittelijaa 10 tärkeimmän ominaisuuden poimimiseen aineistosta.

import pandas as pd
import numpy as np
data = pd.read_csv("D://Blogs//train.csv")
X = data.iloc #independent columns
y = data.iloc #target column i.e price range
from sklearn.ensemble import ExtraTreesClassifier
import matplotlib.pyplot as plt
model = ExtraTreesClassifier()
model.fit(X,y)
print(model.feature_importances_) #use inbuilt class feature_importances of tree based classifiers
#plot graph of feature importances for better visualization
feat_importances = pd.Series(model.feature_importances_, index=X.columns)
feat_importances.nlargest(10).plot(kind='barh')
plt.show()

top 10 tärkeintä piirrettä datassa

3.Korrelaatiomatriisi lämpökartalla

Korrelaatio kertoo, miten piirteet liittyvät toisiinsa tai kohdemuuttujaan.

Korrelaatio voi olla positiivinen (yhden piirteen arvon nousu lisää kohdemuuttujan arvoa) tai negatiivinen (yhden piirteen arvon nousu vähentää kohdemuuttujan arvoa)

Heatmapin avulla on helppo tunnistaa, mitkä piirteet liittyvät eniten kohdemuuttujaan, piirretään lämpökartta korreloituneista piirteistä käyttäen seaborn-kirjastoa.

import pandas as pd
import numpy as np
import seaborn as snsdata = pd.read_csv("D://Blogs//train.csv")
X = data.iloc #independent columns
y = data.iloc #target column i.e price range
#get correlations of each features in dataset
corrmat = data.corr()
top_corr_features = corrmat.index
plt.figure(figsize=(20,20))
#plot heat map
g=sns.heatmap(data.corr(),annot=True,cmap="RdYlGn")

Vastaa

Sähköpostiosoitettasi ei julkaista.