์ด๋ฒ ํฌ์คํธ์์๋ ๋จธ์ ๋ฌ๋์ ์์ํ๊ธฐ ์ ์ ์์๋๋ฉด ์ ์ฉํ ํ๊ธฐ๋ฒ๊ณผ ์ฉ์ด, ๋จธ์ ๋ฌ๋ ๋ชจ๋ธ์ ๋ง๋๋ ๊ณผ์ ๊ณผ ์ฌ์ฉํ๊ฒ ๋ ํจํค์ง์ ๋ํด์ ์์๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค. ๋ด์ฉ์ ๋ํ ํผ๋๋ฐฑ์ ์ธ์ ๋ ํ์ํฉ๋๋ค!
1. ์์๋๋ฉด ์ข์ ์ฉ์ด์ ํ๊ธฐ๋ฒ
๋ฐ์ดํฐ์ ์ ํ๋ ฌ๊ณผ ๋ฒกํฐ๋ฅผ ํตํด์ ํํ๋ฉ๋๋ค. ์ผ๋ฐ์ ์ผ๋ก ์ํ์ ํ์ผ๋ก, ํน์ฑ์ ์ด๋ก ์ ์ฅ๋ฉ๋๋ค.
์ ๊ทธ๋ฆผ์์ ์ฒซ ์ด์ ๋ณด์ด๋ ์ซ์๋ค์ ์ํ๋ค์ ๋ํ๋ ๋๋ค. ๊ฐ ์ํ๋ณ๋ก ํน์ฑ๋ค์ ํ ๋จ์๋ก, ๊ฐ ํน์ฑ์ ๋ํ ์ํ๋ค์ ๊ฐ์ ์ด ๋จ์๋ก ํํ๋ฉ๋๋ค. ๋ณดํต ์๋ฌธ์๋ ๋ฒกํฐ๋ฅผ, ๋๋ฌธ์๋ ํ๋ ฌ์ ๋ํ๋ด๋ฉฐ, ์ ์ฒจ์๋ i๋ฒ์งธ ํ๋ จ ์ํ์, ์๋ ์ฒจ์ j๋ ํ๋ จ ๋ฐ์ดํฐ์ j๋ฒ์งธ ์ฐจ์์ ๋ํ๋ ๋๋ค.
2. ๋จธ์ ๋ฌ๋ ์์คํ ์์ ์์
๋จธ์ ๋ฌ๋ ์์ ์ ํฌ๊ฒ ์ ์ฒ๋ฆฌ - ํ์ต - ํ๊ฐ - ์์ธก์ ์์์ ๋ฐ์ต๋๋ค.
2-1. ์ ์ฒ๋ฆฌ
์ ์ฒ๋ฆฌ๋ ๋ฐ์ดํฐ ํํ๋ฅผ ๊ฐ์ถ๋ ์์ ์ผ๋ก ๊ฐ์ฅ ์ค์ํ ๋จ๊ณ์ด๊ธฐ๋ ํฉ๋๋ค. ํ์ต์ ์ํด ์ฃผ์ด์ง ์๋ณธ ๋ฐ์ดํฐ๊ฐ ์๊ณ ๋ฆฌ์ฆ์ด ์ต์ ์ ์ฑ๋ฅ์ ๋ด๊ฒ ํ๊ธฐ์๋ ์ ํฉํ์ง ์์ ๊ฒฝ์ฐ๊ฐ ๋๋ค์์ด๊ธฐ ๋๋ฌธ์ ๋๋ค. ๋จธ์ ๋ฌ๋ ์๊ณ ๋ฆฌ์ฆ์์ ์ต์ ์ ์ฑ๋ฅ์ ๋ด๊ธฐ ์ํด์๋ ํน์ฑ์ [0, 1]์ ๋ฒ์๋ก ๋ณํํ๊ฑฐ๋ ํ์ค ์ ๊ท ๋ถํฌ๋ก ๋ณํํ๋ ๊ฒฝ์ฐ๊ฐ ๋ง์ต๋๋ค.
์ ์ฒ๋ฆฌ๋ ์๋ฏธ์๋ ๋ฐ์ดํฐ๋ฅผ ๋ฝ์๋ด๋ ์์ ์ ๋๋ค. ์์ ๋ถ๊ฝ ๋ฐ์ดํฐ์์ ์๋ฏธ ์๋ ํน์ฑ์ ์ถ๋ฆฌ์๋ฉด ๊ฝ์ ์, ์์กฐ, ์ฑ๋๋ ๋์ด, ๊ฝ์ ๊ธธ์ด์ ๋๋น๊ฐ ์์ ์ ์๊ฒ ์ฃ . ์๋ฏธ ์๋ ๋ฐ์ดํฐ๋ผ๊ณ ์๊ฐํ๋ฉด ๋น์ง๋ ํ์ต์ ์ฐจ์ ์ถ์๊ฐ ๋ ์ค๋ฅด์ง ์์ผ์๋์? ํน์ฑ ๋ฐ์ดํฐ๋ค์ด ์ค๋ณต๋ ์ ๋ณด๋ฅผ ๊ฐ์ง ๋์๋ ์ฐจ์ ์ถ์ ๊ธฐ๋ฒ์ ์ฌ์ฉํด ํน์ฑ์ ์ ์ฐจ์ ๊ณต๊ฐ์ผ๋ก ์์ถํฉ๋๋ค. ๋ฐ์ดํฐ์ ํ์ ์๋ ํน์ฑ์ด ๋ง์ ๊ฒฝ์ฐ(์ ํธ ๋ ์ก์๋น๊ฐ ๋ฎ์ ๊ฒฝ์ฐ)์๋ ์ฐจ์์ถ์๊ฐ ๋ชจ๋ธ์ ์์ธก ์ฑ๋ฅ์ ๋์ด๊ธฐ๋ ํฉ๋๋ค.
๋จธ์ ๋ฌ๋ ์๊ณ ๋ฆฌ์ฆ์ ์ ์๋๋๋์ง ํ์ธํ๊ธฐ ์ํด์๋ ๋ฐ์ดํฐ๋ฅผ ํ๋ จ ๋ฐ์ดํฐ์ ํ ์คํธ ๋ฐ์ดํฐ๋ก ์ ๋ถํ ํด์ผํฉ๋๋ค. ํ๋ จ ๋ฐ์ดํฐ์์๋ ๋จธ์ ๋ฌ๋์ ๊ณต๋ถ์ํค๊ณ ์ต์ ํํ๊ณ , ํ ์คํธ ๋ฐ์ดํฐ๋ฅผ ํตํด์ ํ์ ์ต์ข ๋ชจ๋ธ์ ํ๊ฐํ๊ฒ ๋์ฃ .
2-2. ์์ธก ๋ชจ๋ธ ํ๋ จ๊ณผ ์ ํ
๋ฐ์ด๋น๋ ์ํผํธ๋ No Free Lunch๋ผ๋ ์ด๋ก ์์ '์๋ฌด๋ฐ ๋๊ฐ๋ ์น๋ฅด์ง ์๊ณ ํ์ตํ ์๋ ์๋ค' ๊ณ ๋งํฉ๋๋ค. ์๋ด๊ณผ ์ฐ๊ฒฐ ์ง์ด ์๊ฐํ๋ฉด ๊ฐ์ง ๋๊ตฌ๊ฐ ๋ง์น๋ฐ์ ์๋ค๋ฉด ๋ชจ๋ ๋ฌธ์ ๊ฐ ๋ชป์ผ๋ก ๋ณด์ผ ๊ฑฐ๋ผ๋ ๋ง์ด ์์ฃ . ๋ถ๋ฅ๋ก ์๋ฅผ ๋ค์ด๋ณผ๊น์? ๋ถ๋ฅ ์๊ณ ๋ฆฌ์ฆ์ ํ์์ ์ผ๋ก ํน์ ํ ํธํฅ์ด ์์ต๋๋ค. ์๋ก ํน์ถ๋ ์ฌ๋ฅ์ด ์๋ ์น๊ตฌ๋ค์ด์ฃ . ํ์ง๋ง ์๋ฌด๋ฐ ๊ฐ์ ์์ด ์ฌ์ฉํ๋ค๋ฉด ์ด๋ค ๋ถ๋ฅ ๋ชจ๋ธ์ด ๋ ์ฐ์ํ์ง ๋น๊ตํ๊ธฐ ์ด๋ ต์ต๋๋ค.
ํ์ค์์ ๊ฐ์ฅ ์ข์ ๋ชจ๋ธ์ ํ๋ จํ๊ณ ์ ํํ๊ธฐ ์ํด์๋ ํ์ฐ์ ์ผ๋ก ๋น๊ต๊ฐ ํ์ํ๋ฐ ์ด๋ ์ฌ์ฉ๋๋ ์งํ๊ฐ ๋ฐ๋ก ์ ํ๋(accuracy)์ ๋๋ค.
์ฐ๋ฆฌ๋ ๋ฐ์ดํฐ๋ฅผ ํ ์คํธ๋ฅผ ์ํด์ ํ ์คํธ ๋ฐ์ดํฐ์ ์ ๋ฐ๋ก ๋ณด๊ดํฉ๋๋ค. ํ์ง๋ง ํ ์คํธ ๋ฐ์ดํฐ๋ฅผ ์ฐ์ง ์๊ณ ์ด๋ค ๋ชจ๋ธ์ด ๋ ์ ๋์ํ ์ง ์ ์ ์์ง ์์๊น? ๋ผ๋ ์๋ฌธ์ด ์๊ธฐ๊ธฐ ๋ง๋ จ์ ๋๋ค. ์ด๋ ์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด ์ฐ๋ฆฌ๋ ๋ค์ํ ๊ต์ฐจ ๊ฒ์ฆ ๊ธฐ๋ฒ์ ์ฌ์ฉํ๊ฒ ๋ฉ๋๋ค. ์ด ๊ฒฝ์ฐ์๋ ํ๋ จ ๋ฐ์ดํฐ๋ฅผ ๋ ๋ถํ ํ์ฌ ํ๋ จ ์ธํธ์ ๊ฒ์ฆ ์ธํธ๋ก ๋๋ ๋ก๋๋ค.
2-3. ์๋ก์ด ์ํ๋ก ์์ธก
์ฌ๊ธฐ์ ํ ์คํธ ์ธํธ๋ฅผ ์ฌ์ฉํฉ๋๋ค. ์ด ํ ์คํธ ์ธํธ์์ ๋ณด์ฌ์ฃผ๋ ์ ํ๋๊ฐ ์ด๋ ์ ๋์ธ์ง, ์ผ๋ฐํ ์ค์ฐจ๋ฅผ ์์ธกํ ์์ํ ์ ์์ต๋๋ค. ์ฌ๊ธฐ์ ์ฑ๋ฅ์ ๋ง์กฑํ๋ค๋ฉด ์ ํ ๋ชจ๋ฅด๋ ๋ฐ์ดํฐ์ ์ ์ฉํ์ฌ ์์ธก์ํฌ ์ ์์ต๋๋ค. ์ด ์ ์ ์ฌ์ฉํ๋ ๋ชจ๋ ๋ฐ์ดํฐ๋ ํ๋ จ ์ธํธ๋ง ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์ ํ๋ผ๋ฏธํฐ ์์ฒด๊ฐ ํ๋ จ์ธํธ์ ์ค๋ฒ ํผํ ๋์ง๋ ์์๋์ง ํ์ธํด์ผ ํฉ๋๋ค. ๊ทธ๋์ ํ ์คํธ๋ ๋งค์ฐ ์ค์ํฉ๋๋ค!
์ค๋ฒํผํ ์ ํ๋ จ ๋ฐ์ดํฐ์ ๋ชจ๋ธ์ด ์ง๋์น๊ฒ ๋์ ์ ํ๋๋ฅผ ๋ณด์ฌ์ฃผ๋ ์ ์ ๋๋ค.
์ด๋ฏธ์ง ์์๋๋ก ์ผ์ชฝ์ ์ ํ๋๊ฐ ๋จ์ด์ง๋ ์ธ๋ ํผํ ์ด๊ณ , ๊ฐ์ด๋ฐ๋ ์ ์ ํ ๋ชจ๋ธ์ด ํ์ต๋ ๊ฒ์ ๋๋ค. ์ค๋ฒ ํผํ ์ ํ๋ จ ๋ฐ์ดํฐ์ ๋ชจ๋ธ์ด ์ง๋์น๊ฒ ๋ง์ถฐ์ ธ ๋ค๋ฅธ ๋ฐ์ดํฐ๋ฅผ ๋ง๋ฌ์ ๋ ์ ํ๋๊ฐ ๋ ๋จ์ด์ง๊ฒ ๋๋ ๊ฒ์ ๋งํฉ๋๋ค. ํ์ต์ ์ข์ ํจํด์ ์๋์ฃ . ์๋ฅผ ๋ค์ด 50๊ฐ์ ์ํ ๋ฌธ์ ๋ฅผ ํผ๋ค๊ณ ํ ๋, ๊ทธ๋ฅ ํ์ด๊ณผ์ ๊ณผ ๋ต์ ์ธ์๋ฒ๋ฆฌ๋ ์์ผ๋ก ์์ฃผ ๋ฑ์ฅํ ๊ฐ๋ ์ด๋ ์์๋๋ฉด ์ข์ต๋๋ค!
3. ๋จธ์ ๋ฌ๋์ ์ํ ํ์ด์ฌ๊ณผ ํจํค์ง
๋จธ์ ๋ฌ๋์์๋ ํ์ด์ฌ(python)์ ์ฌ์ฉํ๋ ๊ฒ์ ์ ๋ช ํฉ๋๋ค. ์คํ์์ค๋ ๋ง๊ณ , ์ ์ฉํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ๋ง๊ธฐ ๋๋ฌธ์ด์ฃ . ํ์ง๋ง ๊ณ์ฐ๋์ด ๋ง์ ์์ ์์๋ ์ฑ๋ฅ์ด ๋จ์ด์ง๊ธฐ ๋๋ฌธ์, Numpy ํจํค์ง๋ SciPy์ ๊ฐ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ํตํด ์ฐ์ฐ์ ๋น ๋ฅด๊ฒ ์ํํฉ๋๋ค. ์ง๊ธ ๋ณด๊ณ ์๋ ์ด ์ฑ ์์๋ ์ฌ์ดํท๋ฐ(Scikit-learn)๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ก ๋๋ถ๋ถ์ ํ๋ก๊ทธ๋๋ฐ์ ์์ ํฉ๋๋ค.
3-1. ํ์ด์ฌ๊ณผ PIP์์ ํจํค์ง ์ค์น
ํ์ด์ฌ์ ํ์ด์ฌ ๊ณต์ ์น์ฌ์ดํธ (https://www.python.org/)์์ ๋ฌธ์์ ์ค์นํ์ผ์ ํ์ธํ ์ ์์ต๋๋ค. ์ง๊ธ ๊ธฐ์ค ๊ฐ์ฅ ์ต์ ๋ฒ์ ์ 3.8.1 ์ ๋๋ค. ํน์ ํ์ด์ฌ 2์ ๋ฒ์ ์ ์ฌ์ฉํ์ ๋ค๋ฉด 3๊ณผ 2 ๋ฒ์ ์ ์ฃผ์ ์ฐจ์ด์ ์ ์์์ผ ํฉ๋๋ค! ์ ๋ฐ์ดํธ๋ฅผ ๊ถ์ฅํ์ง๋ง, 2๋ก ์คํํ๊ณ ์ถ์ผ์๋ค๋ฉด ํ์ด์ฌ ์ํค(https://wiki.python.org/moin/Python2orPython3/)๋ฅผ ํ์ธํ์ธ์.
ํ์ด์ฌ ์ค์น ํ์๋ ๊ตณ์ด ํจํค์ง๋ฅผ ์ฐพ์ง ์์๋ ํฐ๋ฏธ๋์์ ํ์ํ ํ์ด์ฌ ํจํค์ง๋ฅผ ์ค์นํ ์ ์์ต๋๋ค. pip ์ค์น ํ๋ก๊ทธ๋จ์ ์ด์ฉํ๋ฉด ์ฝ๊ฒ ํจํค์ง๋ฅผ ์ค์นํ ์ ์์ต๋๋ค. pip install์ ์ด์ฉํด ํจํค์ง๋ฅผ ์ค์นํ๊ณ , pip install --upgrade๋ฅผ ์ด์ฉํด ํจํค์ง๋ฅผ ์ ๋ฐ์ดํธํฉ๋๋ค.
pip install ํจํค์ง ์ด๋ฆ
pip install --upgrade ํจํค์ง ์ด๋ฆ
3-2. ์๋์ฝ๋ค ํ์ด์ฌ๊ณผ ํจํค์ง
์๋์ฝ๋ค๋ ์์ ์ ๋ชฉ์ ์ผ๋ก ์ฌ์ฉํ ์ ์๋ ๋ฌด๋ฃ ํ์ด์ฌ ๋ฐฐํฌํ์ ๋๋ค. ๋ฐ์ดํฐ๊ณผํ, ์ํ, ๊ณตํ์ฉ ํ์ ํจํค์ง๋ค์ด ๋ค์ด์๊ณ ๋ชจ๋ ์ฃผ์ ์ด์์ฒด์ ๋ฅผ ์ง์ํฉ๋๋ค. (https://www.anaconda.com/distribution/) ์๋์ฝ๋ค์ ๊ฒฝ์ฐ์๋ pip๊ฐ ์๋ conda๋ฅผ ์ฌ์ฉํด์ฃผ๋ฉด ๋ฉ๋๋ค.
conda install ํจํค์ง ์ด๋ฆ
conda update ํจํค์ง ์ด๋ฆ
3-3. ํจํค์ง
์์ผ๋ก ์ฌ์ฉํ ์ฃผ์ ํจํค์ง๋ค์ Numpy, SciPy, Scikit-learn, Matplotlib, Pandas, Tensorflow, ์ฌ์ฏ ๊ฐ์ง๋ก ๋๋ฉ๋๋ค.
- Numpy 1.16.1 : ํ๋ ฌ์ด๋ ์ผ๋ฐ์ ์ผ๋ก ๋๊ท๋ชจ ๋ค์ฐจ์ ๋ฐฐ์ด์ ์ฝ๊ฒ ์ฒ๋ฆฌ ํ ์ ์๋๋ก ์ง์ํ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ
- SciPy 1.2.1 : ์์น์ ๋ถ๊ณผ ๋ฏธ๋ถ๋ฐฉ์ ์ ํด์๊ธฐ, ๋ฐฉ์ ์์ ๊ทผ์ ๊ตฌํ๋ ์๊ณ ๋ฆฌ์ฆ, ํ์ค ์ฐ์/์ด์ฐ ํ๋ฅ ๋ถํฌ์ ๋ค์ํ ํต๊ณ ๊ด๋ จ ๋๊ตฌ
- Scikit-learn 0.20.0 : NumPy, SciPy ๋ฐ Matplotlib์ ์์ผ๋ฉฐ, ์ด ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ๋ถ๋ฅ, ํ๊ท, ํด๋ฌ์คํฐ๋ง ๋ฐ ์ฐจ์ ์ ๊ฐ์ ํฌํจํ์ฌ ๊ธฐ๊ณ ํ์ต๊ณผ ํต๊ณ ๋ชจ๋ธ๋ง์ ํจ๊ณผ์ ์ธ ๋๊ตฌ ํฌํจ
- Matplotlib 3.0.2 : ๋งคํธ๋ฉ๊ณผ ์ ์ฌํ ๊ทธ๋ํ ํ์๋ฅผ ๊ฐ๋ฅ์ผ ํ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ
- Pandas 0.24.1 : ๋ฐ์ดํฐ ์กฐ์ ๋ฐ ๋ถ์์ ์ํด Python ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๋ก ์์ฑ๋ ์ํํธ์จ์ด ๋ผ์ด๋ธ๋ฌ๋ฆฌ
- Tensorflow 2.0.0 : ๋ฐ์ดํฐ ํ๋ฆ ํ๋ก๊ทธ๋๋ฐ์ ์ํ ์คํ์์ค ์ํํธ์จ์ด ๋ผ์ด๋ธ๋ฌ๋ฆฌ
์ฌ๊ธฐ๊น์ง ๋จธ์ ๋ฌ๋์ ๊ธฐ์ด ๊ฐ๋ ๋ค๊ณผ ์ธํ ์ ๋ํด์ ์์๋ณด์์ต๋๋ค. ํด๋น ํจํค์ง๋ ํ์ํ ๋ ์ค์นํ์ ๋ ๋ฌด๋ฐฉํฉ๋๋ค! ๋ค์ ํฌ์คํ ๋ถํฐ๋ ๊ฐ๋จํ ๋ถ๋ฅ ์๊ณ ๋ฆฌ์ฆ์ ๋ํด์ ์์๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค. ์ต๋ํ ๋ชจ๋๊ฐ ์ดํดํ ์ ์๋ ๊ธ์ ์งํฅํฉ๋๋ค! ์คํ๋ ๋ด์ฉ ์ค๋ฅ, ๊ฐ์ ํด์ผ ํ ๋ถ๋ถ์ ๋ํ ํผ๋๋ฐฑ์ ํญ์ ํ์ํฉ๋๋ค!