Azure Databricks AutoML-adatok előkészítése és feldolgozása
Ez a cikk azt ismerteti, hogy az Azure Databricks AutoML hogyan készíti elő az adatokat a gépi tanulási betanításhoz, és ismerteti a konfigurálható adatbeállításokat. Ezeket a beállításokat az AutoML felhasználói felületén a kísérlet beállítása során módosíthatja. Ezeknek a beállításoknak az AutoML API-val történő konfigurálásához tekintse meg az AutoML Python API-referenciát.
Támogatott adatfunkció-típusok
Az alább nem felsorolt funkciótípusok nem támogatottak. A képek például nem támogatottak.
A következő szolgáltatástípusok támogatottak:
- Numerikus (
ByteType
,ShortType
,IntegerType
,LongType
,FloatType
ésDoubleType
) - Logikai
- Sztring (kategorikus vagy angol szöveg)
- Időbélyegek (
TimestampType
,DateType
) - ArrayType[Numerikus] (Databricks Runtime 10.4 LTS ML és újabb)
- DecimalType (Databricks Runtime 11.3 LTS ML és újabb)
Oszlop kijelölése
Feljegyzés
Ez a funkció csak besorolási és regressziós problémák esetén érhető el
A Databricks Runtime 10.3 ML és újabb verziókban megadhatja, hogy az AutoML mely oszlopokat használja a betanításhoz. Ha ki szeretne zárni egy oszlopot a felhasználói felületen, törölje a jelölését a Belefoglalás oszlopból. Az API-ban használja a paramétert exclude_cols
. További információ: Azure Databricks AutoML Python API-referencia.
Az előrejelzési célként vagy időoszlopként kijelölt oszlopot nem lehet elvetni az adatok felosztásához.
Alapértelmezés szerint a rendszer minden oszlopot tartalmaz.
Hiányzó értékek impute
A Databricks Runtime 10.4 LTS ML és újabb verziókban megadhatja a null értékek imputálásának módját. A felhasználói felületen válasszon egy metódust az Impute (Impute) legördülő listából a táblázatséma oszlopával együtt. Az API-ban használja a paramétert imputers
. További információ: Azure Databricks AutoML Python API-referencia.
Alapértelmezés szerint az AutoML kiválaszt egy számítási módszert az oszloptípus és a tartalom alapján.
Feljegyzés
Ha nem alapértelmezett számítási módszert ad meg, az AutoML nem végez szemantikai típusészlelést.
Adatok felosztása betanítási, érvényesítési és tesztelési csoportokra
Az AutoML három részre osztja az adatokat a betanításhoz, az ellenőrzéshez és a teszteléshez. Az ML-probléma típusától függően különböző lehetőségek állnak rendelkezésre az adatok felosztására.
Adatok felosztása regresszióhoz és besoroláshoz
Az adatok betanítási, érvényesítési és tesztelési csoportokra oszthatók a regressziós és besorolási feladatokhoz:
(Alapértelmezett) Véletlenszerű felosztás: Ha nincs megadva adatfelosztási stratégia, az adathalmaz véletlenszerűen 60%-os betanítási felosztásra, 20%-os érvényesítési felosztásra és 20%-os tesztfelosztásra lesz felosztva. A besoroláshoz a rétegzett véletlenszerű felosztás biztosítja, hogy minden osztály megfelelően jelen legyen a betanítási, ellenőrzési és tesztkészletekben.
Időrendi felosztás: A Databricks Runtime 10.4 LTS ML-ben és újabb verziókban kiválaszthat egy időoszlopot, amely időrendbeli betanításokat, érvényesítési és tesztelési felosztásokat hoz létre. Az időrendi felosztások a legkorábbi adatpontokat használják a betanításhoz, a következő legkorábbit az ellenőrzéshez, és a legújabb tesztpontokat. Az időoszlop lehet időbélyeg, egész szám vagy sztringoszlop.
Manuális felosztás: A Databricks Runtime 15.3 ML-es és újabb verziókban az API-val manuális felosztást állíthat be. Adjon meg egy felosztott oszlopot, és használja az értékeket train
, validate
vagy test
azonosítsa az adathalmazok betanításához, érvényesítéséhez és teszteléséhez használni kívánt sorokat. A rendszer figyelmen kívül hagyja azokat a sorokat, amelyek nem osztott oszlopértékeket train
tartalmaznak, test
vagy validate
figyelmen kívül hagyják a megfelelő riasztást.
Adatok felosztása előrejelzéshez
A tevékenységek előrejelzéséhez az AutoML idősorok keresztellenőrzését használja. Ez a módszer fokozatosan bővíti a betanítási adatkészletet időrendben, és érvényesítést végez a későbbi időpontokon. A keresztérvényesítés a modell teljesítményének robusztus kiértékelését teszi lehetővé különböző időbeli szegmensekben. Biztosítja, hogy az előrejelzési modell szigorúan tesztelve legyen a nem látható jövőbeli adatokon, megőrizve az előrejelzések relevanciáját és pontosságát.
A keresztérvényesítési hajtások száma a bemeneti tábla olyan jellemzőitől függ, mint az idősorok száma, a kovariaátok jelenléte és az idősor hossza.
Nagy adathalmazok mintavételezése
Feljegyzés
A mintavételezés nem vonatkozik az előrejelzési problémákra.
Bár az AutoML elosztja a hiperparaméter-finomhangolási kísérleteket a fürt feldolgozó csomópontjai között, minden modell be van tanítva egyetlen feldolgozó csomóponton.
Az AutoML automatikusan megbecsüli az adathalmaz betöltéséhez és betanásához szükséges memóriát, és szükség esetén mintát vesz az adatkészletből.
A Databricks Runtime 9.1 LTS ML-ben a Databricks Runtime 10.4 LTS ML-n keresztül a mintavételezési tört nem függ a fürt csomóponttípusától vagy az egyes csomópontok memóriájának mennyiségétől.
A Databricks Runtime 11.x ML-ben:
- A mintavételezési tört növekszik azon feldolgozó csomópontok esetében, amelyek magonként több memóriával rendelkeznek. A mintaméretet a memóriaoptimalizált példánytípus kiválasztásával növelheti.
- A minta méretét tovább növelheti, ha nagyobb értéket
spark.task.cpus
választ a fürt Spark-konfigurációjában. Az alapértelmezett beállítás 1; a maximális érték a feldolgozó csomópont processzorainak száma. Ha növeli ezt az értéket, a minta mérete nagyobb, de kevesebb próba fut párhuzamosan. Például egy négy maggal és 64 GB-os teljes RAM-mal rendelkező gépeken az alapértelmezett beállításspark.task.cpus=1
feldolgozónként négy próbaidőszakot futtat, és mindegyik próbaverzió 16 GB RAM-ra korlátozódik. Ha beállítjaspark.task.cpus=4
, minden feldolgozó csak egy próbaverziót futtat, de ez a próbaverzió 64 GB RAM-ot használhat.
A Databricks Runtime 12.2 LTS ML-ben és újabb verziókban az AutoML betaníthat nagyobb adathalmazokat úgy, hogy betanítási feladatonként több processzormagot ad ki. A mintaméret növeléséhez válasszon egy nagyobb memóriával rendelkező példányméretet.
A Databricks Runtime 11.3 LTS ML és újabb verziókban, ha az AutoML mintát vett az adathalmazból, a mintavételezési tört a felhasználói felület Áttekintés lapján jelenik meg.
Besorolási problémák esetén az AutoML a PySpark sampleBy
metódust használja a rétegzett mintavételezéshez a célcímke eloszlásának megőrzése érdekében.
Regressziós problémák esetén az AutoML a PySpark sample
metódust használja.
Kiegyensúlyozatlan adathalmazok támogatása besorolási problémák esetén
A Databricks Runtime 11.3 LTS ML és újabb verzióiban, ha az AutoML azt észleli, hogy egy adathalmaz kiegyensúlyozatlan, a főosztály(ok) leskálázásával és az osztálysúlyok hozzáadásával próbálja csökkenteni a betanítási adathalmaz egyensúlyhiányát. Az AutoML csak a betanítási adatkészletet egyensúlyozza, és nem egyensúlyozza ki a tesztelési és érvényesítési adatkészleteket. Ezzel biztosítja, hogy a modell teljesítménye mindig a nem bővített adathalmazon legyen kiértékelve a valódi bemeneti osztályeloszlással.
A kiegyensúlyozatlan betanítási adatkészletek egyensúlyba hozásához az AutoML olyan osztálysúlyokat használ, amelyek inverz módon kapcsolódnak ahhoz a mértékhez, amellyel egy adott osztály le van skálázva. Ha például egy 100 mintával rendelkező betanítási adatkészlet 95 mintával rendelkezik az A osztályhoz, és öt minta a B osztályhoz tartozik, az AutoML az A osztályt 70 mintára csökkenti, azaz az A osztályt 70/95 vagy 0,736 arányban csökkenti, miközben a B osztályban lévő minták száma 5-nél marad. Annak érdekében, hogy a végső modell megfelelően legyen kalibrálva, és a modell kimenetének valószínűségeloszlása megegyezik a bemenetéval, az AutoML az A osztály súlyát 1/0,736 vagy 1,358 arányban skálázza fel, miközben a B osztály súlyát 1-nek tartja. Az AutoML ezután ezeket az osztálysúlyokat használja a modell betanítása során paraméterként, hogy az egyes osztályokból származó minták megfelelően legyenek súlyozással a modell betanítása során.
Idősorok összesítése
Az előrejelzési problémák esetén, ha egy idősorban több érték is szerepel az időbélyegben, az AutoML az értékek átlagát használja.
Az összeg használatához szerkessze a próbafuttatások által létrehozott forráskód-jegyzetfüzetet. Az Adatok összesítése ... cellával az alábbi módon váltson a .agg(y=(target_col, "avg"))
következőre.agg(y=(target_col, "sum"))
:
group_cols = [time_col] + id_cols
df_aggregation = df_loaded \
.groupby(group_cols) \
.agg(y=(target_col, "sum")) \
.reset_index() \
.rename(columns={ time_col : "ds" })
Szemantikai típusészlelés
Feljegyzés
- A szemantikai típusészlelés nem alkalmazható az előrejelzési problémákra.
- Az AutoML nem végez szemantikai típusészlelést az egyéni számítási módszerekkel rendelkező oszlopok esetében.
A Databricks Runtime 9.1 LTS ML és újabb verziók esetén az AutoML megpróbálja észlelni, hogy az oszlopok szemantikai típusa eltér-e a Táblaséma Spark- vagy Pandas-adattípusától. Az AutoML ezeket az oszlopokat észlelt szemantikai típusként kezeli. Ezek az észlelések a legjobb erőfeszítések, és néha kihagyják a szemantikai típusok meglétét. Manuálisan is beállíthatja az oszlopok szemantikai típusát, vagy megadhatja az AutoML-nek, hogy ne alkalmazza a szemantikai típusészlelést egy oszlopra széljegyzetekkel.
Az AutoML a következő módosításokat hajtja végre:
- A dátum- vagy időbélyegadatokat képviselő karakterlánc- és egész számoszlopok időbélyegtípusként vannak kezelve.
- A numerikus adatokat ábrázoló sztringoszlopokat numerikus típusként kezeli a rendszer.
A Databricks Runtime 10.1 ML-es és újabb verziója esetén az AutoML a következő módosításokat is végrehajtja:
- A kategorikus azonosítókat tartalmazó numerikus oszlopok kategorikus funkcióként vannak kezelve.
- Az angol szöveget tartalmazó sztringoszlopok szövegfunkcióként lesznek kezelve.
Szemantikai típusú széljegyzetek
A Databricks Runtime 10.1 ML-es és újabb verziója esetén manuálisan szabályozhatja a hozzárendelt szemantikai típust úgy, hogy egy szemantikai típusú széljegyzetet helyez egy oszlopra. Az oszlop <column-name>
<semantic-type>
szemantikai típusának manuális megjegyzéséhez használja az alábbi szintaxist:
metadata_dict = df.schema["<column-name>"].metadata
metadata_dict["spark.contentAnnotation.semanticType"] = "<semantic-type>"
df = df.withMetadata("<column-name>", metadata_dict)
<semantic-type>
az alábbiak egyike lehet:
categorical
: Az oszlop kategorikus értékeket tartalmaz (például numerikus értékeket, amelyeket azonosítóként kell kezelni).numeric
: Az oszlop numerikus értékeket (például számba elemezhető sztringértékeket) tartalmaz.datetime
: Az oszlop időbélyegértékeket tartalmaz (sztring, numerikus vagy dátumértékek, amelyek időbélyegekké alakíthatók).text
: A sztringoszlop angol szöveget tartalmaz.
Ha le szeretné tiltani a szemantikai típusészlelést egy oszlopon, használja a speciális kulcsszójegyzetet native
.
Funkciótár-integráció
A Databricks Runtime 11.3 LTS ML és újabb verziók használatával a Funkciótár meglévő funkciótábláival bővítheti az eredeti bemeneti adatkészletet a besorolási és regressziós problémákhoz.
A Databricks Runtime 12.2 LTS ML és újabb verzióival a Funkciótár meglévő funkciótábláival bővítheti az eredeti bemeneti adatkészletet az Összes AutoML-problémához: besoroláshoz, regresszióhoz és előrejelzéshez.
Szolgáltatástábla létrehozásához tekintse meg a Mi az a szolgáltatástároló? című témakört.
Meglévő funkciótáblák használatához kiválaszthatja az AutoML felhasználói felülettel rendelkező funkciótáblákat, vagy beállíthatja a paramétert az feature_store_lookups
AutoML-futtatási specifikációban.
feature_store_lookups = [
{
"table_name": "example.trip_pickup_features",
"lookup_key": ["pickup_zip", "rounded_pickup_datetime"],
},
{
"table_name": "example.trip_dropoff_features",
"lookup_key": ["dropoff_zip", "rounded_dropoff_datetime"],
}
]
Példa jegyzetfüzetre: AutoML-kísérlet a Funkciótár használatával
Az alábbi jegyzetfüzet bemutatja, hogyan taníthat be ml-modellt autoML- és funkciótár-funkciótáblákkal.