Evalml: EvalML์— ๋ชฉ๊ณต ๋ฐ์ดํ„ฐ ํ…Œ์ด๋ธ” ํ†ตํ•ฉ

์— ๋งŒ๋“  2020๋…„ 09์›” 25์ผ  ยท  8์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: alteryx/evalml

์ด Epic์€ Woodwork DataTables ๋ฅผ EvalML์— ํ†ตํ•ฉํ•˜๋Š” ๊ฒƒ๊ณผ ๊ด€๋ จ๋œ ๋ชจ๋“  ๋ฌธ์ œ๋ฅผ ์ถ”์ ํ•ฉ๋‹ˆ๋‹ค.

์—ฌ๊ธฐ ์ฐธ๊ณ : https://alteryx.quip.com/XedaAs9HXc9f/EvalML-Woodwork-Table-Integration
๋””์ž์ธ ๋ฌธ์„œ: https://alteryx.quip.com/Oa4aA6h0Rf2k/Woodwork-DataTable-Integration-Design-Document

์‹คํ–‰ ๊ณ„ํš:

  • AutoML ์—…๋ฐ์ดํŠธ: 1์ฃผ

    • WW DataTables๋ฅผ ์ง€์›ํ•˜๋„๋ก AutoMLSearch๋ฅผ ์—…๋ฐ์ดํŠธํ•˜์‹ญ์‹œ์˜ค. ํŒฌ๋” ์ž…๋ ฅ์— ๋Œ€ํ•œ ์ง€์›์„ ์œ ์ง€ํ•ฉ๋‹ˆ๋‹ค.

    • AutoML์€ ์—ฌ์ „ํžˆ โ€‹โ€‹pandas DF๋ฅผ ํŒŒ์ดํ”„๋ผ์ธ/๊ตฌ์„ฑ์š”์†Œ์— ์ „๋‹ฌํ•ฉ๋‹ˆ๋‹ค.

  • automl์ด ๊ธฐ๋Šฅ์„ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์ฒ˜๋ฆฌํ•˜๊ณ  ์‚ฌ์šฉ์ž๊ฐ€ pandas DataFrames / numpy ๋ฐฐ์—ด์„ ์ „๋‹ฌํ•  ๊ฒฝ์šฐ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋Š” ์ผ์„ ๊ฒฝ๊ณ ํ•˜๊ธฐ ์œ„ํ•ด ๋ฒ”์ฃผํ˜•, ์ˆซ์ž ๋ฐ ํ…์ŠคํŠธ๊ฐ€ ์„ค์ •๋  ๊ฒƒ์œผ๋กœ ์˜ˆ์ƒ๋˜๋Š” ์œ ํ˜•์— ๋Œ€ํ•œ ๋ฌธ์„œ๋ฅผ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค. 2์ผ

  • WW DataTables๋ฅผ ํ—ˆ์šฉํ•˜๋„๋ก ํŒŒ์ดํ”„๋ผ์ธ ๋ฐ ๋ชจ๋“  ๊ตฌ์„ฑ ์š”์†Œ ์—…๋ฐ์ดํŠธ: 1์ฃผ

    • ๊ทธ๋ฃน์œผ๋กœ ํ•  ์ˆ˜ ์žˆ๊ณ  ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค
  • pandas DF ๋Œ€์‹  ๋ชจ๋“  ํŒŒ์ดํ”„๋ผ์ธ/๊ตฌ์„ฑ ์š”์†Œ์— ๋ฐ์ดํ„ฐ ํ…Œ์ด๋ธ”์„ ์ „๋‹ฌํ•˜๋„๋ก AutoML์„ ์—…๋ฐ์ดํŠธํ•ฉ๋‹ˆ๋‹ค. 1 ์ผ
  • pandas dtypes๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์„ ํƒ์—์„œ ๋Œ€์‹  DataTable ๋…ผ๋ฆฌ ์œ ํ˜•์„ ์‚ฌ์šฉํ•˜์—ฌ ์„ ํƒํ•˜๋„๋ก ๊ตฌ์„ฑ ์š”์†Œ๋ฅผ ์—…๋ฐ์ดํŠธํ•ฉ๋‹ˆ๋‹ค. 3 ์ผ
  • ๋ชจ๋“  ์˜ˆ์—์„œ DataTables๋ฅผ ์‚ฌ์šฉํ•˜๋„๋ก ์„ค๋ช…์„œ๋ฅผ ์—…๋ฐ์ดํŠธํ•˜์‹ญ์‹œ์˜ค. 2์ผ
  • DataTables๋ฅผ ์ง€์›ํ•˜๊ธฐ ์œ„ํ•ด ๋ชจ๋“  ๊ทธ๋ž˜ํ”„ ๋ฉ”์†Œ๋“œ, ๋ฐ์ดํ„ฐ๋ฅผ ํ—ˆ์šฉํ•˜๋Š” util ๋ฉ”์†Œ๋“œ๋ฅผ ์—…๋ฐ์ดํŠธํ•˜์‹ญ์‹œ์˜ค. ์ผ์ฃผ

์ด๊ณ„: 3์ฃผ 3์ผ, ๊ทธ๋ž˜ํ”„ ์ž‘์„ฑ/ํ™œ์šฉ์— 1์ฃผ ๋” ์†Œ์š”๋ฉ๋‹ˆ๋‹ค.

์ฃผ์š” ๋‚ ์งœ
10์›” ๋ฐœ๋งค๋Š” 10์›” 27์ผ ํ™”์š”์ผ์ž…๋‹ˆ๋‹ค.

๋ชฉํ‘œ
11์›” 6์ผ(๊ธˆ)(4์ฃผ)๊นŒ์ง€ ๋ชจ๋‘ ์™„๋ฃŒํ•˜์‹ญ์‹œ์˜ค. 11์›” ์ถœ์‹œ ์˜ˆ์ •.

์ŠคํŠธ๋ ˆ์น˜ ๋ชฉํ‘œ
10์›” ๋ฆด๋ฆฌ์Šค(10์›” 27์ผ)๊นŒ์ง€ ์ˆ˜ํ–‰๋œ ๊ทธ๋ž˜ํ”„/์œ ํ‹ธ๋ฆฌํ‹ฐ๋ฅผ ์ œ์™ธํ•œ ๋ชจ๋“  ๊ฒƒ.

๋ชจ๋“  8 ๋Œ“๊ธ€

@angela97lin : ์ฒ˜์Œ์—๋Š” ์ง€์›ํ•˜์ง€ ์•Š์„ ์ƒˆ๋กœ์šด ๋ฐ์ดํ„ฐ ํ…Œ์ด๋ธ” ์œ ํ˜•์„ ์‚ญ์ œํ•ด์•ผ ํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ ๋‹ค์Œ ์‚ฌ๋ก€๋ณ„๋กœ ์ง€์›์„ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ:

dt = ... # woodwork datatable as input to automl search, for example
numeric_features = dt.select('numeric')
categorical_features = dt.select('categorical')
natural_language_features = dt.select('natural_language')
# then, in order to drop unsupported types, from here on out, don't use
# the other features which may still be held in the original datatable

์ฃผ๋ชฉํ• ๋งŒํ•œ ์˜ˆ: ์‚ฌ๊ธฐ ๋ฐ์ดํ„ฐ ์„ธํŠธ๋Š” ์œ„๋„/๊ฒฝ๋„ ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ํ˜„์žฌ, ๊ทธ๊ฒƒ์€ ๋‘ ๊ฐœ์˜ ๋…๋ฆฝ์ ์ธ float๋กœ ๊ทธ๊ฒƒ์„ ์ „๋‹ฌํ•ฉ๋‹ˆ๋‹ค. ๋‹จ๊ธฐ์ ์œผ๋กœ๋Š” ๊ทธ๋ƒฅ ๋‚ด๋ ค์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋‚˜๋Š” ์šฐ๋ฆฌ๊ฐ€ ๋‘ ๊ฐœ์˜ ๋…๋ฆฝ์ ์ธ float๋กœ ์ธ์ฝ”๋”ฉํ•  ์ˆ˜ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•˜์ง€๋งŒ, ๊ทธ๊ฒƒ์ด ์ž˜ ์ˆ˜ํ–‰๋ ์ง€๋Š” ์˜์‹ฌ์Šค๋Ÿฝ์Šต๋‹ˆ๋‹ค. ์žฅ๊ธฐ์ ์œผ๋กœ ์šฐ๋ฆฌ๋Š” featuretools์˜ latlong ํ˜ธํ™˜ ํ”„๋ฆฌ๋ฏธํ‹ฐ๋ธŒ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ•ด๋‹น ์œ ํ˜•์— ๋Œ€ํ•œ ๊ธฐ๋Šฅ์„ ๊ตฌ์ถ•ํ•˜๊ณ ์ž ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋ง ๋˜๋„ค?

@freddyaboulton ์€ ์˜ค๋Š˜ ์ข‹์€ ์ ์„ ์ง€์ ํ–ˆ์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” conda๋กœ evalml์„ ์ œ๊ณตํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์‚ฌ์šฉ์ž๊ฐ€ ์„ค์น˜ํ•˜๊ธฐ๋ฅผ ๊ธฐ๋Œ€ํ•˜๊ธฐ ์ „์— conda์— ๋ชฉ๊ณต์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋ฉด ์ง„ํ–‰ ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์˜ต์…˜์ด ๋‚จ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

  1. ๋ชฉ๊ณต์ด ์ฝ˜๋‹ค์— ์–ธ์ œ ์ถ”๊ฐ€๋˜๋Š”์ง€ ์•Œ์•„๋ณด์‹ญ์‹œ์˜ค(๋ฐ/๋˜๋Š” ์ด๋ฅผ ์‹ ์†ํžˆ ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋จ). ๊ทธ๋•Œ๊นŒ์ง€ ๋ชฉ๊ณต ๋ณ‘ํ•ฉ์„ ๋ณด๋ฅ˜ํ•˜์‹ญ์‹œ์˜ค. ๋ชฉ๊ณต์— ์˜์กดํ•˜๋Š” ์ฝ”๋“œ๋ฅผ ๋ฆด๋ฆฌ์Šคํ•˜๋ ค๋ฉด ์ด ์ž‘์—…์ด ํ•„์š”ํ•˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.
  2. ๋‹จ๊ธฐ์ ์œผ๋กœ ๋ชฉ๊ณต์„ "์„ ํƒ์ " ์ข…์†์„ฑ์œผ๋กœ ๋งŒ๋“ญ๋‹ˆ๋‹ค. ์ฆ‰, ๊ฐ€์ ธ์˜ค๊ธฐ๊ฐ€ ์‹คํŒจํ•˜๋ฉด ์ž๋™ ๊ฒ€์ƒ‰์— ๋Œ€ํ•œ ์ธ์ˆ˜๋กœ ๋ชฉ๊ณต ํ…Œ์ด๋ธ”์„ ์ง€์›ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์žฅ๊ธฐ์ ์œผ๋กœ ๋ณด๋ฉด ๋ชจ๋“  ํŒŒ์ดํ”„๋ผ์ธ/๊ตฌ์„ฑ ์š”์†Œ fit / predict ๋ฉ”์„œ๋“œ์— ๋Œ€ํ•ด ์ด ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๊ฒƒ์ด ์–ด์ƒ‰ํ•˜๊ฒŒ ๋Š๊ปด์ง‘๋‹ˆ๋‹ค. ํŠนํžˆ ์–ด์จŒ๋“  conda์— ๋ชฉ๊ณต์„ ์ถ”๊ฐ€ํ•˜๋ ค๋Š” ๊ฒฝ์šฐ์—๋Š” ์ด ์ž‘์—…์„ ํ”ผํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
  3. ๋ชฉ๊ณต ์ง€์›์„ ๋ณ‘ํ•ฉํ•ฉ๋‹ˆ๋‹ค. evalml์˜ ๋ชจ๋“  conda ์„ค์น˜์—๋Š” ๊ฐ€์ ธ์˜ค๊ธฐ ์˜ค๋ฅ˜๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ชฉ๊ณต์ด ์ฝ˜๋‹ค์— ์˜ฌ ๋•Œ๊นŒ์ง€ ์ด๊ฒƒ์œผ๋กœ ์‚ด์•„๋ผ.
  4. ๋ชฉ๊ณต ์ง€์›์„ ๋ณ‘ํ•ฉํ•ฉ๋‹ˆ๋‹ค. ๋ชฉ๊ณต์ด conda์— ์žˆ์„ ๋•Œ๊นŒ์ง€ conda์— ๋ฆด๋ฆฌ์Šคํ•˜์ง€ ๋งˆ์‹ญ์‹œ์˜ค.

๋‚˜๋Š” ์˜ต์…˜ 1์˜ ํŒฌ์ž…๋‹ˆ๋‹ค. ์ฆ‰, ๋ชฉ๊ณต์„ conda์— ์ ์šฉํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์™œ๋ƒํ•˜๋ฉด ๊ทธ๊ฒƒ์ด ์šฐ๋ฆฌ๊ฐ€ ์žฅ๊ธฐ์ ์œผ๋กœ ํ•˜๊ณ  ์‹ถ์–ดํ•  ๊ฒƒ์ด๋ผ๊ณ  ๋ฏฟ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

conda์— ๋ชฉ๊ณต์„ ์ถ”๊ฐ€ ํ•˜๋Š” ๊ฒƒ์— ๋Œ€ํ•œ ๋ฌธ์ œ๊ฐ€ ์ด๋ฏธ ์ œ๊ธฐ๋œ ๊ฒƒ์„ ๋ด…๋‹ˆ๋‹ค. ํ›„์† ์กฐ์น˜๋ฅผ ์ทจํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

@dsherry ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค! @gsheni ๋Š” ์—ฌ๊ธฐ ์—์„œ ์ด๋ฒˆ์ฃผ๋ง์— ์—…๋ฐ์ดํŠธ๊ฐ€ ์žˆ์„ ๊ฒƒ์ด๋ผ๊ณ  ์–ธ๊ธ‰ํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ ‡๋‹ค๋ฉด 10์›” ๋ฆด๋ฆฌ์Šค๋ฅผ ์œ„ํ•ด ๋ณ‘ํ•ฉ์„ ๋ณด๋ฅ˜ํ•ด์•ผ ํ•ฉ๋‹ˆ๊นŒ?

@angela97lin ๋„ค, ๋ฆด๋ฆฌ์Šค๊ฐ€ ๋ฉฐ์น  ์•ˆ์— ์žˆ๊ณ  ์—ฌ๋Ÿฌ๋ถ„๋„ ์ž ์‹œ ๋ฐ–์— ์žˆ์„ ์ˆ˜ ์žˆ๋‹ค๋Š” ์ ์„ ๊ฐ์•ˆํ•  ๋•Œ ๋‚˜์ค‘์— ๋ณ‘ํ•ฉ๋  ๋•Œ๊นŒ์ง€ ๊ธฐ๋‹ค๋ฆฌ๋Š” ๊ฒƒ์€ ๊ทธ๋ฆฌ ํฐ ๋ฌธ์ œ๊ฐ€ ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๋ชฉ๊ณต ์—…๊ทธ๋ ˆ์ด๋“œ์— ๋Œ€ํ•ด @angela97lin ๋ฐ @freddyaboulton ๊ณผ ๋ฐฉ๊ธˆ ์ฑ„ํŒ…ํ–ˆ์Šต๋‹ˆ๋‹ค. ๋‹ค์Œ์€ ํ˜„์žฌ ๋ฏธ๊ฒฐ์ œ/์ง„ํ–‰ ์ค‘์ธ ๊ฒƒ์œผ๋กœ ๋‚˜์—ดํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

  • ๋ฐ์ดํ„ฐ ํ™•์ธ ์—…๋ฐ์ดํŠธ(์ง„ํ–‰ ์ค‘)
  • ํ•ด๋‹น๋˜๋Š” ๊ฒฝ์šฐ ๋ชฉ๊ณต ์œ ํ˜•์„ ์‚ฌ์šฉํ•˜๋„๋ก ๋ชจ๋“  ๊ตฌ์„ฑ์š”์†Œ๋ฅผ ์—…๋ฐ์ดํŠธํ•ฉ๋‹ˆ๋‹ค(#1290).
  • ๋ชจ๋ธ ์ดํ•ด ๋ฐฉ๋ฒ• ์—…๋ฐ์ดํŠธ
  • ํŒŒ์ดํ”„๋ผ์ธ/๊ตฌ์„ฑ ์š”์†Œ transform / predict ์—์„œ ํŒ๋‹ค ๋Œ€์‹  ๋ชฉ๊ณต์„ ๋ฐ˜ํ™˜ํ•˜๊ณ  ์‚ฌ์šฉ์ž ์ž…๋ ฅ ๋ฐ์ดํ„ฐ์˜ ์‚ฌ๋ณธ์ด๋‚˜ ํ™•์žฅ์„ ๋ฐ˜ํ™˜ํ•˜๋Š” ๊ณณ์ด๋ฉด ์–ด๋””๋“ ์ง€ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.
  • ๋ชฉ๊ณต ์œ ํ˜•์„ ์‚ฌ์šฉํ•˜๋„๋ก ์ด์ „ dtype ๋ชฉ๋ก๊ณผ ๋ชจ๋“  ์‚ฌ์šฉ๋ฒ•์„ ์—…๋ฐ์ดํŠธํ•˜์‹ญ์‹œ์˜ค .

@angela97lin ์ œ๊ฐ€ ๋†“์นœ๊ฒŒ ์žˆ๋‚˜์š”?

@dsherry ๊ฑฐ์˜ ๋งž๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค!

  • Woodwork ์‚ฌ์šฉ์„ ์œ„ํ•œ ๋ฌธ์„œ ์—…๋ฐ์ดํŠธ(์ง„ํ–‰ ์ค‘, #1466)
  • ๋ฐ์ดํ„ฐ ํ™•์ธ ์—…๋ฐ์ดํŠธ(์ง„ํ–‰ ์ค‘, #1481)
  • ๋ฌธ์„œ์—์„œ ๋‹ค๋ฃจ์ง€ ์•Š์€ ๋ชจ๋ธ ์ดํ•ด ๋ฐฉ๋ฒ• + ๊ทธ๋ž˜ํ”„ ์—…๋ฐ์ดํŠธ ์—…๋ฐ์ดํŠธ
  • ํŒŒ์ดํ”„๋ผ์ธ/๊ตฌ์„ฑ ์š”์†Œ transform / predict ์—์„œ ํŒ๋‹ค ๋Œ€์‹  ๋ชฉ๊ณต์„ ๋ฐ˜ํ™˜ํ•˜๊ณ  ์‚ฌ์šฉ์ž๊ฐ€ ์ž…๋ ฅํ•œ ๋ฐ์ดํ„ฐ์˜ ๋ณต์‚ฌ๋ณธ ๋˜๋Š” ํ™•์žฅ์„ ๋ฐ˜ํ™˜ํ•˜๋Š” ๊ณณ(#1406)
  • ๋ชฉ๊ณต ์œ ํ˜• #1290์„ ์‚ฌ์šฉํ•˜๋„๋ก ์ด์ „ dtype ๋ชฉ๋ก๊ณผ ๋ชจ๋“  ์‚ฌ์šฉ๋ฒ•์„ ์—…๋ฐ์ดํŠธํ•˜์‹ญ์‹œ์˜ค .

@angela97lin ๊ต‰์žฅํ•ฉ๋‹ˆ๋‹ค, ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค!

@chukarsten @dsherry ์ด ์—ํ”ฝ๊ณผ ๊ด€๋ จ๋œ ๋ชจ๋“  ๋ฌธ์ œ๊ฐ€ ์ข…๋ฃŒ๋˜์—ˆ์Šต๋‹ˆ๋‹ค! ์ด ์—ํ”ฝ์„ ๋‹ซ๊ณ  ๊ฐœ๋ณ„์ ์œผ๋กœ ๋ฐœ์ƒํ•˜๋Š” WW ๋ฌธ์ œ๋ฅผ ์ถ”์ ํ•˜๋Š” ๊ฒƒ์ด ์•ˆ์ „ํ•ฉ๋‹ˆ๊นŒ? :)

์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰