๐ ์ด ํฌ์คํ ์์๋..
ํ๋ก์ ํธ๋ฅผ ์งํํ๋ฉฐ, ๋ค์ํ ๋ฐ์ดํฐ๋ก ํผ์ฒ๋ฅผ ์์ฑํ๋ค๋ณด๋, ์๋ก ๋ค๋ฅธ ๋ฒ์์ ์ฒ๋๋ฅผ ๊ฐ์ก๋ค๋ ๋ถ๋ถ์ด ๊ฑฑ์ ์ด ๋์๋ค.
์ด์ ๊ด๋ จํ์ฌ ์ค์ผ์ผ๋ง์ ๋ํด ์ค์ผ์ผ๋งํ๊ณ , ํ๋ก์ ํธ์ ์ ์ฉํ ๋ฐฉ์์ ๊ณ ๋ฏผํด๋ณด๊ธฐ๋ก ํ๋ค
-
ํด๋น ํฌ์คํ ์์๋ ํผ์ฒ ์ค์ผ์ผ๋ง์ ๊ธฐ๋ณธ์ ์ธ ๊ฐ๋ ๊ณผ ์์ ๋ฅผ ํตํด ๋ค์ํ ์ค์ผ์ผ๋ง ๋ฒ์ ์ตํ๋ณธ๋ค.
๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ์ฌ์ดํท๋ฐ์ ์ฌ์ฉํ๋ค.
๐ง Feature Scaling์ด๋?
- ๊ฐ๋ค์ ๋์ผํ ๋ฒ์์ ์ฒ๋๋ด์ ๋ฃ๋ ๊ฒ์ผ๋ก,
- ํ๋์ ๋ณ์๊ฐ ๋ค๋ฅธ ๋ณ์์ ์ํด ์ํฅ๋ ฅ์ ๋ฐํํ์ง ๋ชปํ๋ ๊ฒ์ ๋ง๋ ๋ฐฉ๋ฒ์ด๋ค
๐ง Scaling์ด ์ ํ์ํ ๊น?
- ๋๋ถ๋ถ์ ๊ฒฝ์ฐ ๋ฐ์ดํฐ ์ ์ ๊ฐ๊ฐ์ ๊ท๋ชจ(magnitude), ๋จ์, ๋ฒ์๊ฐ ๋งค์ฐ ๋ค๋ฅผ ๊ฒ์ด๋ค
- ๋๋ถ๋ถ์ ๋จธ์ ๋ฌ๋ ์๊ณ ๋ฆฌ์ฆ์ ๋ ๋ฐ์ดํฐ ๊ฐ ๊ฑฐ๋ฆฌ๋ฅผ ์ธก์ ์, ์ ํด๋ฆฌ๋์ ๊ฑฐ๋ฆฌ๋ฅผ ์ฐ๋๋ฐ ์ด๋ ๋ฌธ์ ๊ฐ ๋ฐ์ํ๋ค.
- ๋ง์ฝ, ์ค์ผ์ผ๋ง์ ํ์ง ์์ผ๋ฉด ์ด๋ฌํ ์๊ณ ๋ฆฌ์ฆ์ด ๊ท๋ชจ๊ฐ ํฐ ํผ์ฒ๋ค์ ์ง์คํ๊ฒ ๋๋๋ฐ, ํนํ ๋จ์๊ฐ ํฐ ์ฐจ์ด๊ฐ ๋๋ ๊ฒฝ์ฐ ๊ฒฐ๊ณผ๊ฐ ๋งค์ฐ ๋ฌ๋ผ์ง ์ ์๋ค. (์, 5kg๊ณผ 5000mg์ ์ฐจ์ด)
- ๋ฐ๋ผ์, ๋ชจ๋ ํผ์ฒ๋ฅผ ๊ฐ์ ๋ ๋ฒจ์ ์ฒ๋์ ๋์ด์ผ ํ๋๋ฐ ์ด๊ฒ์ด ์ค์ผ์ผ๋ง์ด๋ค.
๐ฆ Scaling์ด ์ค์ํ ์๊ณ ๋ฆฌ์ฆ
- k-์ต๊ทผ์ ์ด์(k-nearest neighbors) : ์ ํด๋ฆฌ๋์ ๊ฑฐ๋ฆฌ ์ฒ๋๋ฅผ ์ฐ๋ ํด๋น ์๊ณ ๋ฆฌ์ฆ์ ๊ท๋ชจ๊ฐ ํฐ ๋ณ์์ ๋งค์ฐ ์๋ฏผํ๋ค, ๋ฐ๋ผ์ ๋ชจ๋ ํผ์ฒ์ ์ค์๋๋ฅผ ๋์ผํ๊ฒ ๋ง์ถฐ ์ฃผ์ด์ผ ํ๋ค
- ์ฃผ์ฑ๋ถ ๋ถ์(PCA) : PCA๋ ๊ฐ์ฅ ํฐ ๋ถ์ฐ์ ๊ฐ๋ ํผ์ณ๋ฅผ ์ฐพ์ผ๋ คํ๋๋ฐ, ์ด ๋ถ์ฐ์ด ๊ท๋ชจ๊ฐ ํฐ ์น๋ฌ์์ ํจ์ฌ ํฌ๊ฒ ๋ํ๋๋ค. ์ด๋ ์ฃผ์ฑ๋ถ์์ด ํฐ ๊ท๋ชจ์ ํผ์ณ๋ค์ ํธํฅ๋๊ฒ ๋ง๋ ๋ค.
- ๊ฒฝ์ฌํ๊ฐ๋ฒ์ ์๋ : ์ค์ผ์ผ๋ง์ ํตํด ๊ฒฝ์ฌํ๊ฐ๋ฒ์ ์๋๋ฅผ ๋์ผ ์ ์๋ค. ๊ท๋ชจ(magnitude)๊ฐ ์ปค์ง๋ฉด ๊ฒฝ์ฌํ๊ฐ์ ์๋๊ฐ ๋๋ ค์ง๋ฏ๋ก, ๋ณ์์ ๋ฒ์๊ฐ ์ผ์ ํ์ง ์์ผ๋ฉด ์๋ ์ธก๋ฉด์์ ๋นํจ์จ์ ์ด๋ผ๊ณ ํ ์ ์๋ค.
๐ฆ Scaling์ด ํ์๊ฐ ์๋ ์๊ณ ๋ฆฌ์ฆ
- ํธ๋ฆฌ ๊ธฐ๋ฐ ๋ชจ๋ธ : ํธ๋ฆฌ ๋ชจ๋ธ๋ค์ ๊ฑฐ๋ฆฌ์ ๊ธฐ๋ฐ์ ๋์ง ์์์ผ๋ฉฐ ๋ค์ํ ๋ฒ์(varying range)๋ฅผ ๊ฐ์ง ํผ์ฒ๋ฅผ ๋ค๋ฃฐ ์ ์๊ธฐ์ ํธ๋ฆฌ ๋ชจ๋ธ ์ฌ์ฉ์์๋ ์ค์ผ์ผ๋ง์ด ํ์๊ฐ ์๋๋ค
- ์ ํ ํ๋ณ ๋ถ์(LDA), ๋์ด๋ธ ๋ฒ ์ด์ฆ : ์ด ์๊ณ ๋ฆฌ์ฆ์ ์ด๋ฌํ ์ค์ผ์ผ๋ง ๊ด๋ จ ๋ฌธ์ ๋ฅผ ๋ค๋ฃฐ ์ ์๊ฒ ๋์์ธ๋ ์๊ณ ๋ฆฌ์ฆ์ด๋ค. ๋ฐ๋ผ์ ํผ์ฒ์ ์ค์๋๋ฅผ ๊ณ์ฐ์ ํฌํจํ๊ธฐ์, ์ด ๊ฒฝ์ฐ ์ค์ผ์ผ๋ง์ด ๊ทธ๋ ๊ฒ ํฐ ํจ๊ณผ๊ฐ ์์ ์ ์๋ค
๐ฆ (์ฐธ๊ณ ) ๊ฒฝ์ฌํ๊ฐ๊ณผ ์ค์ผ์ผ๋ง
์๋ ๊ทธ๋ฆผ์ ๋ณด๋ฉด ์ผ์ชฝ์ ์ค์ผ์ผ๋ง์ด ๋์ง ์์ ๊ฒฝ์ฐ, ์ค๋ฅธ์ชฝ์ ์ค์ผ์ผ๋ง์ผ๋ก ๋ ๋ณ์์ ๋ฒ์๋ฅผ ๋ง์ถฐ์ค ๋ชจ์ต์ด๋ค.
์ผ์ชฝ์ ๊ฒฝ์ฐ ๊ฒฝ์ฌ ํ๊ฐ์ด ๋ณด๋ค ์์ ์ ์ผ๋ก(?) ์ด๋ฃจ์ด์ง๊ณ ์์์ ์ ์ ์๋ค.
๐ง SciKit-Learn libraries ํ์ฉํ Min-Max Scaling
๐ฆ ๋ฐ์ดํฐ ํ์ธํ๊ธฐ
- Age ์ปฌ๋ผ๊ณผ Estimated Salary ์ปฌ๋ผ์ ์ค์ผ์ผ์ด ์๋ก ๋ค๋ฆ์ ์ ์ ์๋ค.
- ์ด๋ฌํ ๊ฒฝ์ฐ ์ค์ผ์ผ๋ง์ด ํ์ํ ์ ์๋ค.
import matplotlib.pyplot as plt
import numpy as np
import pandas as pd
dataset= pd.read_csv("C:\data/data.csv")
dataset[:5]
๐ฆ Min-Max scaling
์ค์ผ์ผ๋ง์๋ ๋ค์ํ ๋ฐฉ๋ฒ์ด ์๋๋ฐ, ์ด๋ฒ ์๊ฐ์๋ Min-Max scaling์ ์ดํด๋ณธ๋ค
- min-max scaling์ ์ ๊ทํ์ ํ ์ ํ์ผ๋ก, ๋ฐ์ดํฐ์ ๋ฒ์๋ฅผ 0๊ณผ 1 ์ฌ์ด์ ํน์ ํ ๊ฐ์ผ๋ก ์ถ์ํ๋ ๊ฒ์ด๋ค
- ๋ณธ ๋ฐ์ดํฐ์ ์ต์๊ฐ์ด 0, ์ต๋๊ฐ์ด 1๋ก ์ง์ ๋๊ณ ๊ทธ ์ฌ์ด์ ๊ฐ์ด ์๋์ผ๋ก ์ถ์๋๋ค
import numpy as np
import seaborn as sns
import matplotlib.pyplot as plt
from sklearn.preprocessing import minmax_scale
# ๋๋คํ ๊ฐ์ ๊ณ ์
np.random.seed(0)
# ์ค๋ฆฌ์ง๋ ๋ฐ์ดํฐ๋ฅผ ๋๋ค ๋ฐ์ดํฐ 1000๊ฐ๋ก ๋ง๋ฆ
original_data = np.random.exponential(size = 1000)
# 0~1 ์ฌ์ด๋ก ์ต์์ต๋์ ๊ทํ ์งํ
scaled_data = minmax_scale(original_data)
# ๋น๊ต๋ฅผ ์ํ ์๊ฐํ
fig, ax=plt.subplots(1,2)
sns.distplot(original_data, ax=ax[0], color='y')
ax[0].set_title("Original Data")
sns.distplot(scaled_data, ax=ax[1])
ax[1].set_title("Scaled data")
plt.show()
์ฐธ๊ณ ์๋ฃ
https://rahul-saini.medium.com/feature-scaling-why-it-is-required-8a93df1af310
728x90
'Projects > ๐ช Convenience Store Location Analysis' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Mini Project] 9. ๋ชจ๋ธ๋ง ๋ฐ ํผ์ณ(ํ์๋ณ์) ์ ํ (0) | 2023.09.18 |
---|---|
[ํ๋ก์ ํธ ์คํฐ๋] ํ๊ท ๋ฌธ์ ํ๊ฐ ์งํ (0) | 2023.09.14 |
[Mini Project] 8. Feature Engineering (์ด์์น์ ๋ถํฌ ํ์) (0) | 2023.09.13 |
[ํ๋ก์ ํธ ์คํฐ๋] Feature Engineering (0) | 2023.09.13 |
[Mini Project] 7. ๋ชจ๋ธ๋ง Baseline Code (feat. Trouble Shooting ๐คจ) (0) | 2023.09.12 |