๐ฅ๏ธ MLB baseball player salary prediction system using data mining
My Role
Tool

R

Plotly

JavaScript
๊ฐ๋ฐ ๋๊ธฐ
- ์ผ๊ตฌ๋ ํ๋์ ๊ฐ์ฅ ๋์ค์ ์ธ ์คํฌ์ธ ์ค ํ๋์ด๋ฉฐ, ๋ฉ์ด์ ๋ฆฌ๊ทธ๋ ์ ์ธ๊ณ์์ ๊ฐ์ฅ ์ํฅ๋ ฅ ์๋ ์ผ๊ตฌ ๋ฆฌ๊ทธ๋ก ์ธ์ ๋ฐ๊ณ ์๋ค.
- ๋ฉ์ด์ ๋ฆฌ๊ทธ ํ์ ์ธ๊ธฐ๋ฅผ ๋ฐํ์ผ๋ก ๋ง๋ํ ์์ต์ ์ป๊ณ , ์ ์๋ค์ ๋์ ์ฐ๋ด์ ๋ฐ๋๋ฐ, ์ด ์ฐ๋ด์ ํธ์ฐจ๋ ๊ทน์ฌํ๋ค.
- ์ฐ๋ด์ ์ฐจ์ด๋ฅผ ์ดํดํ๊ธฐ ์ํด ๋ฐ์ดํฐ ๋ถ์ ํ๋ก์ ํธ๋ฅผ ์งํํ๊ณ , ํฌ์๋ฅผ ๋์์ผ๋ก ์ฐ๋ด ์์ธก์ ์ด์ ์ ๋ง์ถ๊ธฐ๋ก ๊ฒฐ์ ํ๋ค.
- ํฌ์๋ ์ผ๊ตฌ์์ ๊ฐ์ฅ ์ค์ํ ์ญํ ์ ๋งก์ผ๋ฉฐ, ๊ทธ ์ญ๋ ์ฐจ์ด๊ฐ ๊ฒฝ๊ธฐ์ ๊ฒฐ๊ณผ์ ํฐ ์ํฅ์ ์ค๋ค.
- ํฌ์์ ํ์์ ๋ํ ํ์ฉ ์ ๋๋ฅผ ๊ณ ๋ คํ์ฌ ์ฐ๋ด ์์ธก ๋ชจ๋ธ์ ๊ฐ๋ฐํจ์ผ๋ก์จ ํฌ์์ ํน์ง์ ๋๋ ทํ๊ฒ ๋ถ์ํ๊ณ ์ ํ๋ค.
๊ฐ๋ฐ ๋ชฉ์
"๋ถ์์ ํตํด ์ ์์ ํน์ฑ ๊ฐ์ ๋ฐ๋ผ ํฌ์์ ๊ธฐ๋ ์ฐ๋ด์ ๊ฐ์ฅ ์ ํํ๊ฒ ์์ธกํ๋ ๋ชจ๋ธ์ ๊ฐ๋ฐํ์ฌ ์ผ๊ตฌ๊ณ์ ์ฐ๋ด ๊ฒฐ์ ๊ณผ ํ์์ ๊ฐ๊ด์ ์ธ ์ง์นจ์ ์ ๊ณตํ๊ณ , ์ผ๊ตฌ์ ๋ํ ํฅ๋ฏธ๋ฅผ ๋์ด๋ฉฐ ๊ด์ฌ์ ์ ๋ฐโ
๋ฐ์ดํฐ ๊ฐ๊ณต
๋ฐ์ดํฐ ์ถ์ถ
๋ชจ๋ ๋ฐ์ดํฐ๋ ํ์ฌ ๋ฉ์ด์ ๋ฆฌ๊ทธ์ ๋ฆฌ๊ทธ ๊ตฌ์ฑ์ด ํ๋ฆฝ๋ 1998๋ ์ดํ์ ์๋ฃ๋ฅผ ์ด์ฉํ๋ค.
- People Table
- Pitching Table
- PitchingPost Table
- Teams Table
- AwardsPlayer Table
- AllstarFull Table
- Salaries Table
๋ฐ์ดํฐ ์ ์ฒ๋ฆฌ
- ์ถ์ถํ Table ๊ฒฐํฉํ์ฌ Raw Data ์์ฑ
- ์ฌ๋ฌ Table์ ๋ณํฉํ๊ธฐ ์ํ Key ๊ฐ์ผ๋ก playerID, yearID, teamID ๋ณ์๋ฅผ ์ฌ์ฉํ๋ค. ์ด ๊ณผ์ ์์ ๋ฐ์ํ๋ ๋ฐ์ดํฐ ์ค๋ณต ๋ฌธ์ ๋ ์๋์ ์ฒ๋ฆฌ๋ฅผ ๊ฑฐ์ณ ํ๋์ ๋ฐ์ดํฐ ํ๋ ์์ ๋ง๋ค์๋ค.
- ๋ฐ์ดํฐ ์ค๋ณต ๋ฌธ์ ์ฒ๋ฆฌ
- Raw Data ๋ด ์ ์ฒ๋ฆฌ
- lFinal_df.csv
- ์์ Raw Data ๋ด ์ ์ฒ๋ฆฌ ๊ณผ์ ์์ ๊ฐ์ฅ ํฐ ๋น์ค์ ์ฐจ์งํ ์์ ์ ๊ฒฐ์ธก์น์ ์ด์์น๋ค์ ๋ํ ์ฒ๋ฆฌ์ด๋ค. ์๋ก ๋ค๋ฅธ ๊ท๋ชจ์ ๊ตฌ์กฐ๋ฅผ ๊ฐ์ง๊ณ ์๋ ๋ฐ์ดํฐ ์ ๋ค์ ํตํฉํ๋ ๊ณผ์ ์์ ๋ฐ์ํ ๊ฒฐ์ธก๊ฐ๋ค์ ํ์ธํ ํ ๊ฐ ๋ฐ์ดํฐ์ ํน์ฑ์ ๋ง๋ ์๋์ ๋ฐฉ์์ผ๋ก ์ ์ ํ ๊ฐ์ ์ฑ์๋ฃ์๋ค.
- salary ๋ฐ์ดํฐ ๋ด ๊ฒฐ์ธก์น ์ฒ๋ฆฌ
- ๋ฆฌ๊ทธ / ํฌ์คํธ์์ฆ ERA์ ์ด์์น ์ฒ๋ฆฌ
- ์์นํ์ด ์๋ ๋ฐ์ดํฐ ์ฒ๋ฆฌ
1, 2์ ๊ณผ์ ์ ๊ฑฐ์ณ ์ต์ข ์ผ๋ก ๋ถ์์ ์ํ ์ด๊ธฐ ๋ฐ์ดํฐ ์ ์ lFinal_df ๋ผ๋ ์ด๋ฆ์ผ๋ก ์์ฑํ๋ค.
์ดํ์ ๋ถ์์ ๋ชจ๋ ์ด ์ด๊ธฐ ๋ฐ์ดํฐ์ ์ ๋ณํํด ๊ฐ๋ฉฐ ์ํ๋์๋ค.
๋ฐ์ดํฐ ๋ถ์
๋ชจ๋ธ
Lasso, Ridge, DecisionTree, RandomForest, GBM 5๊ฐ์ง ๋ชจ๋ธ๋ก ๋ถ์
๋ฐ์ดํฐํ๋ ์
๋ชจ๋ ๊ธฐ๋ณธ ์ ์ฒ๋ฆฌ ๊ณผ์ ์ ๋ง์น lFinal_df (=DF1)๋ฅผ ๊ธฐ๋ณธ์ผ๋ก ๋ณํ์์ผ ๋ง๋ค์๋ค.
DF1
์๋ณธ ๋ฐ์ดํฐ์์ ์ฌ์ฉํ table์ ์ถ์ถํ์ฌ ๊ฒฐํฉํ ํ ์ ์ฒ๋ฆฌ ๊ณผ์ ์ ๊ฑฐ์น ๊ธฐ๋ณธ ๋ฐ์ดํฐํ๋ ์์ด๋ค.
DF2
DF1์์ ์๋์ ๋ด์ฉ์ ๋ณํ ๋ฐ ์ถ๊ฐํ ๋ฐ์ดํฐํ๋ ์์ด๋ค.
- l_GM : ์ค๊ฐ ๊ณํฌ๋ก ๋์ง ๊ฒฝ๊ธฐ (l_G - lGS) ์์ฑ
- attendence.f : attendance ๋ณ์ ๋ฒ์ฃผํ
- career : ์ ์ ์ฐ์ฐจ ์ ๋ณด (yearID - debut) ๋ณ์ ์์ฑ
- years_old : ํ์ฌ ๋์ด (yearID - birthYear) ๋ณ์ ์์ฑ
- teamID, throws ๋ณ์ ์ํซ ์ธ์ฝ๋ฉ
- lgID, divID, G, l_G, attendance, debut, birthYear, birthCountry, teamID, throws, stint ๋ณ์ ์ ๊ฑฐ
DF3
DF2์ ๋ ผ๋ฌธ์ ์ฐธ๊ณ ํ์ฌ ๋ง๋ ์ถ๊ฐ์งํ(์ธ์ด๋ฒ๋งคํธ๋ฆญ์ค ์งํ)๋ฅผ ์ถ๊ฐํ ๋ฐ์ดํฐํ๋ ์์ด๋ค.
DF4
DF3์์ teamID๋ฅผ ์ํซ ์ธ์ฝ๋ฉ ๋์ teamID์ ๊ธฐ๋ฐํ์ฌ Target-Encoding์ผ๋ก ๋์ฒดํ ๋ฐ์ดํฐํ๋ ์์ด๋ค.
![]()
DF5
DF4์์ salary์์ ์๊ด๊ด๊ณ์ ๊ธฐ๋ฐํ์ฌ ์ผ๋ถ ๋ณ์๋ค์ ์ ํํด 2๋ ์น ์๊ณ์ด ์ฒ๋ฆฌํ ๋ฐ์ดํฐํ๋ ์์ด๋ค.
('l_W', 'l_GS', 'l_GM', 'l_CG', 'l_ER', 'l_IPouts', 'l_H', 'l_HR', 'l_BB','l_SO', 'BSRโ)
DF6
DF4์์ salary์์ ์๊ด๊ณ์๊ฐ 0.24 ์ด์์ธ ์ด๋ค๋ง ์ถ์ถํ ๋ฐ์ดํฐํ๋ ์์ด๋ค.
๊ฒฐ๋ก
![]()
์ฌ๋ฌ ์ฐจ๋ก์ feature engineering ๊ณผ์ ์์ ์ ์ง์ ์ผ๋ก ๋ชจ๋ธ๋ค์ ์์ธก ์ฑ๋ฅ์ด ๊ฐ์ ๋์๋ค(DF1 ~ DF4). ๊ทธ ์ค์์๋ teamID์ ์ฌ์ธํ๊ฒ ์ด์ฉํ ๊ฒฐ๊ณผ, ํนํ random forest ๋ชจ๋ธ์์ ๋๋๋ฌ์ง ์ฑ๋ฅ ๊ฐ์ ์ ์ป์ด๋๋ค(DF4). ํํธ feature๋ค์ ๋ํ ์๊ณ์ด ์ฒ๋ฆฌ๋ ์๊ด๊ณ์ ๊ธฐ๋ฐ์ feature ์ ํ ์๋๋ ๋ชจ๋ธ ์์ธก ์ฑ๋ฅ ๊ฐ์ ์๋ ์คํจํ์๋ค.(DF5, DF6)