๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
Study/AI & ML

ํšŒ๊ท€ ์•Œ๊ณ ๋ฆฌ์ฆ˜๊ณผ ๋ชจ๋ธ ๊ทœ์ œ(2) - ์„ ํ˜• ํšŒ๊ท€

by sumping 2024. 3. 15.

๐Ÿ‘€2์ฃผ์ฐจ 220117 ~ 220123 ๊ณต๋ถ€๊ธฐ๋ก

 

๐Ÿ“ ๋ณธ ํฌ์ŠคํŒ…์€ <ํ˜ผ์ž ๊ณต๋ถ€ํ•˜๋Š” ๋จธ์‹ ๋Ÿฌ๋‹+๋”ฅ๋Ÿฌ๋‹> ์ฑ…์„ ๋ฐ”ํƒ•์œผ๋กœ ์ž‘์„ฑํ•จ์„ ์•Œ๋ฆฝ๋‹ˆ๋‹ค.


โœ…Ch.03-2 ์„ ํ˜• ํšŒ๊ท€

 

KNN์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ํ•œ๊ณ„๋Š” ์ด์›ƒ์˜ ๊ฐœ์ˆ˜๋กœ ์˜ˆ์ธก์„ ํ•˜๋Š” ๊ฒƒ์ด๋‹ค. ์œ„ ๊ทธ๋ž˜ํ”„๋Š”, ๊ธฐ์กด ๋ฐ์ดํ„ฐ์™€๋Š” ๋‹ค๋ฅธ ๋ฐ์ดํ„ฐ๋ฅผ ๋„ฃ์—ˆ์„ ๋•Œ ๋ฐœ์ƒํ•˜๋Š” ๋ฌธ์ œ์ ์„ ๋ณด์—ฌ์ค€๋‹ค. ์ดˆ๋ก์ƒ‰ ์‚ผ๊ฐํ˜•(โ‡๏ธ)์€ ๊ธธ์ด๋ฅผ 50์œผ๋กœ ์˜ˆ์ธกํ–ˆ์„ ๋•Œ ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด ์˜ˆ์ธกํ•œ ๋ฌด๊ฒŒ์ด๋‹ค. ์ฃผํ™ฉ์ƒ‰ ๋งˆ๋ฆ„๋ชจ(๐Ÿ”ถ)๋Š” ์˜ˆ์ธก๊ฐ’ ์ฃผ๋ณ€์—์„œ ๊ฐ€์žฅ ๊ฐ€๊นŒ์šด ์ด์›ƒ 3๊ฐœ์ด๋‹ค. (์ด์›ƒ์˜ ๊ฐœ์ˆ˜๋ฅผ 3๊ฐœ ์„ค์ •ํ•˜์˜€๋‹ค.) ๊ธธ์ด๊ฐ€ ๊ธธ์–ด์ง์— ๋น„๋ก€ํ•˜์—ฌ ๋ฌด๊ฒŒ๊ฐ€ ๋Š˜์–ด๋‚˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ์ด์›ƒ์˜ ์ƒ˜ํ”Œ๋กœ ์˜ˆ์ธกํ•˜๊ธฐ ๋•Œ๋ฌธ์—, ๊ธธ์ด๊ฐ€ 500์ด์—ฌ๋„ ๋ฌด๊ฒŒ๋ฅผ ์•ฝ 1000์œผ๋กœ ์˜ˆ์ธกํ•  ๊ฒƒ์ด๋‹ค.

์ฃผ๋ณ€์˜ ์ƒ˜ํ”Œ์„ ๊ธฐ์ค€์œผ๋กœ ์˜ˆ์ธกํ•˜๊ธฐ ๋•Œ๋ฌธ์—, ๊ธธ์ด๋ฅผ 100์œผ๋กœ ์„ค์ •ํ•˜์˜€์„ ๋•Œ๋„ ์œ„์˜ ๊ทธ๋ž˜ํ”„์™€ ๋‹ค๋ฅผ ๊ฒŒ ์—†๋Š” x์ถ•์„ ๋ณด์—ฌ์ค€๋‹ค. ์ด๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด์„œ, ๋” ํฐ ๋ฐ์ดํ„ฐ๋ฅผ ์ถ”๊ฐ€ํ•ด๋„ ๋˜์ง€๋งŒ ๋ฒˆ๊ฑฐ๋กญ๋‹ค. ๋ฐ์ดํ„ฐ๋ฅผ ์ถ”๊ฐ€ํ•˜๋Š” ๋ฐฉ๋ฒ•๋ณด๋‹ค๋Š” ๋‹ค๋ฅธ ์•Œ๊ณ ๋ฆฌ์ฆ˜์œผ๋กœ ์˜ˆ์ธก์„ ํ•ด๋ณด์ž.


๐Ÿ”ฅ ์„ ํ˜• ํšŒ๊ท€ (linear regression)

์„ ํ˜• ํšŒ๊ท€๋Š” ํŠน์„ฑ๊ณผ ํƒ€๊นƒ ์‚ฌ์ด์˜ ๊ด€๊ณ„๋ฅผ ๋ชจ๋ธ๋งํ•˜๋Š” ํšŒ๊ท€๋ถ„์„ ๊ธฐ๋ฒ•์ด๋‹ค. ํŠน์„ฑ์ด ํ•˜๋‚˜๋ฉด ์ง์„  ๋ฐฉ์ •์‹์ด ๋˜์–ด ๋‹จ์ˆœ ์„ ํ˜• ํšŒ๊ท€(simple linear regression)์ด๋‹ค. ๋‘˜ ์ด์ƒ์˜ ์„ค๋ช… ๋ณ€์ˆ˜์— ๊ธฐ๋ฐ˜ํ•œ ๊ฒฝ์šฐ์—๋Š” ๋‹ค์ค‘ ์„ ํ˜• ํšŒ๊ท€๋ผ๊ณ  ํ•œ๋‹ค.

์„ ํ˜• ํšŒ๊ท€๋Š” ์•Œ๋ ค์ง€์ง€ ์•Š์€ ํŒŒ๋ผ๋ฏธํ„ฐ๋Š” ๋ฐ์ดํ„ฐ๋กœ๋ถ€ํ„ฐ ์ถ”์ •ํ•œ๋‹ค. ๊ธฐ์กด ๋ฐ์ดํ„ฐ๋ฅผ ํ›ˆ๋ จํ•˜๋ฉด, LinearRegressionํด๋ž˜์Šค๋Š” ๊ธฐ์šธ๊ธฐ์ธ a์™€ y์ ˆํŽธ์ธ b๋ฅผ ๊ฐ’์„ ์ฐพ๋Š”๋‹ค. ์ด ๊ฐ’์œผ๋กœ ํ›„์— ๋…๋ฆฝ ๋ณ€์ˆ˜ x์˜ ๋ฐ์ดํ„ฐ๋กœ y๋ฅผ ์˜ˆ์ธกํ•  ์ˆ˜ ์žˆ๋‹ค.


โ“์–ด๋–ป๊ฒŒ ๊ธฐ์šธ๊ธฐ์™€ y์ ˆํŽธ์„ ์ฐพ๋‚˜์š”?

from sklearn.linear_model import LinearRegression
lr = LinearRegression()

#์„ ํ˜• ํšŒ๊ท€ ๋ชจ๋ธ์„ ํ›ˆ๋ จ
lr.fit(train_input, train_target)

LinearRegression์€ ์‚ฌ์ด์ปท๋Ÿฐ์˜ ์„ ํ˜• ํšŒ๊ท€ ํด๋ž˜์Šค๋กœ, ๋‚ด๋ถ€์—์„œ ๊ธฐ์šธ๊ธฐ์™€ y์ ˆํŽธ์„ ๊ณ„์‚ฐํ•œ๋‹ค.

๋ชจ๋ธ ๋‚ด๋ถ€์—์„œ ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด ๊ฐ’์„ ์ฐพ๋Š” ๊ฒƒ์„ ๋ชจ๋ธ ํŒŒ๋ผ๋ฏธํ„ฐ๋ผ๊ณ  ํ•œ๋‹ค. 

print(lr.coef_, lr.intercept_)
#[39.01714496] -709.0186449535477

coef_์™€ intercept_๊ฐ€ ๊ธฐ์šธ๊ธฐ์™€ y์ ˆํŽธ์ด์ž ๋ชจ๋ธ ํŒŒ๋ผ๋ฏธํ„ฐ์ด๋‹ค.

* coef_ ์†์„ฑ ์ด๋ฆ„์—์„œ ์•Œ ์ˆ˜ ์žˆ๋“ฏ์ด ๋จธ์‹ ๋Ÿฌ๋‹์—์„œ ๊ธฐ์šธ๊ธฐ๋ฅผ ์ข…์ข… ๊ณ„์ˆ˜(coefficient) ๋˜๋Š” ๊ฐ€์ค‘์น˜(weight)๋ผ๊ณ  ํ•œ๋‹ค.


(์ขŒ)KNN (์šฐ)์„ ํ˜•ํšŒ๊ท€

KNN ํšŒ๊ท€ ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ 50cm์˜ ๋ฌด๊ฒŒ๋ฅผ 1033์œผ๋กœ ์˜ˆ์ธกํ–ˆ๊ณ , ์„ ํ˜• ํšŒ๊ท€ ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ 1241๋กœ ์˜ˆ์ธก์„ ํ•˜์˜€๋‹ค. ์ขŒ์ธก์ด ์˜ˆ์ƒํ•œ ๊ฐ’๋ณด๋‹ค๋Š” ์šฐ์ธก์ด ์˜ˆ์ƒํ•œ ๊ฐ’์ด ๋” ์‹ ๋ขฐ์„ฑ์ด ๋†’๋‹ค. ํ•˜์ง€๋งŒ ์šฐ์ธก ๊ทธ๋ž˜ํ”„๋ฅผ ์ž์„ธํžˆ ๋ณธ๋‹ค๋ฉด ์ด์ƒํ•œ ์ ์„ ๋Š๋‚„ ์ˆ˜ ์žˆ๋‹ค. ์šฐ์ธก ๊ทธ๋ž˜ํ”„์˜ ์ขŒ์ธก ํ•˜๋‹จ์„ ๋ณด๋ฉด, ๊ทธ๋ž˜ํ”„๋Š” ํ•œ ์—†์ด ๋‚ด๋ ค๊ฐ€์„œ ์Œ์ˆ˜๋กœ ๊ฐ„๋‹ค. ๊ธฐ์กด ๋ฐ์ดํ„ฐ๋Š” ์ง์„  ๊ทธ๋ž˜ํ”„๋ณด๋‹ค๋Š” ํœ˜์–ด์ง„ ๊ณก์„  ๊ทธ๋ž˜ํ”„๊ฐ€ ๋” ๊ฐ€๊น๋‹ค. ๊ณก์„  ๊ทธ๋ž˜ํ”„๋ฅผ ๊ทธ๋ฆฌ๊ธฐ์œ„ํ•ด์„œ๋Š” 2์ฐจ ๋ฐฉ์ •์‹์˜ ๊ทธ๋ž˜ํ”„๋ฅผ ๊ทธ๋ ค์•ผ ํ•˜๊ณ  ์ด๋ฅผ ๋‹คํ•ญ ํšŒ๊ท€๋ผ๊ณ  ํ•œ๋‹ค.


๐Ÿ”ฅ ๋‹คํ•ญ ํšŒ๊ท€(Polynomial Regression)

๋‹คํ•ญ ํšŒ๊ท€๋Š” ๋‹คํ•ญ์‹์„ ์‚ฌ์šฉํ•˜์—ฌ ํŠน์„ฑ๊ณผ ํƒ€๊นƒ ์‚ฌ์ด์˜ ๊ด€๊ณ„๋ฅผ ๋‚˜ํƒ€๋‚ธ๋‹ค.

lr = LinearRegression()
lr.fit(train_poly, train_target)

print(lr.predict([[50**2, 50]]))

#[1573.98423528]

์œ„ ์ฝ”๋“œ๋ธ”๋Ÿญ์€ x = 50 ์„ ๋Œ€์ž…ํ–ˆ์„ ๋•Œ, ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด y๋ฅผ 1573์œผ๋กœ ์˜ˆ์ธกํ•จ์„ ๋ณด์—ฌ์ค€๋‹ค.

print(lr.coef_, lr.intercept_)

#[  1.01433211 -21.55792498] 116.05021078278276

๋‹คํ•ญ์‹์˜ x², x ๊ทธ๋ฆฌ๊ณ  y์ ˆํŽธ์„ ์ถœ๋ ฅํ•œ ๊ฐ’์ด๋‹ค. 

x²์˜ ๊ณ„์ˆ˜(a)๋Š” 1.01433211, x์˜ ๊ณ„์ˆ˜(b)๋Š” -21.55792498, y์ ˆํŽธ์€ 116.05021078278276์ด๋‹ค.

๊ตฌํ•œ ๊ฐ’๋“ค์„ ์ˆ˜์‹ํ™”ํ•˜๋ฉด ์œ„์™€ ๊ฐ™์ด ๋‚˜ํƒ€๋‚ผ ์ˆ˜ ์žˆ๋‹ค.

๋‹จ์ˆœ ์„ ํ˜• ํšŒ๊ท€์˜ ๋ฌธ์ œ๋ฅผ ๋ณด์™„ํ•˜์—ฌ ๋” ๋‚˜์€ ๋‹ค์ค‘ ํšŒ๊ท€ ๊ทธ๋ž˜ํ”„๋ฅผ ๊ทธ๋ ค๋ณด์•˜๋‹ค.

#๊ตฌ๊ฐ„๋ณ„ ์ง์„ ์„ ๊ทธ๋ฆฌ๊ธฐ ์œ„ํ•ด 15์—์„œ 49๊นŒ์ง€ ์ •์ˆ˜ ๋ฐฐ์—ด์„ ๋งŒ๋“ ๋‹ค.
point = np.arange(15, 50)

#ํ›ˆ๋ จ ์„ธํŠธ์˜ ์‚ฐ์ ๋„๋ฅผ ๊ทธ๋ฆฐ๋‹ค.
plt.scatter(train_input, train_target)

#15์—์„œ 49๊นŒ์ง€ 2์ฐจ ๋ฐฉ์ •์‹ ๊ทธ๋ž˜ํ”„๋ฅผ ๊ทธ๋ฆฐ๋‹ค.
plt.plot(point, 1.01*point**2 - 21.6*point + 116.05)

#50cm ๋†์–ด ๋ฐ์ดํ„ฐ
plt.scatter(50, 1573, marker='^')
plt.xlabel('length')
plt.ylabel('weight')
plt.show()

๋‹ค์ค‘ ํšŒ๊ท€ ๊ทธ๋ž˜ํ”„ ์ฝ”๋“œ์ด๋‹ค. ์œ„ ์ฝ”๋“œ์—์„œ๋Š” arange() ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์งง์€ ์ง์„ ์„ ์ด์–ด์„œ ๋งˆ์น˜ ๊ณก์„ ์ฒ˜๋Ÿผ ํ‘œํ˜„ํ•˜์˜€๋‹ค.


๐Ÿ”ฅ๋„˜ํŒŒ์ด ๋ธŒ๋กœ๋“œ์บ์ŠคํŒ…

๊ธฐ๋ณธ์ ์œผ๋กœ NumPy์—์„œ๋Š” ๋ชจ์–‘์ด ๋‹ค๋ฅธ ๋ฐฐ์—ด๋ผ๋ฆฌ๋Š” ์—ฐ์‚ฐ์ด ๋ถˆ๊ฐ€๋Šฅํ•˜๋‹ค. ํ•˜์ง€๋งŒ ๋ธŒ๋กœ๋“œ์บ์ŠคํŒ…์€ ๋ชจ์–‘์ด ๋‹ค๋ฅธ ๋ฐฐ์—ด๋“ค ๊ฐ„์˜ ์—ฐ์‚ฐ์ด ์–ด๋–ค ์กฐ๊ฑด์„ ๋งŒ์กฑํ–ˆ์„ ๋•Œ ๊ฐ€๋Šฅํ•ด์ง€๋„๋ก ๋ฐฐ์—ด์„ ์ž๋™์ ์œผ๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ๊ฒƒ์ด๋‹ค.

 

๋ธŒ๋กœ๋“œ์บ์ŠคํŒ…์ด ๊ฐ€๋Šฅํ•œ ์กฐ๊ฑด

1. ์ฐจ์›์˜ ํฌ๊ธฐ๊ฐ€ 1์ผ ๋•Œ : ๋‘ ๋ฐฐ์—ด ๊ฐ„์˜ ์—ฐ์‚ฐ์—์„œ ์ตœ์†Œํ•œ ํ•˜๋‚˜์˜ ๋ฐฐ์—ด์˜ ์ฐจ์›์ด 1์ด๋ผ๋ฉด ๊ฐ€๋Šฅํ•˜๋‹ค.

2. ์ฐจ์›์˜ ์ง์ด ๋งž์„ ๋•Œ : ์ฐจ์›์— ๋Œ€ํ•ด ์ถ•์˜ ๊ธธ์ด๊ฐ€ ๋™์ผํ•˜๋ฉด ๋ธŒ๋กœ๋“œ์บ์ŠคํŒ…์ด ๊ฐ€๋Šฅํ•˜๋‹ค.

 

์•„๋ž˜ ์ด๋ฏธ์ง€๋Š” array๋ฅผ ์ฐจ์›์— ๋”ฐ๋ผ ์–ด๋–ค ๋ชจ์–‘์„ ํ•˜๊ณ  ์žˆ๊ณ  ์ถ•(axis)์€ ์–ด๋–ป๊ฒŒ ๊ตฌ์„ฑ๋˜์—ˆ๋Š”์ง€ ์•Œ ์ˆ˜ ์žˆ๋Š” ์ด๋ฏธ์ง€์ด๋‹ค.

axis๋ฅผ ์„ค์ •ํ•  ๋•Œ ์ž˜ ์ดํ•ด๊ฐ€ ์•ˆ ๋์—ˆ๋Š”๋ฐ ๋ธ”๋กœ๊ทธ ์ž‘์„ฑ์ž๋ถ„๊ป˜์„œ ์นœ์ ˆํ•˜๊ฒŒ ๋„ฃ์–ด์ฃผ์…จ๋‹ค.


[์ฐธ๊ณ ์ž๋ฃŒ]

 

์„ ํ˜• ํšŒ๊ท€, ๋‹คํ•ญ ํšŒ๊ท€ ์ด๋ฏธ์ง€ ์‚ฌ์šฉ

https://wikidocs.net/73484

 

B4. ๋‹คํ•ญ ํšŒ๊ท€๋ถ„์„(Polynomial Regression)

##### 13. ๋‹คํ•ญ ํšŒ๊ท€๋ถ„์„(Polynomial Regression) - ๋‹คํ•ญ ํšŒ๊ท€๋ถ„์„ : ์˜ˆ์ธก์ž๋“ค์ด 1์ฐจํ•ญ์œผ๋กœ ๊ตฌ์„ฑ๋œ ๊ฒƒ์ด ์•„๋‹Œ, 2์ฐจํ•ญ, 3์ฐจํ•ญ ๋“ฑ์œผ๋กœ ...

wikidocs.net

 

์„ ํ˜• ํšŒ๊ท€์— ๋Œ€ํ•ด ์•Œ๊ณ  ์‹ถ๋‹ค๋ฉด?

https://ko.wikipedia.org/wiki/%EC%84%A0%ED%98%95_%ED%9A%8C%EA%B7%80

 

์„ ํ˜• ํšŒ๊ท€ - ์œ„ํ‚ค๋ฐฑ๊ณผ, ์šฐ๋ฆฌ ๋ชจ๋‘์˜ ๋ฐฑ๊ณผ์‚ฌ์ „

๋…๋ฆฝ๋ณ€์ˆ˜ 1๊ฐœ์™€ ์ข…์†๋ณ€์ˆ˜ 1๊ฐœ๋ฅผ ๊ฐ€์ง„ ์„ ํ˜• ํšŒ๊ท€์˜ ์˜ˆ ํ†ต๊ณ„ํ•™์—์„œ, ์„ ํ˜• ํšŒ๊ท€(็ทšๅž‹ๅ›žๆญธ, ์˜์–ด: linear regression)๋Š” ์ข…์† ๋ณ€์ˆ˜ y์™€ ํ•œ ๊ฐœ ์ด์ƒ์˜ ๋…๋ฆฝ ๋ณ€์ˆ˜ (๋˜๋Š” ์„ค๋ช… ๋ณ€์ˆ˜) X์™€์˜ ์„ ํ˜• ์ƒ๊ด€ ๊ด€๊ณ„๋ฅผ ๋ชจ

ko.wikipedia.org

 

๋„˜ํŒŒ์ด ๋ธŒ๋กœ๋“œ์บ์ŠคํŒ…์— ๋Œ€ํ•ด์„œ ์ž์„ธํ•œ ์„ค๋ช…์„ ํ•˜๊ณ  ์žˆ๋‹ค

https://sacko.tistory.com/16

 

Python ๊ธฐ์ดˆ - NumPy Broadcasting ์ดํ•ดํ•˜๊ธฐ (2)

์ง€๋‚œ ํฌ์ŠคํŒ…์—์„œ๋Š” NumPy๋ฅผ ํ™œ์šฉํ•ด์„œ ๊ฐ„๋‹จํ•˜๊ฒŒ ๋ฒกํ„ฐ ์—ฐ์‚ฐ๊ณผ ํ–‰๋ ฌ ์—ฐ์‚ฐ์„ ํ•ด๋ณด์•˜๋‹ค. ์ด๋ฒˆ ํฌ์ŠคํŒ…์—์„œ ๋‹ค๋ฃฐ ๋‚ด์šฉ์€ ๊ธฐ์ดˆ๋ผ๊ณ ๋Š” ํ•  ์ˆ˜ ์—†์ง€๋งŒ ์•ž์œผ๋กœ NumPy๋ฅผ ํ™œ์šฉํ•ด์„œ ๋‹ค๋ฅธ ๋ชจ์–‘์˜ ๋ฐฐ์—ด ๊ฐ„์˜ ์—ฐ์‚ฐ์„

sacko.tistory.com