Trénování modelu strojového učení
Trénování modelu strojového učení zahrnuje přizpůsobení algoritmu strojového učení k trénovacím datům, aby bylo možné určit přijatelně přesnou funkci, kterou lze použít pro její funkce a vypočítat odpovídající popisky. Může to vypadat jako konceptuálně jednoduchá myšlenka; ale samotný proces trénování modelu, který vytváří přesné předpovědi na nových datech, nejen natrénovaných dat, může být náročný a zahrnuje iterativní přístup k opakovanému trénování a vyhodnocování modelů pomocí více algoritmů a parametrů.
Trénovací a ověřovací data
Běžným přístupem při trénování modelu strojového učení je náhodné rozdělení dat do podmnožina pro trénování a ověřování. Potom můžete použít trénovací datovou sadu k přizpůsobení algoritmu a trénování modelu a pak otestovat, jak dobře model funguje s ověřovacími daty, která jste si podrželi. To pomáhá zajistit, aby model dobře zobecňuje – jinými slovy generuje přesné předpovědi pro trénování, na kterých nebyl trénován.
Poznámka:
Modely, které dobře předpovídají data, na kterých byly natrénovány, ale které nefungují dobře s novými daty, jsou popsány tak, jak jsou pro trénovací data přepovězeny .
Model byste obvykle měli vytrénovat přibližně s 70 % dat a podržet 30 % pro ověření.
Algoritmy strojového učení
Existuje mnoho algoritmů strojového učení seskupených do různých typů algoritmů na základě typu problému strojového učení, který potřebujete vyřešit. Většina architektur strojového učení zahrnuje více algoritmů pro regresi a klasifikaci a algoritmy pro problémy strojového učení bez supervize, jako je clustering.
Po identifikaci typu problému, který chcete vytvořit model k vyřešení, si můžete vybrat z několika algoritmů tohoto typu. V rámci každého typu může existovat více algoritmů, ze které si můžete vybrat, často na základě různých druhů matematických operací. Například v sadě algoritmů pro klasifikaci existují algoritmy tohoto typu:
- Logistické regresní algoritmy, které iterativním způsobem používají logistické funkce k výpočtu hodnoty mezi 0 a 1, která představuje pravděpodobnost pro každou možnou třídu, a optimalizují koeficienty funkce na základě rozdílů mezi predikovanou třídou a skutečnou známou hodnotou popisku.
- Stromové funkce, které definují rozhodovací strom, ve kterém je považována za jednotlivou funkci, a na základě její hodnoty se považuje další funkce a tak dále, dokud se nedefinuje odpovídající popisek třídy.
- Algoritmy souborů , které kombinují více technik, aby našli optimální celkovou prediktivní funkci.
Nejlepší algoritmus závisí na vašich datech a obvykle vyžaduje iterativní pokus a chybu k určení.
Hyperparametry
Parametry algoritmu strojového učení jsou datové funkce (a popisky), na kterých se trénují. Většina algoritmů strojového učení navíc poskytuje hyperparametry , které můžete použít k ovlivnění způsobu fungování algoritmu. Hyperparametry umožňují řídit věci, jako je úroveň náhodnosti, kterou chcete v modelu povolit (takže zobecní dobře, ale přesto vytváří přijatelně přesné předpovědi), počet iterací provedených za účelem nalezení optimálního modelu (který umožňuje vyhnout se přeurčení a optimalizaci trénování), počet větví, které se ve stromovém modelu považují, a další faktory specifické pro algoritmus.
Přizpůsobení modelu
Pokud chcete model skutečně vytrénovat, musíte algoritmus přizpůsobit datům. Konkrétní syntaxe a datové formáty používané k tomu se můžou lišit v různých architekturách strojového učení, ale princip je vždy stejný. V případě strojového učení pod dohledem se algoritmus přizpůsobí funkcím založeným na známých popiscích. Pro strojové učení bez supervize zadáte funkce a algoritmus je pokusí rozdělit do samostatných clusterů.
Následující příklad ukazuje kód použitý k zahájení trénování modelu logistické regrese pomocí architektury Spark MLlib. Trénovací data jsou poskytována jako datový rámec, ve kterém jsou popisky ve sloupci celočíselné hodnoty a odpovídající funkce jsou reprezentovány jako jeden vektor (matice) hodnot. V tomto příkladu byly zadány také dva hyperparametry (maxIter a regParam).
from pyspark.ml.classification import LogisticRegression
lr = LogisticRegression(labelCol="label", featuresCol="features", maxIter=10, regParam=0.3)
model = lr.fit(training_df)