๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

Python/ML

[ML] ํ”ผ์ฒ˜ ์—”์ง€๋‹ˆ์–ด๋ง(Feature Engineering)

๐Ÿ“ข ํ”ผ์ฒ˜ ์—”์ง€๋‹ˆ์–ด๋ง์ด๋ž€?

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

 

ํ”ผ์ฒ˜ ์—”์ง€๋‹ˆ์–ด๋ง์˜ ๋ถ„๋ฅ˜

ํŠน์„ฑ ์„ ํƒ(Feature Selection) - ํ•ด๋‹น ๋ถ„์•ผ์˜ ์ „๋ฌธ๊ฐ€์˜ ์ง€์‹์ด๋‚˜, ํŠน์„ฑ์˜ ์ค‘์š”๋„์— ๋”ฐ๋ผ ์ผ๋ถ€ ํŠน์„ฑ์„ ๋ฒ„๋ฆฌ๊ฑฐ๋‚˜ ์„ ํƒํ•˜๋Š” ๊ฒƒ
ํŠน์„ฑ ์ถ”์ถœ(Feature Extraction) - ํŠน์„ฑ๋“ค์˜ ์กฐํ•ฉ์œผ๋กœ ์•„์˜ˆ ์ƒˆ๋กœ์šด ํŠน์„ฑ์„ ์ƒ์„ฑ
๋ฒ”์œ„ ๋ณ€ํ™˜(Scaling) - ๋ณ€์ˆ˜์˜ ๋ถ„ํฌ๊ฐ€ ํŽธํ–ฅ๋˜์–ด ์žˆ๊ฑฐ๋‚˜, ์ด์ƒ์น˜๊ฐ€ ๋งŽ์ด ์กด์žฌํ•˜์—ฌ ๊ทธ ํŠน์„ฑ์„ ํ™œ์šฉํ•˜๊ธฐ๊ฐ€ ์–ด๋ ค์šธ ๊ฒฝ์šฐ ๋ณ€์ˆ˜์˜ ๋ฒ”์œ„๋ฅผ ์กฐ์ •ํ•˜๋Š” ์ž‘์—…
๋ณ€ํ˜•(Transform) - ๊ธฐ์กด์— ์กด์žฌํ•˜๋Š” ๋ณ€์ˆ˜์˜ ์„ฑ์งˆ์„ ์ด์šฉํ•˜์—ฌ ์ƒˆ๋กœ์šด ๋ณ€์ˆ˜๋ฅผ ์ƒ์„ฑ
๋ฒ”์ฃผํ™”(Binning) - ์—ฐ์†ํ˜• ๋ณ€์ˆ˜๋ฅผ ๋ฒ”์ฃผํ˜• ๋ณ€์ˆ˜๋กœ ๋ณ€ํ™˜
์ˆซ์žํ™”(Dummy) - ๋ฒ”์ฃผํ˜• ๋ณ€์ˆ˜๋ฅผ ์—ฐ์†ํ˜• ๋ณ€์ˆ˜๋กœ ๋ณ€ํ™˜

 

๐Ÿ“– ๋ณ€์ˆ˜ ์Šค์ผ€์ผ๋ง

  • ํ”ผ์ฒ˜์˜ ๋ฒ”์œ„๋ฅผ ์กฐ์ •ํ•˜์—ฌ ์ •๊ทœํ™”ํ•˜๋Š” ๊ฒƒ์ด๋‹ค.
  • ํ”ผ์ฒ˜์˜ ๋ถ„์‚ฐ๊ณผ ํ‘œ์ค€ํŽธ์ฐจ๋ฅผ ์กฐ์ •ํ•˜์—ฌ ์ •๊ทœ๋ถ„ํฌ๋ฅผ ๋„๊ฒŒ ํ•œ๋‹ค.

๐Ÿค”์™œ ์ค‘์š”ํ• ๊นŒ?

  • ํ”ผ์ฒ˜์˜ ๋ฒ”์œ„๊ฐ€ ๋‹ค๋ฅด๋ฉด ํ”ผ์ฒ˜๋ผ๋ฆฌ ๋น„๊ตํ•˜๊ธฐ๊ฐ€ ์–ด๋ ต๊ณ , ์ผ๋ถ€ ๋จธ์‹ ๋Ÿฌ๋‹ ๋ชจ๋ธ์—์„œ๋Š” ๋™์ž‘ํ•˜์ง€ ์•Š๋Š”๋‹ค.
  • ์ž˜ ๋˜์–ด์žˆ์œผ๋ฉด ์„œ๋กœ ๋‹ค๋ฅธ ๋ณ€์ˆ˜๋ผ๋ฆฌ ๋น„๊ตํ•˜๋Š” ๊ฒƒ์ด ํŽธ๋ฆฌํ•˜๋‹ค.

โ€ป์ฃผ์˜!

ํŠธ๋ฆฌ๊ธฐ๋ฐ˜ ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ ์Šค์ผ€์ผ๋ง์— ํฌ๊ฒŒ ์˜ํ–ฅ์„ ๋ฐ›์ง€ ์•Š๋Š”๋‹ค. ์ ˆ๋Œ€์ ์ธ ํฌ๊ธฐ๋ณด๋‹ค ์ƒ๋Œ€์ ์ธ ํฌ๊ธฐ์— ์˜ํ–ฅ์„ ๋ฐ›๊ธฐ ๋•Œ๋ฌธ์— ์Šค์ผ€์ผ๋ง์„ ํ•ด๋„ ์ƒ๋Œ€์  ํฌ๊ธฐ ๊ด€๊ณ„๋Š” ๊ฐ™๊ฒŒ ๋œ๋‹ค.

์Šค์ผ€์ผ๋ง ๊ธฐ๋ฒ• 3๊ฐ€์ง€

1. Normalization - Standardization(Z-score scaling)

  • ํ‰๊ท ์„ ๋นผ์ฃผ๊ณ  ํ‘œ์ค€ํŽธ์ฐจ๋ฅผ ๋‚˜๋ˆ ์ค€๋‹ค.
  • ๋‹จ์ : ์ด์ƒ์น˜๊ฐ€ ์žˆ์œผ๋ฉด ์˜ˆ์ธก๋ ฅ์„ ์†์ƒ์‹œํ‚จ๋‹ค.

2. Min-Max scaling

  • 0-1 ์‚ฌ์ด์˜ ๊ฐ’์œผ๋กœ ๋งŒ๋“ ๋‹ค.
  • ๋‹จ์ : ์ด์ƒ์น˜๊ฐ€ ์žˆ์œผ๋ฉด ์˜ˆ์ธก๋ ฅ์„ ์†์ƒ์‹œํ‚จ๋‹ค.

3. Robust scaling

  • ์ค‘์•™๊ฐ’(Q2)์„ ๋นผ์ฃผ๊ณ  IQR๊ฐ’์œผ๋กœ ๋‚˜๋ˆ ์ค€๋‹ค.
  • ์œ„์˜ ๋‹จ์ ๋“ค์„ ๋ณด์™„ํ•œ ์Šค์ผ€์ผ๋ง ๊ธฐ๋ฒ•์œผ๋กœ ์ด์ƒ์น˜์— ๋œ ๋ฏผ๊ฐํ•˜๋‹ค.

 

๐Ÿ“– ํŠธ๋žœ์Šคํฌ๋ฉ”์ด์…˜

ํ”ผ์ฒ˜ ์Šค์ผ€์ผ๋ง์„ ํ†ตํ•ด ๋ฒ”์œ„๋ฅผ ์กฐ์ ˆํ•˜์—ฌ ์ •๊ทœ๋ถ„ํฌ์˜ ํ˜•ํƒœ๋ฅผ ๋งŒ๋“ค์ง€๋งŒ ๋ถ„ํฌ ์ž์ฒด๋Š” ์œ ์ง€๋˜๊ธฐ ๋•Œ๋ฌธ์— ์ •๊ทœ๋ถ„ํฌ๊ฐ€ ์•„๋‹Œ ํ˜•ํƒœ์—์„œ ๊ทธ๋ƒฅ ํ”ผ์ฒ˜ ์Šค์ผ€์ผ๋ง๋งŒ ํ•œ๋‹ค๋ฉด ๋ณ„๋กœ ์ข‹์ง€ ์•Š์€ ์„ ํƒ์ด๋‹ค. ๊ฒฐ๊ตญ ํ‘œ์ค€์ •๊ทœ๋ถ„ํฌ๋ฅผ ๋งŒ๋“ค์–ด์ค˜์•ผํ•˜๋Š”๋ฐ ๋จผ์ € ์ •๊ทœ๋ถ„ํฌ์˜ ํ˜•ํƒœ๋ฅผ ๋งŒ๋“ค์–ด์ฃผ๊ณ  ํ”ผ์ฒ˜ ์Šค์ผ€์ผ๋ง์„ ํ•ด์ค˜์•ผํ•œ๋‹ค. ์ด๋•Œ ์ •๊ทœ๋ถ„ํฌ๋ฅผ ๋งŒ๋“œ๋Š” ๊ณผ์ •์— ๋กœ๊ทธ ํŠธ๋žœ์Šคํฌ๋ฉ”์ด์…˜์ด ํ•„์š”ํ•˜๋‹ค.

๐Ÿค” ์™œ ๋กœ๊ทธ๊ฐ€ ํ•„์š”ํ•œ๊ฐ€?

๋กœ๊ทธ ๊ทธ๋ž˜ํ”„

๋‹ค์Œ์˜ ๊ทธ๋ž˜ํ”„๋ฅผ ๋ณด๋ฉด x๊ฐ’์ด ์ปค์งˆ์ˆ˜๋ก ๊ธฐ์šธ๊ธฐ๊ฐ€ ์™„๋งŒํ•ด์ง„๋‹ค. ์ด๋Š” x์˜ ๊ฐ’์ด ์ž‘์„์ˆ˜๋ก y์˜ ๋ณ€ํ™”๋Ÿ‰์ด ํฌ๊ณ  x์˜ ๊ฐ’์ด ํด์ˆ˜๋ก y์˜ ๋ณ€ํ™”๋Ÿ‰์ด ์ž‘๋‹ค๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•˜๋Š”๋ฐ ์ž‘์€ ์ˆซ์ž๋“ค ์‚ฌ์ด์˜ ์ฐจ์ด๋Š” ๋ฒŒ์–ด์ง€๊ณ  ํฐ ์ˆซ์ž๋“ค ์‚ฌ์ด์˜ ์ฐจ์ด๋Š” ์ค„์–ด๋“ ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค. ์ฆ‰ ํŽธํ–ฅ๋˜์–ด ์žˆ๋Š” ํ”ผ์ฒ˜๋“ค์„ ๋” ๊ณ ๋ฅด๊ฒŒ ๋ถ„ํฌํ•˜๋„๋ก ๋งŒ๋“ค์–ด ์ค€๋‹ค๋Š” ๊ฒƒ์ด๋‹ค.

 

 

๐Ÿค” ์™œ ๊ณ ๋ฅด๊ฒŒ ๋ถ„ํฌ๋œ ๊ฐ’์ด ์˜ˆ์ธก์— ์œ ๋ฆฌํ• ๊นŒ?

 ์ด ์‚ฌ์ง„์€ ํ‘œ์ค€์ •๊ทœ๋ถ„ํฌ์ด๋‹ค. ๋งŽ์€ ๊ฐ’๋“ค์ด ๋Œ€์นญ์œผ๋กœ ๊ฐ€์šด๋ฐ์— ๋ชฐ๋ ค์žˆ๋Š” ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ๋‹ค. ํ•œ ์ชฝ์œผ๋กœ ํŽธํ–ฅ๋œ ๊ฐ’์€ ํŽธํ–ฅ๋œ ๊ณณ๋งŒ ์˜ˆ์ธกํ•˜์ง€ ์•Š๋Š” ์ด์ƒ์€ ์ผ๋ฐ˜์ ์œผ๋กœ ์˜ˆ์ธก์„ ํ–ˆ์„ ๋–„ ๋†’๊ฒŒ ๋‚˜์˜ฌ ์ˆ˜๊ฐ€ ์—†๋‹ค. ์ผ๋ฐ˜์ ์œผ๋กœ ์˜ˆ์ธก์„ ํ–ˆ์„ ๊ฒฝ์šฐ ๊ฐ€์šด๋ฐ์— ๊ฐ’์ด ๋ชฐ๋ ค์žˆ๊ณ  ๊ณ ๋ฅด๊ฒŒ ๋ถ„ํฌ๋œ ํ‘œ์ค€์ •๊ทœ๋ถ„ํฌ์˜ ์˜ˆ์ธก์„ฑ๋Šฅ์ด ์ข‹์„ ์ˆ˜๋ฐ–์— ์—†๋‹ค.

 

 

 

 

โ€ป์ฃผ์˜!

  • ํŠธ๋ฆฌ ๋ชจ๋ธ์„ ์‚ฌ์šฉํ•œ๋‹ค๋ฉด ์ผ๋ฐ˜์ •๊ทœ๋ถ„ํฌ๋ฅผ ์‚ฌ์šฉํ•ด๋„ ๋ฌด๊ด€ํ•˜๋‹ค. ํ•˜์ง€๋งŒ ์Šค์ผ€์ผ๊ฐ’์ด ์˜ํ–ฅ์„ ๋ฏธ์น˜๋Š” ๋ชจ๋ธ์„ ์‚ฌ์šฉ์‹œ ์„ฑ๋Šฅ์ด ์˜ฌ๋ผ๊ฐˆ ์ˆ˜๋„ ์žˆ๋‹ค. ๋ณด์žฅ์€ ๋ชปํ•œ๋‹ค.
  • ํ‘œ์ค€์ •๊ทœ๋ถ„ํฌ๋กœ ๋งŒ๋“ค ๋•Œ ๊ฐ’์ด ์™œ๊ณก๋  ์ˆ˜๋„ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์ฃผ์˜๊ฐ€ ํ•„์š”ํ•˜๋‹ค. 
  • ๋งŒ์•ฝ label(์˜ˆ์ธกํ•˜๋ ค๋Š” ํ”ผ์ฒ˜)์ด ํŽธํ–ฅ๋˜์–ด ์žˆ๋‹ค๋ฉด ํŠธ๋žœ์Šคํฌ๋ฉ”์ด์…˜์„ ํ•œ ํ›„์— ๋ฐ˜๋Œ€๋กœ ๋‹ค์‹œ ๊ณ„์‚ฐํ•˜์—ฌ ๋ณต๊ตฌ์‹œํ‚จ ํ›„  ์ถœ๋ ฅํ•ด์•ผ ํ•œ๋‹ค. ex) np.log๋ฅผ ์‚ฌ์šฉํ•˜์˜€์œผ๋ฉด np.exp๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋˜๋Œ๋ฆฐ๋‹ค.
  • numpy์—์„œ ์Œ์ˆ˜๊ฐ€ ์ฃผ์–ด์ง€๋ฉด nan์„ ๋ฐ˜ํ™˜ํ•˜๊ธฐ ๋•Œ๋ฌธ์— np.log1p๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ 1์„ ๋”ํ•œ ํ›„์— ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹๋‹ค.

 

๐Ÿ“–์ด์‚ฐํ™”

numerical feature๋ฅผ ์ผ์ • ๊ธฐ์ค€์œผ๋กœ ๊ทธ๋ฃนํ™”ํ•˜๋Š” ๊ฒƒ

๐Ÿค” ์™œ ํ•„์š”ํ•œ๊ฐ€?

  • ์ด์‚ฐํ™”์™€ ๊ฐ™์€ ๊ณผ์ •์ด ์šฐ๋ฆฌ์˜ ์‚ฌ๊ณ ๋ฐฉ์‹๊ณผ ๋ถ€ํ•ฉํ•˜๋Š” ์ธก๋ฉด์ด ์žˆ์–ด ์ง๊ด€์ ์ด๋‹ค.
    ex) ๊ฐœ์ธ๋ณ„ ๋‚˜์ด๋ฅผ ๊ธฐ์ค€์œผ๋กœ ๋ถ„์„ํ•˜๊ธฐ๋ณด๋‹ค๋Š” 20๋Œ€ 30๋Œ€ 40๋Œ€ ์‹์œผ๋กœ 10์‚ด ๋‹จ์œ„๋กœ ๋‚˜๋ˆ„์–ด ๋ถ„์„ํ•˜๋ฉด ๊ฒฝํ–ฅ์ด
    ๋šœ๋ ทํ•ด์ง€๊ณ  ์ดํ•ดํ•˜๊ธฐ๊ฐ€ ์‰ฌ์›Œ์ง„๋‹ค
  • ๋ฐ์ดํ„ฐ ๋ถ„์„๊ณผ ๋จธ์‹ ๋Ÿฌ๋‹ ๋ชจ๋ธ์— ์œ ๋ฆฌํ•˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.
  • Numerical Feature๋กœ ์ธํ•œ ๊ณผ๋Œ€์ ํ•ฉ์„ ๋ฐฉ์ง€ํ•  ์ˆ˜ ์žˆ๋‹ค.

์ด์‚ฐํ™”์˜ ์ข…๋ฅ˜

Equal width binning ๋ฒ”์œ„๋ฅผ ๊ธฐ์ค€์œผ๋กœ ๋‚˜๋ˆ” ex) ์ ˆ๋Œ€ํ‰๊ฐ€, ํžˆ์Šคํ† ๊ทธ๋žจ, pd.cut(), ๊ณ ๊ฐ์„ ๊ตฌ๋งค ๊ธˆ์•ก ๊ตฌ๊ฐ„์— ๋”ฐ๋ผ ๋‚˜๋ˆŒ ๋•Œ
Equal frequency binning
๋นˆ๋„๋ฅผ ๊ธฐ์ค€์œผ๋กœ ๋‚˜๋ˆ” ex) ์ƒ๋Œ€ํ‰๊ฐ€, pd.qcut(), ๊ณ ๊ฐ์„ ๋‚˜๋ˆŒ ๋•Œ ๊ณ ๊ฐ์˜ ์ˆ˜๋ฅผ ๊ธฐ์ค€์œผ๋กœ ๋“ฑ๊ธ‰์„ ๋‚˜๋ˆŒ ๋•Œ

์™ผ์ชฝ์€ Equal width binning / ์˜ค๋ฅธ์ชฝ์€ Equal frequency binning

 

๐Ÿ“–์ธ์ฝ”๋”ฉ

์ธ์ฝ”๋”ฉ์€ categorical feature๋ฅผ numerical feature๋กœ ๋ฐ”๊พธ๋Š” ๊ฒƒ

๐Ÿค” ์™œ ํ•„์š”ํ• ๊นŒ?

  • ๋ฐ์ดํ„ฐ ์‹œ๊ฐํ™”์— ์œ ๋ฆฌํ•˜๋‹ค.
    - ๋ณ€ํ™”์˜ ์ถ”์ด๋ฅผ ๊ด€์ฐฐ(lineplot)ํ•˜๊ฑฐ๋‚˜, ์‚ฐ์ ๋„(scatterplot)๋ฅผ ๊ทธ๋ ค ๊ด€์ฐฐํ•˜๊ณ  ์‹ถ์„ ๊ฒฝ์šฐ์— ์ธ์ฝ”๋”ฉ์„ ํ†ตํ•ด์„œ Numerical Feature๋กœ ๋ณ€ํ™˜ํ•œ ๋‹ค์Œ ๊ทธ๋ž˜ํ”„๋ฅผ ๊ทธ๋ฆฌ๋ฉด ๋œ๋‹ค.
  • ๋จธ์‹ ๋Ÿฌ๋‹ ๋ชจ๋ธ์— ์œ ๋ฆฌํ•˜๋‹ค.
    - ๋จธ์‹ ๋Ÿฌ๋‹ ๋ชจ๋ธ์€ ๋ฒ”์ฃผํ˜•์ด ์žˆ์œผ๋ฉด ํ•™์Šต์„ ํ•  ์ˆ˜๊ฐ€ ์—†๋‹ค. ๋ชจ๋ธ์ด ํ•™์Šตํ•  ์ˆ˜ ์žˆ๊ฒŒ ์ˆ˜์น˜ํ˜•์œผ๋กœ ๋ฐ”๊ฟ”์ฃผ๋Š” ๊ณผ์ •์ด๋‹ค.

์ž์ฃผ ์‚ฌ์šฉํ•˜๋Š” ์ธ์ฝ”๋”ฉ ๋ฐฉ๋ฒ•๋“ค

Ordinal-Encoding

  • Categorical Feature์˜ ๊ณ ์œ ๊ฐ’๋“ค์„ ์ž„์˜์˜ ์ˆซ์ž๋กœ ๋ฐ”๊พผ๋‹ค.
  • ์ˆซ์ž๋ฅผ ๋”ฐ๋กœ ์ง€์ •ํ•ด์ฃผ์ง€ ์•Š์œผ๋ฉด 0๋ถ€ํ„ฐ 1์”ฉ ์ฆ๊ฐ€ํ•˜๋Š” ์ •์ˆ˜๋กœ ์ง€์ •๋œ๋‹ค.
  • ์ˆœ์„œ๊ฐ€ ์žˆ๋Š” ๋ช…๋ชฉํ˜• ๋ฐ์ดํ„ฐ์— ์‚ฌ์šฉํ•œ๋‹ค. ex) 1๋ถ„๊ธฐ = 0, 2๋ถ„๊ธฐ = 1, 3๋ถ„๊ธฐ = 2, 4๋ถ„๊ธฐ = 3
  • ๊ฒฐ๊ณผ๊ฐ€ ๋ฒกํ„ฐ 1์ฐจ์› ํ˜•ํƒœ๋กœ ๋‚˜์˜จ๋‹ค.
# pandas๋ฅผ ์ด์šฉํ•œ ์ธ์ฝ”๋”ฉ
train['object'].astype('category').cat.codes

# sklearn์„ ์ด์šฉํ•œ ์ธ์ฝ”๋”ฉ
oe = OrdinalEncoder()
oe.fit_transform(train[['object']])

 

One-Hot-Encoding

  • Categorical Feature๋ฅผ 0๋˜๋Š” 1๋กœ ๋งŒ๋“ ๋‹ค.
  • ์ˆœ์„œ๊ฐ€ ์—†๋Š” ๋ช…๋ชฉํ˜• ๋ฐ์ดํ„ฐ์— ์‚ฌ์šฉํ•œ๋‹ค. ex) ์Œ๋ฃŒ์ˆ˜,์ฃผํƒ์˜ ์ข…๋ฅ˜, ์ˆ˜์—…์˜ ์ข…๋ฅ˜
  • ๊ฒฐ๊ณผ๊ฐ€ ๋ฉ”ํŠธ๋ฆญ์Šค 2์ฐจ์› ํ˜•ํƒœ๋กœ ๋‚˜์˜จ๋‹ค.
# python์„ ์ด์šฉํ•œ ์›ํ•ซ์ธ์ฝ”๋”ฉ
pd.get_dummies(train['object'])

# sklearn์„ ์ด์šฉํ•œ ์›ํ•ซ์ธ์ฝ”๋”ฉ
ohe = OneHotEncoder()
ohe.fit_transform(train[['object']]).toarray()

ํŒ๋‹ค์Šค ์ธ์ฝ”๋”ฉ์˜ ๋‹จ์ 

ํŒ๋‹ค์Šค๋กœ ์ธ์ฝ”๋”ฉํ–ˆ์„ ๋•Œ ๋ฌธ์ œ์ ์€ ํ…Œ์ŠคํŠธ ๋ฐ์ดํ„ฐ์— ๋Œ€ํ•œ ์ธ์ฝ”๋”ฉ์—์„œ ๋ฐœ์ƒํ•œ๋‹ค. ์‚ฌ์ดํ‚ท๋Ÿฐ์˜ ์›ํ•ซ์ธ์ฝ”๋”ฉ์€ train ๋ฐ์ดํ„ฐ๋กœ๋งŒ ํ•™์Šตํ•ด์„œ ์ง„ํ–‰ํ•˜๊ธฐ์— test์—๋งŒ ์กด์žฌํ•˜๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์ธ์ฝ”๋”ฉํ•˜์ง€ ์•Š๋Š”๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ํŒ๋‹ค์Šค๋Š” ์ด ๊ธฐ๋Šฅ์ด ์—†์–ด์„œ test์…‹๊ณผ train์…‹์˜ ๊ณ ์œ ๊ฐ’์„ ๋น„๊ตํ•ด์ค˜์•ผ ํ•˜๋Š”๋ฐ, ํ˜„์‹ค์—์„œ test ๋ฐ์ดํ„ฐ๋Š” ์กด์žฌํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ๊ถŒ์žฅํ•˜์ง€ ์•Š๋Š”๋‹ค.

 

๐Ÿ“–ํŒŒ์ƒ๋ณ€์ˆ˜

ํŒŒ์ƒ๋ณ€์ˆ˜๋Š” ์ด๋ฏธ ์กด์žฌํ•˜๋Š” ๋ณ€์ˆ˜๋กœ๋ถ€ํ„ฐ ์—ฌ๋Ÿฌ๊ฐ€์ง€ ๋ฐฉ๋ฒ•์„ ์ด์šฉํ•ด ์ƒˆ๋กœ์šด ๋ณ€์ˆ˜๋ฅผ ๋งŒ๋“ค์–ด๋‚ธ๋‹ค.

์‚ฌ์น™์—ฐ์‚ฐ, ์ตœ๋Œ€๊ฐ’, ์ตœ์†Œ๊ฐ’, ์‚ฐ์ˆ ํ‰๊ท  ๋“ฑ ์‚ฐ์ˆ ์ ์ธ ๋ฐฉ๋ฒ•์œผ๋กœ ๋ณ€์ˆ˜๋ฅผ ๋งŒ๋“ค์–ด๋‚ผ ์ˆ˜ ์žˆ๋‹ค. ๋˜๋Š” ์‹œ๊ฐ„, ์ง€์—ญ๋ณ„ ๊ตฌ๋ถ„, ๋น„์œจ ๋“ฑ์„ ํ†ตํ•ด์„œ๋„ ๋ณ€์ˆ˜๋ฅผ ๋งŒ๋“ค์–ด๋‚ผ ์ˆ˜ ์žˆ๋‹ค.

โ€ป์ฃผ์˜!

  • ํŒŒ์ƒ๋ณ€์ˆ˜ ์ƒ์„ฑ์œผ๋กœ ์ธํ•ด ๋ฐ์ดํ„ฐ ํ•ด์„์ด ๋” ํŽธ๋ฆฌํ•ด์ง€๊ณ  ๋จธ์‹ ๋Ÿฌ๋‹ ์„ฑ๋Šฅ์ด ์˜ฌ๋ผ๊ฐˆ ์ˆ˜๋„ ์žˆ์œผ๋‚˜ ์—ญํšจ๊ณผ๊ฐ€ ์ƒ๊ธธ ์ˆ˜๋„ ์žˆ๋‹ค.
  • ํŒŒ์ƒ๋ณ€์ˆ˜๋ฅผ ๋งˆ๊ตฌ์žก์ด๋กœ ์ƒ์„ฑํ•  ๊ฒฝ์šฐ ๋จธ์‹ ๋Ÿฌ๋‹ ๋ชจ๋ธ์˜ ํ•™์Šต ์†๋„๋„ ๋А๋ฆด ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ์„ฑ๋Šฅ๋„ ๋‚ฎ์•„์ง„๋‹ค.

๋‹คํ•ญ์‹ ์ „๊ฐœ(Polynomial Expansion)์— ๊ธฐ๋ฐ˜ํ•œ ํŒŒ์ƒ๋ณ€์ˆ˜ ์ƒ์„ฑ ๋ฐฉ๋ฒ•

[a, b]๋ฅผ ๊ฐ€์ง„ ํ”ผ์ฒ˜๊ฐ€ ๋‹คํ•ญ์‹์˜ ์ตœ๋Œ€ ์ฐจ์ˆ˜๋ฅผ 2๋กœ ์ง€์ •ํ•˜๋ฉด ์ƒ์„ฑ๋˜๋Š” polynomial feature๋Š” [a, b, a^2, ab, b^2] ์ด๋‹ค.์™œ ์œ ์šฉํ• ๊นŒ?์ง๊ด€์ ์œผ๋กœ๋Š” ์ดํ•ดํ•˜๊ธฐ ์–ด๋ ต์ง€๋งŒ ๋จธ์‹ ๋Ÿฌ๋‹ ๋ชจ๋ธ์„ ์ด์šฉํ–ˆ์„ ๋•Œ ์œ ์šฉํ•˜๋‹ค.

  • ๋จธ์‹ ๋Ÿฌ๋‹ ๋ชจ๋ธ์€ label์— ๋Œ€ํ•ด์„œ ์„ค๋ช…๋ ฅ์ด ๋†’์€ ํ•œ ๋‘๊ฐ€์ง€ Feature์— ์˜์ง€ํ•  ๋•Œ๋ณด๋‹ค ์—ฌ๋Ÿฌ๊ฐ€์ง€ Feature์— ๊ธฐ๋ฐ˜ํ•  ๋•Œ ์„ฑ๋Šฅ์ด ๋” ๋›ฐ์–ด๋‚˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.
  • ์†Œ์ˆ˜์˜ Feature์— ๊ธฐ๋ฐ˜ํ•˜๊ฒŒ ๋˜๋ฉด ๊ณผ๋Œ€์ ํ•ฉ์ด ์ผ์–ด๋‚  ํ™•๋ฅ ์ด ๋†’์•„์ง„๋‹ค.
  • ๋‹คํ•ญ์‹ ์ „๊ฐœ์— ๊ธฐ๋ฐ˜ํ•ด์„œ ํŒŒ์ƒ๋ณ€์ˆ˜๋ฅผ ๋งŒ๋“ค๊ฒŒ ๋˜๋ฉด ๋จธ์‹ ๋Ÿฌ๋‹ ๋ชจ๋ธ์ด ์—ฌ๋Ÿฌ Feature์— ๊ธฐ๋ฐ˜ํ•˜๊ฒŒ ๋˜์–ด ์•ˆ์ •์„ฑ์ด ๋†’์•„์ง„๋‹ค.

 

'Python > ML' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[ML] House Prices  (0) 2022.11.16
[ML] ์™œ๋„์™€ ์ฒจ๋„  (0) 2022.11.15
[ML] Bike Sharing Demand  (0) 2022.11.08
[ML] One-Hot-Encoding  (0) 2022.11.03
[ML] GridSearchCV, RandomizedSearchCV  (0) 2022.11.03