๐ข ํผ์ฒ ์์ง๋์ด๋ง์ด๋?
ํผ์ฒ ์์ง๋์ด๋ง์ ๋ฐ์ดํฐ์ ๋ํ ์ง์์ ๋ฐํ์ผ๋ก ํน์ฑ(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(), ๊ณ ๊ฐ์ ๋๋ ๋ ๊ณ ๊ฐ์ ์๋ฅผ ๊ธฐ์ค์ผ๋ก ๋ฑ๊ธ์ ๋๋ ๋ |
๐์ธ์ฝ๋ฉ
์ธ์ฝ๋ฉ์ 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 |