๐Ÿ“’ Spark(11) - ML(2)

Kimdongkiยท2024๋…„ 6์›” 21์ผ

Spark

๋ชฉ๋ก ๋ณด๊ธฐ
11/22

๐Ÿ“Œ Spark ML Pipeline

๋ชจ๋ธ ๋นŒ๋”ฉ๊ณผ ๊ด€๋ จ๋œ ํ”ํ•œ ๋ฌธ์ œ

  • ํŠธ๋ ˆ์ด๋‹ ์„ธํŠธ์˜ ๊ด€๋ฆฌ๊ฐ€ ์•ˆ๋œ๋‹ค.
  • ๋ชจ๋ธ ํ›ˆ๋ จ ๋ฐฉ๋ฒ•์ด ๊ธฐ๋ก๋˜์ง€ ์•Š๋Š”๋‹ค.
    • ์–ด๋–ค ํŠธ๋ ˆ์ด๋‹ ์„ธํŠธ๋ฅผ ์‚ฌ์šฉํ–ˆ๋Š”๊ฐ€?
    • ์–ด๋–ค ํ”ผ์ณ๋“ค์„ ์‚ฌ์šฉํ–ˆ๋Š”๊ฐ€?
    • ํ•˜์ดํผ ํŒŒ๋ผ๋ฏธํ„ฐ๋Š” ๋ฌด์—‡์„ ์‚ฌ์šฉํ–ˆ๋Š”๊ฐ€?
  • ๋ชจ๋ธ ํ›ˆ๋ จ์— ๋งŽ์€ ์‹œ๊ฐ„์„ ์†Œ์š”ํ•œ๋‹ค.
    • ๋ชจ๋ธ ํ›ˆ๋ จ์ด ์ž๋™ํ™”๊ฐ€ ์•ˆ๋œ ๊ฒฝ์šฐ ๋งค๋ฒˆ ๊ฐ ์Šคํ…œ๋“ค์„ ๋…ธํŠธ๋ถ ๋“ฑ์—์„œ ์ผ์ผํžˆ ์ˆ˜ํ–‰ํ•œ๋‹ค.
    • ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•  ์—ฌ์ง€๊ฐ€ ๋งŽ๋‹ค(ํŠน์ • ์Šคํ…œ์„ ๊นŒ๋จน๊ฑฐ๋‚˜ ์กฐ๊ธˆ ๋‹ค๋ฅธ ๋ฐฉ์‹์„ ์ ์šฉํ•œ๋‹ค.)

ML Pipeline

  • ๊ธฐ๋ก๊ณผ ์‹œ๊ฐ„์„ ํ•ด๊ฒฐํ•˜์˜€๋‹ค.

  • ์ž๋™ํ™”๋ฅผ ํ†ตํ•˜์—ฌ ์—๋Ÿฌ ์†Œ์ง€๋ฅผ ์ค„์ด๊ณ  ๋ฐ˜๋ณต์„ ๋น ๋ฅด๋„๋ก ํ•ด์ค€๋‹ค.

  • ML Pipeline์ด๋ž€
    • ๋ฐ์ดํ„ฐ ๊ณผํ•™์ž๊ฐ€ ML ๊ฐœ๋ฐœ๊ณผ ํ…Œ์ŠคํŠธ๋ฅผ ์‰ฝ๊ฒŒ ํ•ด์ฃผ๋Š” ๊ธฐ๋Šฅ(Data Frame๊ธฐ๋ฐ˜)
    • ML ์•Œ๊ณ ๋ฆฌ์ฆ˜์— ๊ด€๊ณ„์—†์ด ์ผ๊ด€๋œ ํ˜•ํƒœ์˜ API๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ชจ๋ธ๋ง์ด ๊ฐ€๋Šฅํ•˜๋‹ค.
    • ML ๋ชจ๋ธ ๊ฐœ๋ฐœ๊ณผ ํ…Œ์ŠคํŠธ๋ฅผ ๋ฐ˜๋ณต๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•ด์ค€๋‹ค.
      -> Transformer & Estimator๋กœ ๊ตฌ์„ฑ๋˜์–ด ์žˆ๋‹ค.
  • 4๊ฐœ์˜ ์š”์†Œ๋กœ ๊ตฌ์„ฑ
    • DataFrame
    • Transformer
    • Estimator
    • Parameter

๐Ÿ“Œ ML Pipeline ๊ตฌ์„ฑ ์š”์†Œ

DataFrame

  • ML Pipeline์—์„œ๋Š” DataFrame์ด ๊ธฐ๋ณธ ๋ฐ์ดํ„ฐ ํฌ๋งท์ด๋‹ค.

  • ๊ธฐ๋ณธ์ ์œผ๋กœ CSV, JSON, Parquet, JDBC(RDB)๋ฅผ ์ง€์›ํ•œ๋‹ค.

  • ML Pipeline์—์„œ ๋‹ค์Œ 2๊ฐ€์ง€ ์ƒˆ๋กœ์šด ๋ฐ์ดํ„ฐ์†Œ์Šค๋ฅผ ์ง€์›ํ•œ๋‹ค.

    • Image ๋ฐ์ดํ„ฐ ์†Œ์Šค
      -> JPEG, PNG๋“ฑ์˜ image๋“ค์„ ์ง€์ •๋œ ๋””๋ ‰ํ† ๋ฆฌ์—์„œ Loadํ•œ๋‹ค.
    • LIBSVM ๋ฐ์ดํ„ฐ ์†Œ์Šค
      • label๊ณผ features ๋‘ ๊ฐœ์˜ ์ปฌ๋Ÿผ์œผ๋กœ ๊ตฌ์„ฑ๋˜๋Š” ๋จธ์‹ ๋Ÿฌ๋‹ ํŠธ๋ ˆ์ด๋‹์…‹ ํฌ๋งท
      • features ์ปฌ๋Ÿผ์€ ๋ฒกํ„ฐ ํ˜•ํƒœ์˜ ๊ตฌ์กฐ๋ฅผ ๊ฐ–๋Š”๋‹ค.

Transformer

  • Input DataFrame์„ ๋‹ค๋ฅธ DataFrame์œผ๋กœ ๋ณ€ํ™˜
    -> ํ•˜๋‚˜ ์ด์ƒ์˜ ์ƒˆ๋กœ์šด ์ปฌ๋Ÿผ์„ ์ถ”๊ฐ€ํ•œ๋‹ค.

  • ๋‘ ์ข…๋ฅ˜์˜ Transformer๊ฐ€ ์กด์žฌํ•˜๋ฉฐ Transform์ด ๋ฉ”์ธ ํ•จ์ˆ˜์ด๋‹ค.
    -> Feature Transformer & Learning Model

  • Feature Transformer

    • Input DataFrame์˜ ์ปฌ๋Ÿผ์œผ๋กœ๋ถ€ํ„ฐ ์ƒˆ๋กœ์šด ์ปฌ๋Ÿผ์„ ๋งŒ๋“ค์–ด๋‚ด ์ด๋ฅผ ์ถ”๊ฐ€ํ•œ ์ƒˆ๋กœ์šด DataFrame์„ ์ถœ๋ ฅ์œผ๋กœ ๋‚ด์ค€๋‹ค. ๋ณดํ†ต Feature Engineering์„ ํ•˜๋Š”๋ฐ ์‚ฌ์šฉํ•œ๋‹ค.

    • Imputer, StringIndexer, VectorAssembler

      • Imputer๋Š” ๊ธฐ๋ณธ๊ฐ’ ์ง€์ •์— ์‚ฌ์šฉ
      • StringIndexer๋Š” categorical ์ •๋ณด๋ฅผ ์ˆซ์ž ์ •๋ณด๋กœ ๋ณ€ํ™˜
      • VectorAssembler : ์ฃผ์–ด์ง„ ์ปฌ๋Ÿผ๋“ค์„ ํ†ตํ•ฉํ•˜์—ฌ ํ•˜๋‚˜์˜ ๋ฒกํ„ฐ ์ปฌ๋Ÿผ์œผ๋กœ ๋ณ€ํ™˜
  • Learning Model

    • ML ๋ชจ๋ธ์— ํ•ด๋‹นํ•œ๋‹ค.
    • Feature DataFrame์„ Input์œผ๋กœ ๋ฐ›์•„ ์˜ˆ์ธก๊ฐ’์ด ์ƒˆ๋กœ์šด ์ปฌ๋Ÿผ์œผ๋กœ ํฌํ•จ๋œ DataFrame์„ ์ถœ๋ ฅ์œผ๋กœ ๋‚ด์ค€๋‹ค. : Prediction, Probability

Feature Transformer

  • Transform ํ•จ์ˆ˜

Learning Model

  • ML ๋ชจ๋ธ์— ํ•ด๋‹น -> Transform ํ•จ์ˆ˜๋กœ ๋™์ž‘ํ•œ๋‹ค.

Estimator

  • ML ์•Œ๊ณ ๋ฆฌ์ฆ˜์— ํ•ด๋‹นํ•œ๋‹ค. -> Fit ์ด ๋ฉ”์ธ ํ•จ์ˆ˜์ด๋‹ค.

  • Training set DataFrame์„ Input์œผ๋กœ ๋ฐ›์•„์„œ ML ๋ชจ๋ธ(Transformer)์„ ๋งŒ๋“ค์–ด๋‚ธ๋‹ค.

    • Input : DataFrame(Training set)
    • Output : ML Model
  • LogisticRegression์€ Estimator์ด๊ณ  LogisticRegression.fit()์„ ํ˜ธ์ถœํ•˜๋ฉด ML ๋ชจ๋ธ(Transformer)์„ ๋งŒ๋“ค์–ด ๋‚ธ๋‹ค.

  • ML Pipeline ๋„ Estimator์ด๋‹ค.

  • Estimator๋Š” ์ €์žฅ๊ณผ ์ฝ๊ธฐ ํ•จ์ˆ˜๋ฅผ ์ œ๊ณตํ•œ๋‹ค.
    -> ์ฆ‰ ๋ชจ๋ธ๊ณผ ML Pipeline์„ ์ €์žฅํ–ˆ๋‹ค๊ฐ€ ๋‚˜์ค‘์— ๋‹ค์‹œ ์ฝ์„ ์ˆ˜ ์žˆ๋‹ค.
    -> save & load

Parameter

  • Trasformer & Estimator์˜ ๊ณตํ†ต API๋กœ ๋‹ค์–‘ํ•œ ์ธ์ž๋ฅผ ์ ์šฉํ•ด์ค€๋‹ค.

  • ๋‘ ์ข…๋ฅ˜์˜ ํŒŒ๋ผ๋ฏธํ„ฐ๊ฐ€ ์กด์žฌํ•œ๋‹ค.

    • Param(ํ•˜๋‚˜์˜ ์ด๋ฆ„๊ณผ ๊ฐ’)
    • ParamMap(Param List)
  • ํŒŒ๋ผ๋ฏธํ„ฐ ์˜ˆ

    • ํ›ˆ๋ จ ๋ฐ˜๋ณต์ˆ˜(iteration) ์ง€์ •์„ ์œ„ํ•ด setMaxlter()๋ฅผ ์‚ฌ์šฉ
    • ParamMap(lr.maxlter -> 10)
  • ํŒŒ๋ผ๋ฏธํ„ฐ๋Š” fit(Estimator) or transform(Transformer)์— ์ธ์ž๋กœ ์ง€์ • ๊ฐ€๋Šฅํ•˜๋‹ค.

ML Pipeline

  • ํ•˜๋‚˜ ์ด์ƒ์˜ Transformer์™€ Estimator๊ฐ€ ์—ฐ๊ฒฐ๋œ ๋ชจ๋ธ๋ง WorkFlow

    • Input : DataFrame
    • Output : ML Model
  • ML Pipeline ๊ทธ์ž์ฒด๋„ Estimator์ด๋‹ค.

    • ML Pipeline์˜ ์‹คํ–‰์€ Fit ํ•จ์ˆ˜์˜ ํ˜ธ์ถœ๋กœ ์‹œ์ž‘ํ•œ๋‹ค.
    • ์ €์žฅ ํ›„ ๋‚˜์ค‘์— ๋‹ค์‹œ ๋กœ๋”ฉํ•˜๋Š” ๊ฒƒ์ด ๊ฐ€๋Šฅํ•˜๋‹ค(Persistence)
  • ํ•œ ๋ฒˆ Pipeline์„ ๋งŒ๋“ค๋ฉด ๋ฐ˜๋ณต ๋ชจ๋ธ๋นŒ๋”ฉ์ด ์‰ฌ์›Œ์ง„๋‹ค.

0๊ฐœ์˜ ๋Œ“๊ธ€