Evalml: ์ž๋™ ๋ชฉํ‘œ๋กœ ํšŒ์ˆ˜ ํ—ˆ์šฉ ์•ˆ ํ•จ

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

๋ฌธ์ œ
ํ•ญ์ƒ ์ฐธ์„ ์˜ˆ์ธกํ•˜๋Š” ๋ชจ๋ธ์€ ์™„๋ฒฝํ•œ ์žฌํ˜„์œจ์„ ๊ฐ–์Šต๋‹ˆ๋‹ค. automl์ด ํšŒ์ˆ˜๋ฅผ ์ตœ์ ํ™”ํ•˜๋„๋ก ํ—ˆ์šฉํ•จ์œผ๋กœ์จ ์šฐ๋ฆฌ๋Š” ์‚ฌ์†Œํ•œ ๋ชจ๋ธ์„ ์ƒ์„ฑํ•˜๋„๋ก ๊ถŒ์žฅํ•ฉ๋‹ˆ๋‹ค.

์—ฌ๊ธฐ์—์„œ ์œ ์šฉํ•œ ์ฐธ์กฐ๋ฅผ ์ฐธ์กฐํ•˜์‹ญ์‹œ์˜ค.

์ œ์•ˆ
ํšŒ์ˆ˜ ๋ชฉํ‘œ๋ฅผ ์‚ญ์ œํ•ฉ๋‹ˆ๋‹ค.

์ผ๋ฐ˜์ ์œผ๋กœ automl ๋ชฉํ‘œ ์„ธํŠธ๋ฅผ ์šฐ๋ฆฌ๊ฐ€ ๊ฐ€์น˜ ์žˆ๋‹ค๊ณ  ๋Š๋ผ๋Š” ๊ฒƒ์œผ๋กœ ์ œํ•œํ•ด์•ผ ํ•˜๋ฉฐ ์ด๋Ÿฌํ•œ ๋ชฉํ‘œ๋ฅผ ์ตœ์ ํ™”ํ•˜๋ฉด ์ข‹์€ ๋ชจ๋ธ์ด ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค.

์ด์ง„ ๋ถ„๋ฅ˜ ๋ชฉํ‘œ๋„ ์ถ”๊ฐ€ํ•ด์•ผ ํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. #457์—๋Š” ๋ถˆ๊ท ํ˜• ํด๋ž˜์Šค์— ์ข‹์€ ์ œ์•ˆ์ด ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

์งˆ๋ฌธ
*์ •๋ฐ€๋„์— ๋Œ€ํ•ด ๋น„์Šทํ•œ ์ฃผ์žฅ์„ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ? ์•„๋‹ˆ๋ฉด ์ตœ์ ํ™”ํ•  ๊ฐ€์น˜๊ฐ€ ์žˆ์Šต๋‹ˆ๊นŒ?
*์ •ํ™•์„ฑ์„ ์œ„ํ•ด ๋น„์Šทํ•œ ์ฃผ์žฅ์„ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ(#294)?

@angela97lin @kmax12

enhancement

๊ฐ€์žฅ ์œ ์šฉํ•œ ๋Œ“๊ธ€

๋‚˜๋Š” ๊ทธ๋“ค์ด ๋‹น์‹ ์—๊ฒŒ ์‚ฌ์†Œํ•œ ๋ชจ๋ธ์„ ์ œ๊ณตํ•˜์ง€ ์•Š์„ ๊ฒƒ์ด๋ผ๋Š” ์ ์—์„œ ์ •๋ฐ€๋„์™€ ์ •ํ™•์„ฑ์ด ์ข‹๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

์šฐ๋ฆฌ๋Š” ๋ฐ˜๋“œ์‹œ ๋ชฉํ‘œ๋กœ ํšŒ์ˆ˜๋ฅผ ์‚ญ์ œํ•˜๊ณ  ์‹ถ์ง€๋Š” ์•Š์Šต๋‹ˆ๋‹ค. ๋‹จ์ง€ automl ๊ฒ€์ƒ‰์—์„œ ์ด์— ๋Œ€ํ•ด ์ตœ์ ํ™”๋˜์–ด์„œ๋Š” ์•ˆ ๋ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด f1์— ๋Œ€ํ•ด ์ตœ์ ํ™”ํ•˜๊ณ  ์‹ถ์ง€๋งŒ ๊ทธ์™€ ํ•จ๊ป˜ ๋‚ด ํšŒ์ƒ ์ ์ˆ˜๋ฅผ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

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

๋‚˜๋Š” ๊ทธ๋“ค์ด ๋‹น์‹ ์—๊ฒŒ ์‚ฌ์†Œํ•œ ๋ชจ๋ธ์„ ์ œ๊ณตํ•˜์ง€ ์•Š์„ ๊ฒƒ์ด๋ผ๋Š” ์ ์—์„œ ์ •๋ฐ€๋„์™€ ์ •ํ™•์„ฑ์ด ์ข‹๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

์šฐ๋ฆฌ๋Š” ๋ฐ˜๋“œ์‹œ ๋ชฉํ‘œ๋กœ ํšŒ์ˆ˜๋ฅผ ์‚ญ์ œํ•˜๊ณ  ์‹ถ์ง€๋Š” ์•Š์Šต๋‹ˆ๋‹ค. ๋‹จ์ง€ automl ๊ฒ€์ƒ‰์—์„œ ์ด์— ๋Œ€ํ•ด ์ตœ์ ํ™”๋˜์–ด์„œ๋Š” ์•ˆ ๋ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด f1์— ๋Œ€ํ•ด ์ตœ์ ํ™”ํ•˜๊ณ  ์‹ถ์ง€๋งŒ ๊ทธ์™€ ํ•จ๊ป˜ ๋‚ด ํšŒ์ƒ ์ ์ˆ˜๋ฅผ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

@kmax12 ๋„ค, ๋งž์Šต๋‹ˆ๋‹ค. ๋ฆฌ์ฝœ์„ ๊ณ„์‚ฐํ•˜๋Š” ์ฝ”๋“œ๋ฅผ ์‚ญ์ œํ•˜๊ณ  ์‹ถ์ง€ ์•Š๊ณ  ํŒŒ์ดํ”„๋ผ์ธ์˜ ์ ์ˆ˜๋กœ ์ปดํ“จํŒ… ๋ฆฌ์ฝœ์„ ๊ณ„์† ์ง€์›ํ•˜๊ณ  ์‹ถ์ง€๋งŒ automl์—์„œ ์ง€์›๋˜๋Š” ์ตœ์ ํ™” ๋ชฉํ‘œ๋กœ ํ—ˆ์šฉํ•˜์ง€ ์•Š์œผ๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค.

์ด๊ฒƒ์€ ROC ๋ฐ ํ˜ผ๋™ ํ–‰๋ ฌ(#427, #365)์— ๋Œ€ํ•œ ์ด์ง„ ๋ถ„๋ฅ˜ ํ”Œ๋กœํŒ…/์ •๋ณด ๋ฐฉ๋ฒ•์— ๋Œ€ํ•œ ์ง€์†์ ์ธ ๋…ผ์˜๋ฅผ ์ƒ๊ธฐ์‹œํ‚ต๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ๋“ค์€ automl์—์„œ ์ตœ์ ํ™”ํ•  ์ˆ˜ ์žˆ๋Š” ์ธก์ •ํ•ญ๋ชฉ์ด ์•„๋‹ˆ๋ฉฐ ๋‹จ์ผ ์ˆซ์ž ์ ์ˆ˜๋„ ์•„๋‹ˆ์ง€๋งŒ API์—์„œ ์ •์˜ํ•˜๋Š” ๊ฐ€์žฅ ์‰ฌ์šด ๋ฐฉ๋ฒ•์€ ์ด๋ฅผ ObjectiveBase ์˜ ์ธ์Šคํ„ด์Šค๋กœ ์ถ”๊ฐ€ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

ํ˜„์žฌ ํŒŒ์ดํ”„๋ผ์ธ์„ ์‚ฌ์šฉํ•˜์—ฌ ๊ณ„์‚ฐํ•  ์ˆ˜ ์žˆ๋Š” ์—ฌ๋Ÿฌ ๊ฐ€์ง€๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

  1. ์˜ˆ์ธก
  2. automl์— ๋Œ€ํ•œ ๋ชฉ์  ํ•จ์ˆ˜ ์ ์ˆ˜
  3. automl ์ดํ›„์˜ ์Šค์ฝ”์–ด๋ง ๋ฉ”ํŠธ๋ฆญ
  4. ๋ฐ์ดํ„ฐ ํ”Œ๋กœํŒ…(์ด์ง„ ๋ถ„๋ฅ˜์˜ ์˜ˆ: ROC ๊ณก์„ , ํ˜ผ๋™ ํ–‰๋ ฌ)
  5. ๊ธฐ๋Šฅ ์ค‘์š”๋„

์ง€๊ธˆ๊นŒ์ง€ ObjectiveBase ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ 2, 3, 4๋ฅผ ๋‚˜ํƒ€๋‚ด๋ ค๊ณ  ํ–ˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ์ฆ‰, automl ํ”„๋กœ์„ธ์Šค์™€ ๋ณ„๋„๋กœ ์ฑ„์  ๋ฐฉ๋ฒ•๊ณผ ํ”Œ๋กœํŒ… ๋ฐฉ๋ฒ•์„ ์ •์˜ํ•˜๋Š” ๋ช…ํ™•ํ•œ API๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. .

์—ฌ๊ธฐ์—์„œ ๋‹ค์Œ ๋‹จ๊ณ„๋Š” ์ด๋Ÿฌํ•œ API๋ฅผ ์„ค๊ณ„ํ•˜๋Š” ๊ฒƒ์ด์–ด์•ผ ํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฏธ #392๋กœ ์‹ ๊ณ ํ•œ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ์ฐจ๋‹จ๋˜๋„๋ก ์ด ํ‹ฐ์ผ“์„ ์—…๋ฐ์ดํŠธํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

์ง€๊ธˆ ๋ชฉํ‘œ API ์žฌ์ž‘์—…์„ ์œ„ํ•ด ROC์™€ Confusion Matrix๋ฅผ PlotMetrics ๋กœ ์˜ฎ๊ฒผ์Šต๋‹ˆ๋‹ค. ๊นจ๋Š” ๊ฒƒ). ๋˜ํ•œ can_optimize_threshold ๋ฅผ BinaryClassificationObjective ์— ๋Œ€ํ•œ ์†์„ฑ์œผ๋กœ ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ fit()์ด can_optimize_threshold=True ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ชฉํ‘œ์™€ ํ•จ๊ป˜ ํ˜ธ์ถœ๋˜๋ฉด ํ•ด๋‹น ๋ชฉํ‘œ์— ๋Œ€ํ•ด ์ตœ์ ํ™”ํ•˜๊ณ , ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด ๋‹ค์Œ์„ ์œ„ํ•ด ์ตœ์ ํ™”ํ•ฉ๋‹ˆ๋‹ค. ์ •ํ™•์„ฑ. ์ด์— ๋Œ€ํ•œ ์ƒ๊ฐ๊ณผ ์ด๊ฒƒ์ด ์—ฌ๊ธฐ์—์„œ ์ œ๊ธฐ๋œ ๋ช‡ ๊ฐ€์ง€ ์งˆ๋ฌธ๊ณผ ์–ด๋–ป๊ฒŒ ์ผ์น˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ? ์‚ฌ์šฉ์ž๊ฐ€ ๋ฆฌ์ฝœ์—์„œ fit ๋ฅผ ํ˜ธ์ถœํ–ˆ์ง€๋งŒ ๋Œ€์‹  ์ •ํ™•๋„์— ์ตœ์ ํ™”ํ–ˆ๋Š”์ง€ ์—ฌ๋ถ€๊ฐ€ ๋ถˆ๋ถ„๋ช…ํ•ฉ๋‹ˆ๊นŒ?

@angela97lin ์˜ˆ, ObjectiveBase ์—์„œ ROC/confusion์„ ์ œ๊ฑฐํ•œ ๊ฒƒ์ด ๊ธ์ •์ ์ธ ๋‹จ๊ณ„๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค! ๋‚˜๋Š” #392๊ฐ€ ๋” ๋‚˜์•„๊ฐ€์•ผ ํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•œ๋‹ค. ๋Œ€์‹  #392์—์„œ API๋ฅผ ์—…๋ฐ์ดํŠธํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•œ ๋Œ€ํ™”๋ฅผ ๊ณ„์†ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ ‡๊ฒŒ ํ•˜๋ฉด ์ด ๋ฌธ์ œ๋ฅผ ๋ณด๋‹ค ์ผ๋ฐ˜์ ์œผ๋กœ ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•œ ๊ฒฐ์ •์„ ๋‚ด๋ฆฐ ํ›„ ์—…๋ฐ์ดํŠธ ํšŒ์ˆ˜๋ฅผ ์ถ”์ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋˜ํ•œ ์ด์ง„ ๋ถ„๋ฅ˜ ์ž„๊ณ„๊ฐ’ ์ตœ์ ํ™”๋Š” ๋ณ„๋„์˜ ์ฃผ์ œ์ด๋ฉฐ ๊ฐ์‚ฌํ•˜๊ฒŒ๋„ #346์—์„œ ์ง„ํ–‰ ์ค‘์ธ ์ž‘์—…์ด 100% ์ฒ˜๋ฆฌ๋˜๊ณ  ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค!

์•ž์„œ @eccabay ๋ฐ @jeremyliweishih ์™€์˜ ํ† ๋ก  ์š”์•ฝ: ์ด๋ฅผ ์ง€์›ํ•˜๋Š” ์˜ต์…˜์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

  • ํšŒ์ˆ˜ ๋ชฉํ‘œ๋ฅผ ์™„์ „ํžˆ ์‚ญ์ œํ•˜์‹ญ์‹œ์˜ค.
  • objectives/utils.py OPTIONS ์—์„œ ํšŒ์ˆ˜ ๋ชฉํ‘œ์— ๋Œ€ํ•œ ํ•ญ๋ชฉ์„ ์‚ญ์ œํ•˜๊ณ  automl์—์„œ ํ•ด๋‹น ๋ชฉํ‘œ๋ฅผ ํ—ˆ์šฉํ•˜์ง€ ์•Š๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.
์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰