Evalml: ํด๋ž˜์Šค ๊ณ„์ธต์—์„œ "๋ฆฌํ”„" ์ž์‹์ด ์•„๋‹Œ ๊ตฌ์„ฑ ์š”์†Œ ํ—ˆ์šฉ

์— ๋งŒ๋“  2021๋…„ 03์›” 23์ผ  ยท  4์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: alteryx/evalml

#1989 ์ž‘์—…์—์„œ @freddyaboulton ์€ TargetImputer ๋ฅผ SimpleImputer ์˜ ํ•˜์œ„ ํด๋ž˜์Šค๋กœ ๋งŒ๋“ค ๊ฒƒ์„ ์ œ์•ˆํ–ˆ์Šต๋‹ˆ๋‹ค. ๋ถˆํ–‰ํžˆ๋„ _get_subclasses ์—์„œ ์‹คํ–‰ ๊ฐ€๋Šฅํ•œ ๊ตฌ์„ฑ ์š”์†Œ๋ฅผ ์ฐพ์„ ๋•Œ _get_subclasses ๋Š” ๊ณ„์ธต ๊ตฌ์กฐ์˜ ๋งจ ์•„๋ž˜์—์žˆ๋Š” ํด๋ž˜์Šค ๋งŒ ์ˆ˜์ง‘ํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ:

ComponentBase --> Transformer --> SimpleImputer # will only grab SimpleImputer

๋ฌธ์ œ๋Š” SimpleImputer๋ฅผ ํ•˜์œ„ ํด๋ž˜์Šค๋กœ ๋ถ„๋ฅ˜ํ•˜๋ฉด TargetImputer์— ์•ก์„ธ์Šค ํ•  ์ˆ˜ ์žˆ์ง€๋งŒ EvalML์—์„œ ๋” ์ด์ƒ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ๊ตฌ์„ฑ ์š”์†Œ๋กœ SimpleImputer ๋ฅผ ์ฐพ์„ ์ˆ˜ ์—†๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

ComponentBase --> Transformer --> SimpleImputer --> TargetImputer 
# will only grab TargetImputer, SimpleImputer is no longer a leaf

์›๋ž˜ ์˜๋„๋Š” ์œ ์šฉํ•˜์ง€ ์•Š์€ ํด๋ž˜์Šค (์˜ˆ : Transformer)๋ฅผ ๊ฐ€์ ธ ์˜ค์ง€ ์•Š๋Š” ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ•˜์ง€๋งŒ, ์œ ์šฉํ•œ ๊ตฌ์„ฑ ์š”์†Œ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ์ƒˆ๋กœ์šด ๊ตฌ์„ฑ ์š”์†Œ๋ฅผ ์ƒ์„ฑํ•˜๋ ค๋Š” ๊ฒฝ์šฐ ๋ฌธ์ œ๊ฐ€๋ฉ๋‹ˆ๋‹ค.

์—ฌ๊ธฐ์— ์›๋ž˜ ์˜๊ฒฌ: https://github.com/alteryx/evalml/pull/1989#discussion_r599894996

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

์˜ต์…˜ :
1.) TargetImputer๊ฐ€ SimpleImputer๋ฅผ ์‚ฌ์šฉํ•˜๋„๋ก ํ•ฉ๋‹ˆ๋‹ค.
2.) TargetImputer ๊ตฌ์„ฑ ์š”์†Œ๋ฅผ ์ •์˜ํ•˜์ง€ ๋ง๊ณ  ๋Œ€์‹  SimpleImputer๋ฅผ ๋Œ€์ƒ์— ์ ์šฉํ•˜์‹ญ์‹œ์˜ค.
3.) ์ •์  ๊ตฌ์„ฑ ์š”์†Œ ๋ชฉ๋ก์„ ์œ„ํ•ด _get_subclasses ()๋ฅผ ์‚ญ์ œํ•ฉ๋‹ˆ๋‹ค. (์„ ํ˜ธ)
4.) _get_subclasses()๋ฅผ ๋” ๋˜‘๋˜‘ํ•˜๊ฒŒ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

๋‹ค์Œ ๋‹จ๊ณ„: ์ด ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๊ฒฐ์ •ํ•˜๊ธฐ ์œ„ํ•ด ํ† ๋ก  ์ผ์ •์„ ์žก์Šต๋‹ˆ๋‹ค.

๋‚ด ์˜๊ฒฌ์€ ์šฐ๋ฆฌ๊ฐ€ ์ฝ”๋“œ๋ฒ ์ด์Šค์—์„œ ๊ธฐ๋ณธ์ด ์•„๋‹Œ ํด๋ž˜์Šค์˜ ์ƒ์†์„ ๋ณด๋‹ค ์ผ๋ฐ˜์ ์ธ ํŒจํ„ด์œผ๋กœ ๋งŒ๋“ค๊ณ  ์‹ถ์ง€ ์•Š๋‹ค๋ฉด ์•„๋ฌด๊ฒƒ๋„ ๋ณ€๊ฒฝํ•ด์„œ๋Š” ์•ˆ ๋œ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ํ˜„์žฌ ๊ทธ๋ ‡๊ฒŒ ํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ๊ทธ๊ฒƒ์„ ํ—ˆ์šฉํ•˜๋Š” ์‹œ์Šคํ…œ์„ ๊ตฌ์ถ•ํ•˜๋Š” ๊ฒƒ์€ ๋‚˜์—๊ฒŒ ๋‚ฎ์€ ์šฐ์„ ์ˆœ์œ„๋กœ ๋ณด์ž…๋‹ˆ๋‹ค.

์ด ๋ฌธ์ œ๋Š” ๋ชฉํ‘œ ์ „๊ฐ€ ์ž๋‚˜ ์šฐ๋ฆฌ๊ฐ€ ์•ž๋‘๊ณ ์žˆ๋Š” ๋‹จ๊ธฐ ์ž‘์—…๊ณผ ํ•˜์œ„ ํด๋ž˜์Šค "์ž‘๋™"์„ ์‹๋ณ„ํ•˜๋Š” ํ˜„์žฌ ์‹œ์Šคํ…œ์„ ์ฐจ๋‹จํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๊ฐ€ ์ •๋ง๋กœ 3์„ ์›ํ•œ๋‹ค๋ฉด ๊ทธ๊ฒƒ์€ ๋˜ ๋‹ค๋ฅธ ์ด์•ผ๊ธฐ์ž…๋‹ˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ๋ฏธ๋ž˜์— TargetImputer์—์„œ SimpleImputer๋ฅผ ํ™œ์šฉํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด ์ƒ์†๋ณด๋‹ค ํ•ฉ์„ฑ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์ด ์˜ต์…˜ 1์ด ์ฐธ์กฐํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์—ฌ๊ธฐ์„œ @freddyaboulton์— ๋™์˜ํ•ฉ๋‹ˆ๋‹ค. ๋˜ํ•œ ์ •์  ๊ตฌ์„ฑ ์š”์†Œ ๋ชฉ๋ก์„ ์ถ”์ ํ•˜๋Š” ๊ฒƒ์ด ์ ์  ๋” ๋งŽ์€ ๊ตฌ์„ฑ ์š”์†Œ๋ฅผ ์ถ”๊ฐ€ํ•จ์— ๋”ฐ๋ผ ์•ฝ๊ฐ„ ์ง€๋ฃจํ•˜๊ณ  ์‹ค๋ง _get_subclasses() ๋ฅผ ์ •์˜ํ–ˆ๋‹ค๋Š” ์ ์— ์ฃผ๋ชฉํ•  ๊ฐ€์น˜๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. 3 ๊ฐœ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ _get_subclasses() ๋ฅผ ์œ ์ง€ํ•˜๋Š” ๊ฒƒ์ด ๋” ํ•ฉ๋ฆฌ์  ์ผ ์ˆ˜ ์žˆ์ง€๋งŒ SimpleImputer / TargetImputer ์ผ€์ด์Šค์™€ ๊ฐ™์€ "์˜ˆ์™ธ"๋ชฉ๋ก๋„ ์œ ์ง€ํ•˜์—ฌ ํฌํ•จ๋˜๋„๋กํ•˜์ง€๋งŒ Transformer ์€ (๋Š”) ์—ฌ์ „ํžˆ ์ œ์™ธ๋ฉ๋‹ˆ๋‹ค.

์ž‘์—…์ด ์™„๋ฃŒ๋˜๋ฉด ์ž‘๊ณก๊ณผ ๊ฐ™์€ ๊ธฐ๋ฒ•์— ๋Œ€ํ•œ ์•„์ด๋””์–ด๋„ ๊ดœ์ฐฎ์Šต๋‹ˆ๋‹ค.

@angela97lin ์ด๊ฑธ ๋‹ซ์•„๋„ ๋ ๊นŒ์š”? TargetImputer / ๊ธฐํƒ€ ๊ตฌ์„ฑ ์š”์†Œ๋ฅผ ๊ฐœ๋ฐœํ•˜๊ธฐ ์œ„ํ•ด _get_subclasses ๋ฅผ ๋ณ€๊ฒฝํ•  ํ•„์š”๊ฐ€ ์—†๋‹ค๋Š” ๋ฐ ๋™์˜ํ•ฉ๋‹ˆ๋‹ค.

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