Adatok előkészítése a besoroláshoz

Megtudhatja, hogyan készítheti elő az adatokat az AutoML használatával a besoroláshoz.

Ez a cikk bemutatja, hogyan készíti elő az AutoML az adatokat a besorolá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

Csak az alább felsorolt szolgáltatástípusok 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)

Hiányzó értékeket pótolni

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 módszert a Kitöltési mód oszlop legördülő listájából a táblázatsémában. Az API-ban használja a paramétert imputers . További információ: 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.

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.

Oszlop kijelölése

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ó: 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.

Adatok felosztása betanítási, érvényesítési és tesztelési halmazokra

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.

Az adatok betanítási, érvényesítési és tesztelési csoportokra oszthatók az alábbi módszerekkel:

(Alapértelmezett) Véletlenszerű felosztás: Ha nincs megadva adatfelosztási stratégia, az adathalmaz véletlenszerűen 60% felosztásra, 20% érvényesítési felosztásra és 20% 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 és újabb verzióiban kiválaszthat egy időoszlopot, hogy időrendi betanítási, érvényesítési és tesztelési felosztásokat hozzon 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 azokon a sorokon, amelyeket a betanításhoz, érvényesítéshez és teszteléshez kíván használni az adathalmazokban. Azok a sorok, amelyek osztott oszlopértékei nem train, test vagy validate, figyelmen kívül lesznek hagyva és a megfelelő riasztás ki lesz adva.

Nagy adathalmazok mintavételezése

Bár az AutoML elosztja a hiperparaméter-finomhangolási kísérleteket a fürt munkavégző csomópontjai között, minden modell egyetlen munkavégző csomóponton van betanítva.

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.

Databricks Runtime verzió Mintavételezési viselkedés
9.1 LTS ML - 10,4 LTS ML A mintavételezési tört állandó, és nem függ a fürt csomóponttípusától vagy csomópontonkénti memóriájától.
11.x ML A mintavételezési törtszám a munkacsomópontok esetében, amelyek több memóriával rendelkeznek magonként. A minta méretének növelése:
  • Használjon memóriaoptimalizált-példánytípust.
  • Módosítsa spark.task.cpus a Spark-konfigurációban. Az alapértelmezett érték 1, a maximális érték pedig a feldolgozó csomópont processzorainak száma. 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élda: 4 maggal és 64 GB RAM-mal rendelkező gépen:
  • A spark.task.cpus=1esetén feldolgozónként négy próba fut, mindegyik 16 GB RAM-ot használ.
  • A spark.task.cpus=4esetén egy próba fut munkavállalónként, az összes 64 GB RAM-ot használva.
11.3 LTS ML és újabb Ha az AutoML mintát vesz az adathalmazból, a mintavételezési tört a felhasználói felület Áttekintés lapján jelenik meg.
12.2 LTS ML és újabb Az AutoML képes kezelni a nagyobb adathalmazokat úgy, hogy betanítási feladatonként több processzormagot allokál. A mintaméret növeléséhez válasszon ki egy nagyobb memóriával rendelkező példányt.

Besorolási problémák esetén az AutoML a PySpark sampleBymetó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 samplemetódust használja.

Szemantikai típusészlelés

Feljegyzés

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 lehető legjobb próbálkozások, de néha kihagyhatjá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.