240610 Today I Learn
νκ·λΆμμ΄λ?
π‘ νκ·λΆμ
λ 립λ³μ(x)λ‘ μ’ μλ³μ(y)λ₯Ό μμΈ‘νλ λΆμκΈ°λ²μΌλ‘ μΆμΈμ *μ μ°Ύλκ²μ΄ λͺ©μ μ΄λ€. κ°μ§κ³ μμ§ μμ λ°μ΄ν°μ λν μμΈ‘μ νκ³ μΆμ λ μ¬μ©νλ€.
*μΆμΈμ y = a+bx
νκ·λΆμμ λ¨κ³
- λ
립λ³μ(x), μ’
μλ³μ(y) μ€μ λ° κ°μ€(κ·λ¬΄ vs. λ립)μ€μ
- x(κ²μμκ°, λ 립λ³μ), y(μ κΈ°μΈ, μ’ μλ³μ)
- λ립κ°μ€ : κ²μμκ°μ μ κΈ°μΈμ κ΄λ ¨μ΄ μμ κ²μ΄λ€.
→ κ·λ¬΄κ°μ€ : κ²μμκ°μ μ κΈ°μΈμ κ΄λ ¨μ΄ μμ κ²μ΄λ€.
- λ°μ΄ν° κ²½ν₯μ± νμΈ → μ°μ λλ₯Ό κ°λ¨νκ² κ·Έλ €λ³΄κΈ°
- λ°μ΄ν°κ° μ΄λ»κ² λΆν¬ν΄μλμ§ νμΈνκΈ°.
- μ΄λμ λ°μ΄ν°λ€μ΄ λ§μ΄ λΆν¬ν΄ μλμ§ νμΈνκΈ°.
- μ ν©μ± κ²μ¦ & κ²°κ³Ό ν΄μ
- νκ·λͺ¨λΈ(νκ·μ)μ΄ μΌλ§λ μ€λͺ λ ₯μ κ°λμ§? - μΌλ§λ μ ννμ§?
- νκ·λͺ¨λΈμ΄ ν΅κ³μ μΌλ‘ μ μλ―Ένμ§?
- λ 립λ³μ - μ’ μλ³μκ° μ ν κ΄κ³μΈμ§?
νκ·λΆμμ μ₯λ¨μ
μ₯μ | λ¨μ |
- λΆμ λ° ν΄μ λ°©λ²μ΄ λ€μ μ‘΄μ¬ - κ²°κ³Όμ λν κ·Όκ±°, μ΄μ , νμ©λ°©μ λ±μ μ 보λ₯Ό μ»λλ° μ μ© - μ’ μλ³μλ₯Ό μ€λͺ νκΈ° μν λ€μν λ 립λ³μλ₯Ό μ ν, μ€νν μ μμ. |
- κΈ°λ³Έ κ°μ μ΄ μ΄κΈλλ©΄ νκ·λΆμμ μ¬μ©ν μ μμ - λΉμ νμ± νμΈμ μν μ μ ν λ°©μμ΄ μ‘΄μ¬νμ§ μμ. |
μ ν©μ± κ²μ¦ & κ²°κ³Ό ν΄μ
νκ·λͺ¨λΈμ μ€λͺ λ ₯ κ²μ¦νκΈ° : R-Squared
π‘ R-squared
μ 체 λͺ¨νμμ νκ·μ μΌλ‘ μ€λͺ ν μ μλ μ λ / μ 체 y μ λ³λλ μ€μ νκ·λͺ¨νμ΄ μ€λͺ νλ λ³λλ(SSreg)μ λΉμ¨
- μ€λͺ
λ ₯μ 0κ³Ό 1 μ¬μ΄μ κ°μ κ°μ§λ©°, 1μ κ°κΉμΈμλ‘ λͺ¨λΈμ μ±λ₯μ΄ μ’λ€λ κ²μ μλ―Ένλ€.
→ 60%λ§ λλ λ³΄ν΅ μ±λ₯μ΄ μ’λ€κ³ νλ€.
νκ·λͺ¨λΈμ ν΅κ³μ μ μμ± κ²μ νκΈ° : F-Test
κ·λ¬΄κ°μ€: νκ·λͺ¨λΈμ νλΉνμ§ μμ κ²μ΄λ€.
λ립κ°μ€: νκ·λͺ¨λΈμ νλΉν κ²μ΄λ€.
- F-κ²μ μ ν΅ν΄ μ»μ p-value κ°μ΄ 0.05λ³΄λ€ μλ€λ©΄ λ립κ°μ€μ μ±ννλ€.
λ 립λ³μμ μ’ μλ³μ κ° μ νκ΄κ³ νμΈνκΈ° : T-Test
κ·λ¬΄κ°μ€: λ 립λ³μμ μ’ μλ³μ κ° μ νμ μΈ μ°κ΄μ΄ μμ κ²μ΄λ€.
λ립κ°μ€: λ 립λ³μμ μ’ μλ³μ κ° μ νμ μΈ μ°κ΄μ΄ μμ κ²μ΄λ€.
- t-κ²μ μ ν΅ν΄ μ»μ p-value κ°μ΄ 0.05λ³΄λ€ μλ€λ©΄ λ립κ°μ€μ μ±ννλ€.
OLS(Ordinary Least Squares) ν΄μνκΈ°
λ보기
- Dep. Variable (μ’ μ λ³μ) : νκ· λͺ¨λΈμμ μ¬μ©λ μ’ μ λ³μλ₯Ό νμ
- Model : νκ· λͺ¨λΈμ μ’
λ₯. μ¬κΈ°μλ OLS (μ΅μμ κ³±λ²) νκ· λͺ¨λΈ μ¬μ©
- OLS: κ·Όμ¬μ μΌλ‘ ꡬνλ €λ ν΄μ μ€μ ν΄μ μ€μ°¨μ μ κ³±μ ν©μ΄ μ΅μκ° λλ ν΄λ₯Ό ꡬνλ λ°©λ²
- Method : νκ· λΆμμ μ¬μ©λ λ©μλ. μ¬κΈ°μλ Least Squares (μ΅μμ κ³±λ²)μ¬μ©
- Date : νκ· λΆμμ΄ μνλ λ μ§
- Time : νκ· λΆμμ΄ μνλ μκ°
- No. Observations : μ¬μ©λ μνμ μ (κ΄μΈ‘μΉμ κ°μ)
- coef: νκ· κ³μ
- std err (νμ€ μ€μ°¨) : νκ· κ³μμ νμ€ μ€μ°¨
- t-statistic (t-ν΅κ³λ) : νκ· κ³μμ λν t-ν΅κ³λ.
- P>|t| (p-value) : κ° κ³μμ λν p-value
- [0.025 0.975] : 95% μ λ’°κ΅¬κ° μλ―Έ
- R-squared (κ²°μ κ³μ) : νκ·λͺ¨λΈμ μ€λͺ λ ₯. 1μ κ°κΉμΈμλ‘ λͺ¨λΈμ΄ λ°μ΄ν°λ₯Ό μ μ€λͺ νκ³ μλ€λ κ²μ μλ―Έ
- F-statistic (F-ν΅κ³λ) : λͺ¨λΈ μ 체μ ν΅κ³μ μ μμ±μ λνλ΄λ F-ν΅κ³λμ΄λ€. λμμλ‘ λͺ¨λΈμ΄ ν΅κ³μ μΌλ‘ μ μλ―Ένλ€λ κ²μ μλ―Έ
- Prob (F-statistic) : F-ν΅κ³λμ λν p-value
python μ€μ΅
λ보기
λΌμ΄λΈλ¬λ¦¬ μ 보
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
λ°μ΄ν° λΆλ¬μ€κΈ°
#sklearn μμ μ 곡νλ λ°μ΄ν° μ
μ€ νλμΈ diabetes λΆλ¬μ€κΈ°
from sklearn.datasets import load_diabetes
# λ°μ΄ν°λ₯Ό κ°μ Έμ€κ³ , μ΄λ¦μ df λ‘ λ°μμ£Όκ² μ΅λλ€.
df = load_diabetes()
# targetμ λΉλ¨λ³μ μμΉμ
λλ€.
# κ°κ°μ λ°μ΄ν°λ₯Ό κ°μ Έμ dataframe μΌλ‘ λ°μμ£Όλλ‘ νκ² μ΅λλ€.
df = pd.DataFrame(df['data'],index=df['target'], columns=df['feature_names'])
λ 립λ³μ, μ’ μλ³μμ€μ λ° κ°μ€μ€μ
- λ 립λ³μ(x): bmi(체μ§λμ§μ)
- μ’ μλ³μ(y): λΉλ¨λ³μμΉ
Y = df.index.values
X = df.bmi.values
- λ립κ°μ€ : λΉλ¨λ³μ μμΉ(target)μ bmi(체μ§λμ§μ)λ κ΄λ ¨μ΄ μλ€.
→ κ·λ¬΄κ°μ€ : λΉλ¨λ³μ μμΉ(target)μ bmi(체μ§λμ§μ)λ κ΄λ ¨μ΄ μλ€.
λΆν¬ νμΈνκΈ°
plt.scatter(X, Y, alpha = 0.6)
- μ°μν₯ νλ μ νμ κ΄κ³κ° μλλ―μ΄ λ³΄μΈλ€.
νκ·λΆμ μ§ννκΈ°
# νκ·λΆμμ μν΄ 2d arrayλ‘ λ³ν
X = X.reshape(-1,1)
Y = Y.reshape(-1,1)
# νκ·λΆμ μ§ν
lr.fit(X, Y)
# intercept(yμ νΈ, b0), coef(κΈ°μΈκΈ°, b1)λ‘ νκ·μ μ°ΎκΈ°
# y= b0 +b1x
lr.fit(X, Y).intercept_, lr.fit(X, Y).coef_[0]
## νκ·μ: y= 152.133 + 949.435x
# νκ·μ μΆκ°νκΈ°
# κ·Έλν 그리기 μν΄ λ€μ X,Y μ μΈ
Y = df.index.values
X = df.bmi.values
#numpy μμ μ 곡νλ plotfit ν¨μλ₯Ό ν΅ν΄ νκ·μ ꡬνκΈ°
b0, b1 = np.polyfit(X, Y, 1)
plt.scatter(X, Y, alpha = 0.6)
plt.plot(X=X,
Y= b1+b0*X, #νκ·μ μ xλ₯Ό λμ
ν΄ μμΈ‘κ° κ΅¬νκΈ°
color='red')
plt.show()
νκ·λΆμ μ ν©μ± κ²μ λ° κ²°κ³Όν΄μνκΈ°(OLS)
import statsmodels.api as sm
results = sm.OLS(Y, sm.add_constant(X)).fit()
results.summary()