A hipersík a hipertér 1 dimenzióval kevesebb dimenziójú altere. Lényegében egy olyan sík, ami két részre osztja a teret. Gépi tanulás során lényegében minden lineáris osztályozás alapja a hipersík, ezért érdemes egy kicsit átnézni, hogy is dolgozhatunk vele Pythonban.
A hipersík definiálása
Nézzünk egy egyszerű két dimenziós példát. Ugye ezt a teret egy vonallal lehet kétfelé osztani, valahogy így:

A fenti ábra alapján logikus, ahhoz, hogy definiáljuk e hipersíkot, lényegében az egyenest kell definiálni. Amit két lépésben teszünk meg. Először is definiáljuk az egyenes meredekségét, jelöljük ezt -val. Ez ugye egy olyan egyenest add nekünk ami az origón megy keresztül. A második lépésben ezt az egyenest kell eltolnunk a kívánt pozícióba. Jelöljük ezt az eltolást
-val. Innen könnyű általánosítani, hogy
-val egy d dimenziós térben egy d dimenziós vektor lesz, így:
(1)
A ezzel szemben mindig egy skalár. Ezt Pythonban így definiáljuk:
import numpy as np # hipersík egy 3D térben theta = np.array([2,4,2]) theta0 = 3
Miden x (szintén d dimenzióban definiált) pont ezen a síkon van, ha igaz rá, hogy:
(2)
Annak ellenőrzése, hogy egy vektor merőleges-e a hipertérre
Ahhoz, hogy egy vektor merőleges legyen egy hipersíkra, lényegében annak a feltételnek kel teljesülnie, hogy a vektor és a szorzata 0, vagyis:
(3)
Ez Pythonban pedig:
import numpy as np x = np.array([2,-1,0]) if np.dot(theta.T,x) == 0: print("Merőleges") else: print("Nem merőleges")
Pont és hipersík távolsága
A pont és a hipertér előjeles távolságát így számolhatjuk:
(4)
Ahol:
— a
normálja, vagyis, hogy milyen hosszú a vektor. Ez pedig ugye Eukleidészi térben:
import numpy as np # t mint tavolság t = (theta0+np.dot(theta.T, x))/numpy.linalg.norm(theta)
Pont vetítése a hipersíkra
Ha azt szeretnénk megállapítani mi a hipersík azon pontja ami legközelebb van egy adott ponthoz, akkor lényegében a síkra kell merőlegesen vetítenünk a pontot. Ezt a vetítést így tehetjük meg:
(5)
Ami Pythonban:
import numpy as np konstant = (theta0+np.dot(theta.T, x))/np.power(numpy.linalg.norm(theta), 2) x_vesszo = x-theta*konstant
Nagyjából ennyi lenne az, amit a gépi tanulás során alkalmazunk.
“Hipersík – Lineáris algebra Pythonban” bejegyzéshez 2 hozzászólás