A Kozmosz egy érdekes tér a megfigyelésre és elemzésre, minden eddig felfedezett tudomány fellegvára. A galaxisok a bányák hatalmas adathalmazokkal, amelyek csak ott hevernek, hogy felfedezzék őket ebben a végtelen térben. A fenti kép a Hubble űrteleszkóp 1 millió másodperces expozíciójának eredménye, amely feltárta a legkorábbi Hubble Ultra Deep Field nevű galaxisokat. A fényképen látható minden csillagszerű objektum valójában egy egész galaxis.

Az első galaxist egy perzsa csillagász, Abd al-Rahman figyelte meg több mint 1000 évvel ezelőtt, és először azt hitték, hogy egy ismeretlen kiterjedt szerkezet. amely ma a Messier-31 vagy a hírhedtAndroméda galaxis néven ismert. Ettől kezdve ezeket az ismeretlen struktúrákat gyakrabban figyelik meg és rögzítik, de több mint 9 évszázadba telt, mire a csillagászok egyetértettek abban, hogy ezek nem egyszerűen csillagászati ​​objektumok, hanem egész galaxisok. Amint e galaxisok felfedezésének száma növekedett, a csillagászok megfigyelték az eltérő morfológiákat. Ezután elkezdték csoportosítani a korábban közölt és az újonnan felfedezett galaxisokat a morfológiai jellemzők szerint, amelyek később jelentős osztályozási sémát alkottak.

Modern fejlesztések

A csillagászat ebben a mai korban a számítástechnika fejlődésével párhuzamosan hatalmas fejlődésen ment keresztül az évek során. A kifinomult számítási technikák, mint például a gépi tanulási modellek, sokkal hatékonyabbak a számítógépek jelentősen megnövekedett teljesítményének és a jelenleg rendelkezésre álló hatalmas adatmennyiségnek köszönhetően. Évszázadokkal ezelőtt az ehhez hasonló osztályozási feladatokat kézzel végezték emberek hatalmas csoportjával, az eredményeket keresztellenőrzéssel és kollektív utólagos megállapodással értékelve.

Miért döntöttem úgy, hogy ezen az adatokon dolgozom?

Nemrég kezdtem el foglalkozni az elméleti mélytanulási koncepciókkal, és szerettem volna az első gyakorlati megközelítésemet, hogy technikailag alkalmazzam ezeket a fogalmakat egy olyan feladatra, amelyet szenvedély vezérel, de még mindig kiemelkedő és összefügg a neurális hálózatok tanulásának alapvető kísérletével.

Adatgyűjtés

A Galaxy Zoo projekt változatos égbolt-felmérési adatkatalógusokat adott online a csillagászok számára szerte a világon, akik hozzáférhetnek, tanulmányozhatják és elemezhetik az adatokat. Ehhez az osztályozási feladathoz az osztályokat nagyon jól meghatározó jellemzőkkel ragadtam meg az adatokat. A funkció leírásához [METADATA].

Az osztályozási séma

A A Hubble hangvilla a leghíresebb osztályozási séma, Edwin Hubble három fő típusra osztotta a galaxisokat az egyszerűsítés érdekében, ezek elliptikus, spirális és egyesülési osztályok.

Az elliptikus galaxisok sima, gömb alakúak, kevés belső szerkezettel. Egy gömb alakú dudor uralja őket, és nincs kiemelkedő vékony korongjuk. A spirálgalaxisok mindegyike spirálkarokat mutat. A harmadik osztály, az egyesülési galaxisok szabálytalan megjelenésűek, amelyeket gyakran kaotikus megjelenésként írnak le, valószínűleg két galaxis ütközésének maradványai, amint azt a A ködök birodalma ismerteti.

Mélyrelépés a neurális hálózatokba

A csillagászati ​​adatok,az adatok kiolvasása a lapos fájlból,

A teljes adat dimenziója a (sor, oszlop )-alakzatban (667944, 13)

Adatok előfeldolgozása

Az első oszlop nincs hatással ennek az osztályozási modellnek a végső teljesítményére, mert egyáltalán nincs korrelációban az osztályokkal, az OBIJD egy egyedi azonosító, amelyet az adatkészletben egy adott érdekes objektumhoz használnak. , az RA ( Right Ascension ) és a Dec ( Deklináció ) másrészt ezen érdekes objektumok abszolút pozícióit rögzítik, amelyek szintén minden adatpontra egyediek, így a 3 oszlop jobb lenne, a nagyobb pontosság érdekében. megtehetjük, ha

data = data.drop([‘OBJID’,’RA’,’DEC’],axis=1)

keresse a Null értékeket és a NaN-eket,

Mivel ez egy osztályozási feladat, ellenőriznünk kell az osztálykiegyensúlyozatlanságot. Egy olyan adatkészletben, ahol osztályozási feladatot hajtunk végre, még akkor is, ha annak bináris, osztálykiegyensúlyozatlansága jelentős hatással lehet. a képzési szakaszban, és végül a pontosságon. Az érték_számok ábrázolásához a három osztályú oszlopokhoz ezt a következő kódrészlettel tehetjük meg.

plt.figure(figsize=(10,7))
plt.title('Count plot for Galaxy types ')
countplt = data[['SPIRAL','ELLIPTICAL','UNCERTAIN']]
sns.countplot(x="variable",hue='value', data=pd.melt(countplt))
plt.xlabel('Classes')

A cselekményből arra következtetve, hogy az 1-eseket figyelembe véve osztályegyensúlytalanság van az osztályok között, de ez nem olyan feltűnő különbség, amely bármilyen hatással lenne a modell teljesítményére,tekintve, hogy Egyben vannak. -Hot Encodingformátum, így nyilván a 0-k több számban lesznek. Az osztályozási feladatokkal kapcsolatos tipikus munkafolyamatom része az egyensúlyhiány ellenőrzése, szerintem ez egy jó gyakorlat. ( Megjegyzés, a fenti diagramból csak az 1-eseket vesszük figyelembe, mivel az 1 határozza meg a jellemzők halmazának osztályát, és 0 az összes többi, azonos jellemzőkkel rendelkező osztálynál )

Normalizálás és train_test_split

from sklearn.model_selection import train_test_split
from sklearn.preprocessing import MinMaxScaler
X = data.drop(['SPIRAL','ELLIPTICAL','UNCERTAIN'],axis=1).values
y = data[['SPIRAL','ELLIPTICAL','UNCERTAIN']].values
X_train,X_test,y_train,y_test = train_test_split(X,y,test_size=0.2,random_state=101)
scaler = MinMaxScaler()
X_train = scaler.fit_transform(X_train)
X_test = scaler.transform(X_test)

Bármely gépi tanulási modell számára az adatokból való tanulás hagyományos módszere az eredeti adatok képzési készletekre és tesztelési készletekre való felosztása, ahol a felosztási százalékok 80%-os képzési és 20%-os tesztelési készletek. és a teljes adatkészletnek legalább 1000 adatponttal kell rendelkeznie, hogy elkerüljük a túlillesztést, és egyszerűen megnöveljük bármely modell tanulási időszakát.

Neurális hálózat példányosítása és hiperparaméterek beállítása

from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense

A Sequential a Kerasban lehetővé teszi számunkra, hogy a többrétegű Perceptron modellt a semmiből állítsuk elő. Hozzáadhatunk minden réteghez egy egységszámot a Dense függvény paramétereként, ahol minden egységszám sok sűrűn kapcsolódó neuronra utal.

model = Sequential()

# Input Layer
model.add(Dense(10,activation='relu’))
# Hidden Layer
model.add(Dense(5,activation='relu’))

# Output Layer
model.add(Dense(3, activation = 'softmax'))

model.compile(optimizer='adam',loss='categorical_crossentropy',metrics=['accuracy’])

Magyarázat,

Az én neurális hálózatom elrendezése 10–5–3, 10 bemeneti neuron, mivel 10 jellemzőoszlopunk van, 3 kimeneti neuronunk, mert 3 kimeneti osztályunk van, a közöttük lévő minden tetszőlegesen van kiválasztva, a közöttük lévő 5 csomópontot együttesen nevezzük Rejtett rétegre.

Minden neuron/perceptron összetett számítást végez, amelyet egy aktiválási függvény követ. Az én esetemben a legáltalánosabb aktiválást, a ReLu-t használtam ( Rektifikált lineáris egység) és az utolsó három kimeneti neuron esetében az aktiválás Softmax, amely a három valószínűségi eloszlását adja vissza. osztályok.

Az Adam Optimizer segítségével hatékony színátmenetet érhetünk el, azaz a korlátos súlyok optimális minimumát, és a hagyományos veszteségfüggvényt, amelyet több- osztály Az osztályozási feladat a Categorical_crossentropy. A valós idejű kiértékelés mérőszáma a pontosság minden osztályozási feladatnál.

Az alábbiakban a fenti szekvenciális beállítás elméleti modellleírása olvasható.

A modell bevezetése

start = time.perf_counter()
model.fit(x=X_train,y=y_train,epochs=20)
print('\nTIME ELAPSED {}Seconds'.format(time.perf_counter() - start))

Megjegyzés, az eltelt idő eltérő lesz a különböző számítógép-konfigurációknál, és teljesen opcionális az eltelt idő kiszámítása, csak azért tettem meg, mert kíváncsi voltam, hogy mennyi ideig tart az összes korszakban. >

Az ábrázolás pontossága minden korszakban

Ebből a pontossági diagramból arra következtethetünk, hogy egy bizonyos korszak után, azaz hozzávetőlegesen a 6. korszaktól kezdve a pontosság az összes többi korszakban állandó maradt. (Egyetlen korszak azt jelenti, hogy 1 teljes ciklus a teljes képzési készleten keresztül)

Az elért modell pontossága 0,90, azaz 90%

Osztályozási jelentés

Javítás?

A kifinomultan strukturált jellemzőadatok minden Machine Learning/Deep Learning modellnél kiemelkedően fontosak, minél több meghatározó tulajdonság van egy adott célosztályhoz, annál több lesz a várható teljesítmény. A Feature Engineering minden adatelemzési feladat leglényegesebb szakasza, de nem lehet hatékonyan elvégezni a jellemzők kinyerését anélkül, hogy nincs tartományi ismerete az általa kezelt feladatról/adatokról, és nem létezik a tulajdonságok korrelációjának ismerete. A funkciótervezést minden gépi tanulásban mindig fontos végrehajtani, hogy a meglévők matematikai összehasonlításával több szolgáltatást lehessen levezetni. Az alapvető megközelítés lehet csupán az adatok korrelációs mátrixának megtekintése és a jellemzőoszlopok további vizsgálata azok korrelációs trendjei alapján. Nos, ez a Core Astronomical Data néhány jellemzővel, amelyeket nem is tudok értelmezni. Ha csillagászati ​​háttérrel rendelkeznék, hogy tanulmányozhassam, rendszerezzem és további funkciókat adjak hozzá, akkor biztos lenne, hogy ez a modell sokkal jobban teljesít, mint amilyen volt.

Mindig a lehetetlen legyőzésének képességével határoztuk meg magunkat.

A forráskódért látogasson el a GitHubomba, ahol integráltam ezt a feladatot a többi számítástechnikai csillagászati ​​koncepcióval, amelyen dolgoztam, úgy hívom, hogy A számítási csillagászat anekdotája~ GitHub

Ui. Ez az első blogbejegyzésem, szeretném kialakítani azt a szokást, hogy bármit leírok, amit tapasztalok, miközben sodródok az időben.

Hivatkozások :







Edwin Powell Hubble, A ködök birodalma.