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

[TIL] python ๋ชจ๋ธ๋ง : RandomForestRegressor ๋ชจ๋ธ ์‚ฌ์šฉ

by hyerong 2023. 2. 8.

์ด๋ฒˆ ๊ธ€์—์„œ ์„ค๋ช…ํ•  ๋‚ด์šฉ์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค. 

1. ๋žœ๋คํฌ๋ ˆ์ŠคํŠธ ๊ฐœ๋… 

2. ๋žœ๋คํฌ๋ ˆ์ŠคํŠธ ์„ ์–ธ

3. RFR ๋ชจ๋ธ ์‚ฌ์šฉ ์ฝ”๋“œ - x,y๋ณ€์ˆ˜ ์„ค์ • ์ฝ”๋“œ 

4. ๋ณด๋„ˆ์Šค) ํ‰๊ฐ€ ์ฒ™๋„ mse ๋ž€? - ๋จธ์‹ ๋Ÿฌ๋‹ ํšŒ๊ท€๋ชจ๋ธ ์„ฑ๋Šฅ ํ‰๊ฐ€ ์ง€ํ‘œ 

 

์ฒซ๋ฒˆ์žฌ๋กœ ๋žœ๋ค ํฌ๋ ˆ์ŠคํŠธ๋ž€ map ๋จธ์‹  ๋Ÿฌ๋‹ ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด๋‹ค. ์ •ํ™•์„ฑ, ๋‹จ์ˆœ์„ฑ ๋ฐ ์œ ์—ฐ์„ฑ์œผ๋กœ ๊ฐ€์žฅ ๋งŽ์ด ์‚ฌ์šฉ๋˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์ค‘ ํ•˜๋‚˜์ด๋ฉฐ, ๋ถ„๋ฅ˜ ๋ฐ ํšŒ๊ท€ ์ž‘์—…์— ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. 

์—ฌ๋Ÿฌ ๊ฐœ์˜ ์˜์‚ฌ๊ฒฐ์ •๋‚˜๋ฌด(Decision Tree)๋ฅผ ๋งŒ๋“ค์–ด์„œ ์ด ๊ฒฐ์ • ํŠธ๋ฆฌ๋“ค์˜ ํ‰๊ท ์œผ๋กœ ์˜ˆ์ธก์˜ ์„ฑ๋Šฅ์„ ๋†’์ด๋Š” ๋ฐฉ๋ฒ•์ด๊ณ  ์ด๋Ÿฌํ•œ ๊ธฐ๋ฒ•์„ ์•™์ƒ๋ธ”(Ensemble) ๊ธฐ๋ฒ•์ด๋ผ ํ•œ๋‹ค. (์ฃผ์–ด์ง„ ํ•˜๋‚˜์˜ ๋ฐ์ดํ„ฐ๋กœ๋ถ€ํ„ฐ ์—ฌ๋Ÿฌ ๊ฐœ์˜ ๋žœ๋ค ๋ฐ์ดํ„ฐ set์„ ์ถ”์ถœํ•ด ๊ฐ ๋ฐ์ดํ„ฐset์„ ํ†ตํ•ด ์—ฌ๋Ÿฌ ๊ฐœ ๋งŒ๋“ค ์ˆ˜ ์žˆ์–ด์„œ ๋งŽ์€ ์–‘์˜ ํ‘œ๋ณธ์ง‘๋‹ต์ด ์ƒ๊ธฐ๋‹ˆ ์˜ˆ์ธก ์„ฑ๋Šฅ์„ ๋†’์ผ ์ˆ˜ ์žˆ๋‹ค.)

 -์ถœ์ฒ˜ : DACON ํŒŒ์ด์ฌ ํŠœํ† ๋ฆฌ์–ผ 

 

๋‘๋ฒˆ์งธ๋กœ ๋ชจ๋ธ ์„ ์–ธ ์ฝ”๋“œ๋Š” ์•„๋ž˜์™€ ๊ฐ™๋‹ค. 

from sklearn.ensemble import RandomForestRegressor

model = RandomForestRegressor()

๋จผ์ € sklearn.ensemble๋ถ€ํ„ฐ ํ•ด๋‹น RFR๋ชจ๋ธ์„ importํ•ด์•ผ ํ•œ๋‹ค. 

๊ทธ ํ›„, model๋ณ€์ˆ˜๋กœ ์„ ์–ธํ•œ๋‹ค. 

 

ps. ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ๋žœ๋ค ํฌ๋ ˆ์ŠคํŠธ์— ๋Œ€ํ•œ ๋” ์ž์„ธํ•œ ๋‚ด์šฉ์€ ์•„๋ž˜ ๋งํฌ์— ๋‚˜์™€ ์žˆ๋‹ค. 

https://github.com/pyohamen/Im-Being-Data-Scientist/wiki/What-is-RandomForest%3F 

 

What is RandomForest?

Contribute to pyohamen/Im-Being-Data-Scientist development by creating an account on GitHub.

github.com

 

์„ธ๋ฒˆ์งธ๋กœ ์œ„์—์„œ model ๋ณ€์ˆ˜ ์„ ์–ธ์„ ํ–ˆ๋‹ค๋ฉด, ์ด ๋ชจ๋ธ์€ ์–ด๋–ป๊ฒŒ ์ด์šฉํ•ด ๋จน์„ ์ˆ˜ ์žˆ์„๊นŒ ์ƒ๊ฐํ•ด๋ณด์ž. 

๋จผ์ € ๋ชจ๋ธ์— ๋“ค์–ด๊ฐˆ x๋ณ€์ˆ˜์™€ y๋ณ€์ˆ˜๋ฅผ ์ƒ๊ฐํ•œ๋‹ค. 

x๋ณ€์ˆ˜๋Š” ๋ฐ์ดํ„ฐ ์˜ˆ์ธก์‹œ ์‚ฌ์šฉํ•  ๋ณ€์ˆ˜์ด๊ณ , y ๋ณ€์ˆ˜๋Š” ์˜ˆ์ธก ๊ฒฐ๊ณผ ๋ณ€์ˆ˜๊ฐ€ ๋œ๋‹ค. 

๋ณดํ†ต ์˜ˆ์ธก ๊ฒฐ๊ณผ๋กœ ๋‚˜์˜ฌ y๋ณ€์ˆ˜์— ํ•ด๋‹นํ•˜๋Š” column์„ x๋ณ€์ˆ˜ ๋ฒ”์œ„์—์„œ ์ œ๊ฑฐํ•œ๋‹ค. 

์ฆ‰, ์ฝ”๋“œ๋กœ ๋‚˜ํƒ€๋‚ด๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค. 

x_df = df.drop(['df์—์„œ ์ œ์™ธํ•  column name'], axis = 1) 

y_df = df['df์—์„œ ์ธ๋ฑ์‹ฑ ํ•  column name'

๋นจ๊ฐ„ ํ‘œ์‹œ๋กœ ๋˜์–ด์žˆ๋Š” ๋ถ€๋ถ„์€ ๋™์ผํ•œ column์„ ์ง€์นญํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•˜๋ฉด ๋œ๋‹ค.

์‚ฌ์‹ค ๋”ฐ์ง€๊ณ  ๋ณด๋ฉด df(๋ฐ์ดํ„ฐ ๊ฐ์ฒด) ์ž์ฒด์—์„œ ์ œ์™ธํ•˜๊ณ  ์ธ๋ฑ์‹ฑํ•  ๊ฒƒ์€ ์•„๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ์ด๋ฏธ ์ƒˆ๋กœ์šด ๋ณ€์ˆ˜ x_df์™€ y_df์— ํ• ๋‹นํ•˜๋Š” ๊ฒƒ์ด๊ธฐ ๋•Œ๋ฌธ์— df๋Š” df๋Œ€๋กœ ์—ฌ์ „ํžˆ ๋ณ€ํ•จ์—†์ด ์กด์žฌํ•œ๋‹ค.

๊ทธ๋Ÿฌ๋‚˜ ์ดํ•ด๋ฅผ ๋•๊ธฐ ์œ„ํ•ด df์—์„œ ๋‚ด๊ฐ€ ๋ชจ๋ธ๋ง์—์„œ ์ œ์™ธํ•  column, df์—์„œ ๋‚ด๊ฐ€ ์ธ๋ฑ์‹ฑํ•  column์ด๋ผ๊ณ  ์ดํ•ดํ•˜๊ธฐ ์œ„ํ•ด ์œ„์™€ ๊ฐ™์ด ์ž‘์„ฑํ•˜์˜€๋‹ค. 

x_df์™€ y_df๋ผ๊ณ  ์ด๋ฆ„ ์ง€์€ ์ด์œ ๋Š” ๋ณดํ†ต ๋ชจ๋ธ๋งํ•˜๊ณ ์ž ํ•˜๋Š” ๊ฐ์ฒด๋ฅผ ๊ฐ ๋ณ€์ˆ˜x,y๋’ค์— ๋ถ™์—ฌ์„œ ์•Œ๊ธฐ ์‰ฝ๊ฒŒ ์ด๋ฆ„ ์ง“๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. 

์ด๋ ‡๊ฒŒ ๋ชจ๋ธ๋ง ๊ณผ์ •์—์„œ x์™€ y์˜ ๋ณ€์ˆ˜์— ๋Œ€ํ•ด ์„ค์ •ํ–ˆ๋‹ค๋ฉด ๋ชจ๋ธ๋ง ํ‰๊ฐ€ ์ง€ํ‘œ์— ๋Œ€ํ•ด ์•Œ์•„๋ณธ๋‹ค. 

 

๋ณด๋„ˆ์Šค, ๋ชจ๋ธ๋ง ํ‰๊ฐ€ ์ง€ํ‘œ 

๋‚ด๊ฐ€ ์ฐธ๊ณ ํ•˜๊ณ  ์žˆ๋Š” DACON ํŒŒ์ด์ฌ ํŠœํ† ๋ฆฌ์–ผ์—์„œ๋Š” ํ‰๊ฐ€์ง€ํ‘œ๋กœ RMSE๋ฅผ ๋ณด์—ฌ์ค€๋‹ค. 

RMSE๋Š” MSE ํ‰๊ฐ€์ง€ํ‘œ์— ๋ฃจํŠธ๋ฅผ ์”Œ์šด ๊ฒƒ์œผ๋กœ RFR ๋ชจ๋ธ์„ ์„ ์–ธํ•  ๋•Œ criterion = 'mse'์˜ต์…˜์œผ๋กœ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค. 

model = RandomForestRegressor(criterion = 'mse')

์ถœ์ฒ˜ : https://dacon.io/competitions/open/235698/talkboard/403636?page=1&dtype=recent

 

์ง€๊ธˆ๊นŒ์ง€ ์ •๋ฆฌํ•œ ๋‚ด์šฉ์„ ์ฝ”๋“œ๋กœ ์ •๋ฆฌํ•˜๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค. 

0. ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๋ถˆ๋Ÿฌ์˜ค๊ธฐ
1. ๋ฐ์ดํ„ฐ ๋ถˆ๋Ÿฌ์˜ค๊ธฐ
2. ๋ฐ์ดํ„ฐ ๊ฒฐ์ธก์น˜ ์„ ํ˜• ๋น„๋ก€ ๋ณด๊ฐ„๋ฒ• ์‚ฌ์šฉ -ํŽธ์˜์ƒ ๋ฐ์ดํ„ฐ train์— ๋Œ€ํ•ด์„œ๋งŒ ์ง„ํ–‰
3. ๋ชจ๋ธ๋ง ์ž‘์—… x, y๋ณ€์ˆ˜ ์„ค์ •

 

ps. ๋จธ์‹ ๋Ÿฌ๋‹ ํ‰๊ฐ€์ง€ํ‘œ์— ๋Œ€ํ•œ ๋ณด๋„ˆ์Šค ๋‚ด์šฉ์€ ๊ธธ์–ด์ ธ์„œ ๋‹ค์Œ ๊ธ€ ํ™•์ธ!