Megosztás a következőn keresztül:


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és DoubleType)
  • 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, validatevagy 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 traintartalmaznak, testvagy 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ás spark.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ítja spark.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.

AutoML-kísérlet a Funkciótár példajegyzetfüzetével

Jegyzetfüzet beszerzése