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
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()
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")