7 Mon

ํ˜„์—… ์‹ค๋ฌด์ž์—๊ฒŒ ๋ฐฐ์šฐ๋Š” Kaggle ๋จธ์‹ ๋Ÿฌ๋‹ ์ž…๋ฌธ

K-Fold Cross Validation

  • ๋ฐ์ดํ„ฐ์˜ ๊ฐœ์ˆ˜๊ฐ€ ๋„ˆ๋ฌด ์ž‘์„ ๊ฒฝ์šฐ ํŠธ๋ ˆ์ด๋‹ ๋ฐ์ดํ„ฐ์™€ ํ…Œ์ŠคํŠธ ๋ฐ์ดํ„ฐ์˜ ๋ถ„๋ฅ˜ ๋ฐฉ์‹์— ๋”ฐ๋ผ ์„ฑ๋Šฅ ์ธก์ •๊ฒฐ๊ณผ๊ฐ€ ํฌ๊ฒŒ ๋‹ฌ๋ผ์งˆ ์ˆ˜ ์žˆ๋‹ค.

  • ํŠธ๋ ˆ์ด๋‹ ๋ฐ์ดํ„ฐ์— ๊ทน๋‹จ์ ์ธ ๋ถ„ํฌ์˜ ๋ฐ์ดํ„ฐ๊ฐ€ ๋ชฐ๋ ค ์žˆ๋‹ค๋ฉด ํ…Œ์ŠคํŠธ ๋ฐ์ดํ„ฐ์˜ ์„ฑ๋Šฅ์ด ์ž˜ ์•ˆ๋‚˜์˜ค๊ฒŒ ๋œ๋‹ค.

https://scikit-learn.org/stable/modules/generated/sklearn.model_selection.KFold.html

>>> import numpy as np
>>> from sklearn.model_selection import KFold
>>> X = np.array([[1, 2], [3, 4], [1, 2], [3, 4]])
>>> y = np.array([1, 2, 3, 4])
>>> kf = KFold(n_splits=2)
>>> kf.get_n_splits(X)
2
>>> print(kf)
KFold(n_splits=2, random_state=None, shuffle=False)
>>> for train_index, test_index in kf.split(X):
...     print("TRAIN:", train_index, "TEST:", test_index)
...     X_train, X_test = X[train_index], X[test_index]
...     y_train, y_test = y[train_index], y[test_index]
TRAIN: [2 3] TEST: [0 1]
TRAIN: [0 1] TEST: [2 3]

Feature Engineering - Feature Selection

  • ๋„๋ฉ”์ธ ์ง€์‹์ด๋‚˜ ๋ถ„์„์„ ํ†ตํ•ด ์œ ์˜๋ฏธํ•œ ํŠน์ง•๋“ค๋งŒ์„ ์„ ๋ณ„ํ•ด๋‚ด๊ฑฐ๋‚˜ Feature์˜ ํ˜•ํƒœ๋ฅผ ๋”์šฑ ์ ํ•ฉํ•œ ํ˜•ํƒœ๋กœ ๋ณ€๊ฒฝํ•˜๋Š” ๊ฒƒ

  • ์ ์ ˆํ•œ Feature Enginerring์€ ๋จธ์‹ ๋Ÿฌ๋‹ ๋ชจ๋ธ์˜ ์„ฑ๋Šฅ์— ํฐ ์˜ํ–ฅ์„ ๋ผ์น  ์ˆ˜ ์žˆ๋‹ค

  • ๋‹ค์Œ๊ณผ ๊ฐ™์ด 3์ข…๋ฅ˜๋กœ ๋‚˜๋‰œ๋‹ค

    • Feature Selection

    • Normalization

    • Feature Generation

Feature Selection

  • ์˜ˆ์ธก๊ฐ’๊ณผ ์—ฐ๊ด€์ด ์—†๋Š” ๋ถˆํ•„์š”ํ•œ ํŠน์ง•์„ ์ œ๊ฑฐํ•ด์„œ ๋จธ์‹ ๋Ÿฌ๋‹ ๋ชจ๋ธ์˜ ์„ฑ๋Šฅ์„ ๋”์šฑ ๋†’์ด๋Š” ๊ธฐ๋ฒ•

  • ์ œ๊ฑฐํ•  ํŠน์ง•์„ ์„ ํƒํ•˜๊ธฐ ์œ„ํ•ด ์ƒ๊ด€ ๋ถ„์„๋“ฑ์„ ์ง„ํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ค

์ƒ๊ด€ ๋ถ„์„(Correlation Analysis) & regplot()

์ƒ๊ด€ ๋ถ„์„ ๋˜๋Š” ์ƒ๊ด€ ๊ด€๊ณ„๋Š” ํ™•๋ฅ ๋ก ๊ณผ ํ†ต๊ณ„ํ•™์—์„œ ๋‘ ๋ณ€์ˆ˜๊ฐ„์— ์–ด๋–ค ์„ ํ˜•์  ๋˜๋Š” ๋น„์„ ํ˜•์  ๊ด€๊ณ„๋ฅผ ๊ฐ–๊ณ  ์žˆ๋Š”์ง€์— ๋Œ€ํ•œ ๋ฐฉ๋ฒ•์ด๋‹ค

  • 1์— ๊ฐ€๊นŒ์šด ๊ฐ’ : ๋‘ ๋ณ€์ˆ˜๊ฐ„์˜ ์–‘์˜ ์ƒ๊ด€๊ด€๊ณ„

  • 0์— ๊ฐ€๊นŒ์šด ๊ฐ’ : ๋‘ ๋ณ€์ˆ˜๊ฐ„์˜ ์ƒ๊ด€๊ด€๊ณ„๊ฐ€ ์—†์Œ

  • -1์— ๊ฐ€๊นŒ์šด ๊ฐ’ : ๋‘ ๋ณ€์ˆ˜๊ฐ„์˜ ์Œ์˜ ์ƒ๊ด€๊ด€๊ณ„

๊ตฌํ˜„

  • scikit-learn์„ ์ด์šฉํ•ด ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค

corr=df.corr()
plt.figure(figsize=(10, 10))
sns.heatmap(corr, 
        vmax=0.8,
        linewidths=0.01,
        square=True,
        annot=True,
        cmap='YlGnBu');
plt.tilte('Correlation Matrix')

sns.regplot ์œผ๋กœ Feature๊ฐ„์˜ ๊ฒฝํ–ฅ์„ฑ ์ถœ๋ ฅ

  • sns.regplot(data={dataframe}, x={์ปฌ๋Ÿผ๋ช…}, y={์ปฌ๋Ÿผ๋ช…}) ํ˜•ํƒœ๋ฅผ ์ด์šฉํ•ด์„œ regression line์ด ํฌํ•จ๋œ scatter plot์„ ๊ทธ๋ฆด ์ˆ˜ ์žˆ๋‹ค.

Regression ์•Œ๊ณ ๋ฆฌ์ฆ˜์œผ๋กœ ๋ณด์Šคํ„ด ๋ถ€๋™์‚ฐ ๊ฐ€๊ฒฉ ์˜ˆ์ธกํ•ด๋ณด๊ธฐ (EDA & Feature Selection)

  • 1970๋…„๋„์˜ ๋ณด์Šคํ„ด ์ง€์—ญ์˜ ๋ถ€๋™์‚ฐ ๊ฐ€๊ฒฉ์„ ์ˆ˜์ง‘ํ•œ ๋ฐ์ดํ„ฐ

  • Feature ๋ฐ์ดํ„ฐ : 13๊ฐœ

  • ๋ฐ์ดํ„ฐ ๊ฐœ์ˆ˜ : 506๊ฐœ

  • Target data : ๋ณด์Šคํ„ด ๋ถ€๋™์‚ฐ ์ง‘๊ฐ’ (๋‹จ์œ„ : $1000)

  • ์‚ฌ์šฉ ์•Œ๊ณ ๋ฆฌ์ฆ˜

    • LinearRegression

  • ์ถ”๊ฐ€์ ์ธ ์ ์šฉ๊ธฐ๋ฒ•

    • Feature Selection

๋ณด์Šคํ„ด ๋ถ€๋™์‚ฐ ๋ฐ์ดํ„ฐ์˜ ํŠน์ง•๋“ค(Features)

  1. CRIM: ๋„์‹œ๋ณ„ ๋ฒ”์ฃ„๋ฐœ์ƒ๋ฅ 

  2. ZN: 25,000ํ‰์„ ๋„˜๋Š” ํ† ์ง€์˜ ๋น„์œจ

  3. INDUS: ๋„์‹œ๋ณ„ ๋น„์ƒ์—… ์ง€๊ตฌ์˜ ๋น„์œ 

  4. CHAS: ์ฐฐ์Šค ๊ฐ•์˜ ๋”๋ฏธ ๋ณ€์ˆ˜(1 = ๊ฐ•์˜ ๊ฒฝ๊ณ„, 0 = ๋‚˜๋จธ์ง€)

  5. NOX: ์ผ์‚ฐํ™”์งˆ์†Œ ๋†๋„

  6. RM: ์ฃผ๊ฑฐํ•  ์ˆ˜ ์žˆ๋Š” ํ‰๊ท  ๋ฐฉ์˜๊ฐœ์ˆ˜

  7. AGE: 1940๋…„ ์ด์ „์— ์ง€์–ด์ง„ ์ฃผํƒ์˜ ๋น„์œจ

  8. DIS: 5๊ฐœ์˜ ๊ณ ์šฉ์ง€์›์„ผํ„ฐ๊นŒ์ง€์˜ ๊ฐ€์ค‘์น˜๊ฐ€ ๊ณ ๋ ค๋œ ๊ฑฐ๋ฆฌ

  9. RAD: ๊ณ ์†๋„๋กœ์˜ ์ ‘๊ทผ ์šฉ์ด์„ฑ์— ๋Œ€ํ•œ ์ง€ํ‘œ

  10. TAX: 10,000๋‹ฌ๋Ÿฌ๋‹น ์žฌ์‚ฐ์„ธ ๋น„์œจ

  11. PTRATIO: ๋„์‹œ๋ณ„ ๊ต์‚ฌ์™€ ํ•™์ƒ์˜ ๋น„์œจ

  12. B: ๋„์‹œ์˜ ํ‘์ธ ๊ฑฐ์ฃผ ๋น„์œ 

  13. LSTAT: ์ €์†Œ๋“์ธต์˜ ๋น„์œจ

์ „์ฒด ํŠน์ง•(Feature)๋ฅผ ์‚ฌ์šฉํ•œ Linear Regression

X = boston_house_data.data
y = boston_house_data.target
type(X)
numpy.ndarray
from sklearn.model_selection import KFold

num_split = 5
kf = KFold(n_splits=num_split)

avg_MSE = 0.0
for train_index, test_index in kf.split(X):
  X_train, X_test = X[train_index], X[test_index]
  y_train, y_test = y[train_index], y[test_index]
  # ์„ ํ˜•ํšŒ๊ท€(Linear Regression) ๋ชจ๋ธ ์„ ์–ธํ•˜๊ธฐ
  lr = LinearRegression()

  # ์„ ํ˜•ํšŒ๊ท€(Linear Regression) ๋ชจ๋ธ ํ•™์Šตํ•˜๊ธฐ
  lr.fit(X_train, y_train)

  # ํ…Œ์ŠคํŠธ ๋ฐ์ดํ„ฐ์— ๋Œ€ํ•œ ์˜ˆ์ธก์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.
  y_pred = lr.predict(X_test)

  # MSE(Mean Squared Error)๋ฅผ ์ธก์ •ํ•ฉ๋‹ˆ๋‹ค.
  avg_MSE = avg_MSE + mean_squared_error(y_test, y_pred)

print('Average MSE :', avg_MSE/num_split)
print('Avergae RMSE :', np.sqrt(avg_MSE/num_split))
Average MSE : 37.13180746769903
Avergae RMSE : 6.093587405436885

์ƒ๊ด€๋ถ„์„(Correlation Analysis)

boston_house_df = pd.DataFrame(boston_house_data.data, columns = boston_house_data.feature_names)
boston_house_df['PRICE'] = y
boston_house_df.head()

CRIM

ZN

INDUS

CHAS

NOX

RM

AGE

DIS

RAD

TAX

PTRATIO

B

LSTAT

PRICE

0

0.00632

18.0

2.31

0.0

0.538

6.575

65.2

4.0900

1.0

296.0

15.3

396.90

4.98

24.0

1

0.02731

0.0

7.07

0.0

0.469

6.421

78.9

4.9671

2.0

242.0

17.8

396.90

9.14

21.6

2

0.02729

0.0

7.07

0.0

0.469

7.185

61.1

4.9671

2.0

242.0

17.8

392.83

4.03

34.7

3

0.03237

0.0

2.18

0.0

0.458

6.998

45.8

6.0622

3.0

222.0

18.7

394.63

2.94

33.4

4

0.06905

0.0

2.18

0.0

0.458

7.147

54.2

6.0622

3.0

222.0

18.7

396.90

5.33

36.2

corr = boston_house_df.corr()
plt.figure(figsize=(10, 10));
sns.heatmap(corr,
            vmax=0.8,
            linewidths=0.01,
            square=True,
            annot=True,
            cmap='YlGnBu');
plt.title('Feature Correlation');

regplot์œผ๋กœ ๋ณด๋Š” ์ƒ๊ด€๊ด€๊ณ„

figure, ax_list = plt.subplots(nrows=3, ncols=5)
figure.set_size_inches(20,20) 
for i in range(len(full_column_list)): 
  sns.regplot(data=boston_house_df, x=full_column_list[i], y='PRICE', ax=ax_list[int(i/5)][int(i%5)]) 
  ax_list[int(i/5)][int(i%5)].set_title("regplot " + full_column_list[i])

์œ ์˜๋ฏธํ•œ Feature๋“ค๋งŒ์„ ๋‚จ๊ธฐ๋Š” Feature Selection

print(type(corr))
corr
<class 'pandas.core.frame.DataFrame'>

CRIM

ZN

INDUS

CHAS

NOX

RM

AGE

DIS

RAD

TAX

PTRATIO

B

LSTAT

PRICE

CRIM

1.000000

-0.200469

0.406583

-0.055892

0.420972

-0.219247

0.352734

-0.379670

0.625505

0.582764

0.289946

-0.385064

0.455621

-0.388305

ZN

-0.200469

1.000000

-0.533828

-0.042697

-0.516604

0.311991

-0.569537

0.664408

-0.311948

-0.314563

-0.391679

0.175520

-0.412995

0.360445

INDUS

0.406583

-0.533828

1.000000

0.062938

0.763651

-0.391676

0.644779

-0.708027

0.595129

0.720760

0.383248

-0.356977

0.603800

-0.483725

CHAS

-0.055892

-0.042697

0.062938

1.000000

0.091203

0.091251

0.086518

-0.099176

-0.007368

-0.035587

-0.121515

0.048788

-0.053929

0.175260

NOX

0.420972

-0.516604

0.763651

0.091203

1.000000

-0.302188

0.731470

-0.769230

0.611441

0.668023

0.188933

-0.380051

0.590879

-0.427321

RM

-0.219247

0.311991

-0.391676

0.091251

-0.302188

1.000000

-0.240265

0.205246

-0.209847

-0.292048

-0.355501

0.128069

-0.613808

0.695360

AGE

0.352734

-0.569537

0.644779

0.086518

0.731470

-0.240265

1.000000

-0.747881

0.456022

0.506456

0.261515

-0.273534

0.602339

-0.376955

DIS

-0.379670

0.664408

-0.708027

-0.099176

-0.769230

0.205246

-0.747881

1.000000

-0.494588

-0.534432

-0.232471

0.291512

-0.496996

0.249929

RAD

0.625505

-0.311948

0.595129

-0.007368

0.611441

-0.209847

0.456022

-0.494588

1.000000

0.910228

0.464741

-0.444413

0.488676

-0.381626

TAX

0.582764

-0.314563

0.720760

-0.035587

0.668023

-0.292048

0.506456

-0.534432

0.910228

1.000000

0.460853

-0.441808

0.543993

-0.468536

PTRATIO

0.289946

-0.391679

0.383248

-0.121515

0.188933

-0.355501

0.261515

-0.232471

0.464741

0.460853

1.000000

-0.177383

0.374044

-0.507787

B

-0.385064

0.175520

-0.356977

0.048788

-0.380051

0.128069

-0.273534

0.291512

-0.444413

-0.441808

-0.177383

1.000000

-0.366087

0.333461

LSTAT

0.455621

-0.412995

0.603800

-0.053929

0.590879

-0.613808

0.602339

-0.496996

0.488676

0.543993

0.374044

-0.366087

1.000000

-0.737663

PRICE

-0.388305

0.360445

-0.483725

0.175260

-0.427321

0.695360

-0.376955

0.249929

-0.381626

-0.468536

-0.507787

0.333461

-0.737663

1.000000

useful_feature_list = corr.query("PRICE > 0.5 or PRICE < -0.5").index.values.tolist()
useful_feature_list.remove('PRICE')
print(useful_feature_list)
['RM', 'PTRATIO', 'LSTAT']
X = boston_house_df.loc[:,useful_feature_list].values
y = boston_house_df.iloc[:,-1].values
print(X.shape)
print(y.shape)
(506, 3)
(506,)

Feature Selection ๊ฒฐ๊ณผ with K-fold

num_split = 5

kf = KFold(n_splits=num_split)

avg_MSE = 0.0

for train_index, test_index in kf.split(X):
  X_train, X_test = X[train_index], X[test_index]
  y_train, y_test = y[train_index], y[test_index]
  # ์„ ํ˜•ํšŒ๊ท€(Linear Regression) ๋ชจ๋ธ ์„ ์–ธํ•˜๊ธฐ
  lr = LinearRegression()

  # ์„ ํ˜•ํšŒ๊ท€(Linear Regression) ๋ชจ๋ธ ํ•™์Šตํ•˜๊ธฐ
  lr.fit(X_train, y_train)

  # ํ…Œ์ŠคํŠธ ๋ฐ์ดํ„ฐ์— ๋Œ€ํ•œ ์˜ˆ์ธก์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.
  y_pred = lr.predict(X_test)

  # MSE(Mean Squared Error)๋ฅผ ์ธก์ •ํ•ฉ๋‹ˆ๋‹ค.
  avg_MSE = avg_MSE + mean_squared_error(y_test, y_pred)

print('Average MSE :', avg_MSE/num_split)
print('Avergae RMSE :', np.sqrt(avg_MSE/num_split))
Average MSE : 34.10008149030686
Avergae RMSE : 5.839527505741099

๊ฒฐ๋ก 

์„ฑ๋Šฅ์ด ๋” ์ข‹์•„์ง„ ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ๋‹ค

  • ์ด์ „

Average MSE : 37.13180746769903
Avergae RMSE : 6.093587405436885
  • ์ดํ›„

Average MSE : 34.10008149030686
Avergae RMSE : 5.839527505741099

Feature Engineering - Feature Normalization

  • Feature๊ฐ’์˜ ๋ฒ”์œ„๋ฅผ ์กฐ์ •ํ•˜๋Š” ๊ธฐ๋ฒ•

  • Feature๋ฅผ ์ •๊ทœํ™” ํ•  ๊ฒฝ์šฐ ๋” ์•ˆ์ •์ ์œผ๋กœ ๋จธ์‹ ๋Ÿฌ๋‹ ๋ชจ๋ธ์„ ํ•™์Šต์‹œํ‚ฌ ์ˆ˜ ์žˆ๋‹ค

  • Min-Max Scaling์„ ํ•  ์ˆ˜๋„ ์žˆ๋‹ค. ์ด ๋•Œ๋Š” ๋ชจ๋“  ๊ฐ’์ด 0์—์„œ 1์‚ฌ์ด์— ์œ„์น˜ํ•˜๊ฒŒ ๋œ๋‹ค.

    • x' = (x - min) / (max- min)

from sklearn import preprocessing
normalized_data = preprocessing.StandardScaler().
                                fit_transform(data)
from sklearn import preprocessing
normalized_data = preprocessing.MinMaxScaler().
                                fit_transform(data)

Feature Engineering - Feature Generation

  • ๊ธฐ์กด์˜ ํŠน์ง•๊ฐ’๋“ค์„ ์กฐํ•ฉํ•ด์„œ ์ƒˆ๋กœ์šด ํŠน์ง•์„ ๋งŒ๋“œ๋Š” ๋ฐฉ์‹

  • ๊ฐ€์žฅ ๋Œ€ํ‘œ์ ์ธ ๋ฐฉ์‹์€ PolynomialFeature ๋ฐฉ๋ฒ•์ด๋‹ค

    • ์„œ๋กœ ๋‹ค๋ฅธ ํŠน์ง•๋“ค๊ฐ„์˜ ๊ณฑ์…ˆ์„ ์ƒˆ๋กœ์šด Feature๋กœ ๋งŒ๋“ ๋‹ค

    • ์˜ˆ๋ฅผ ๋“ค๋ฉด ๋ฒ”์ฃ„์œจ x1๊ณผ ์ €์†Œ๋“์ธต ๋น„์œจ x2๋ฅผ ๊ณฑํ•ด ์ƒˆ๋กœ์šด ํŠน์ง• x1*x2 ๋ฅผ ๋งŒ๋“ ๋‹ค

  • ์•„๋ž˜ ํ•จ์ˆ˜๋Š” ๋ณด์Šคํ„ด ๋ถ€๋™์‚ฐ์— ๋Œ€ํ•œ 13๊ฐœ์˜ ํŠน์ง•์— 91๊ฐœ์˜ ์ƒˆ๋กœ์šด ํŠน์ง•์„ ์ถ”๊ฐ€ํ•˜์—ฌ ์ด 104๊ฐœ์˜ ํŠน์ง•์„ ๋ฐ˜ํ™˜ํ•˜๊ฒŒ ๋œ๋‹ค

from sklearn.preprocessing import MinMaxScaler,
                                PolynomialFeatures

def load_extended_boston():
    boston = load_boston()
    X = boston.data
    
    X = MinMaxScaler().fit_transform(boston.data)
    X = PolynomialFeatures(degree=2, include_bias=False).
        fit_transform(X)
        
    return X, boston.target

Ridge & Lasso & ElasticNet Regression

์•„๋ž˜ ์‹๋“ค์€ ํ•ด๋‹น ์ถœ์ฒ˜์—์„œ ๊ฐ€์ ธ์˜ด

https://rk1993.tistory.com/entry/Ridge-regression%EC%99%80-Lasso-regression-%EC%89%BD%EA%B2%8C-%EC%9D%B4%ED%95%B4%ED%95%98%EA%B8%B0

Rdige Regression

  • L2 Regularization์„ ์ด์šฉํ•ด์„œ ๊ฐ€์ค‘์น˜ w๋ฅผ ์ œํ•œํ•˜๋Š” ๊ธฐ๋ฒ•

Lasso Regression

  • L1 Regularization์„ ์ด์šฉํ•ด์„œ ๊ฐ€์ค‘์น˜ w๋ฅผ ์ œํ•œํ•˜๋Š” ๊ธฐ๋ฒ•

๋น„๊ต

ElasticNet Regression

  • Ridge์™€ Lasso๋ฅผ ๊ฒฐํ•ฉํ•œ ๊ธฐ๋ฒ•

https://nurilee.com/2020/01/26/data-science-model-summary-linear-ridge-lasso-elasticnet/

์–ด๋–ค ๊ฒƒ์„ ์จ์•ผํ• ๊นŒ?

  • ์ •๋‹ต์€ ์—†๋‹ค.

  • ์ƒํ™ฉ์— ๋งž๊ฒŒ ์จ์•ผ ํ•˜๋Š” ๊ฒƒ์ด ํ˜„๋‹ต.

  • ์ด ์ƒํ™ฉ์— ๋งž๊ฒŒ ์จ์•ผํ•˜๋Š” ๊ธฐ์ค€์„ ๊ฐ€์ด๋“œ๋กœ ์ œ๊ณตํ•˜๊ณ  ์žˆ๋‹ค

  • Regression ์•ˆ์—์„œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋ถ„๋ฅ˜๋œ๋‹ค

    • ๋ฐ์ดํ„ฐ๊ฐ€ 10๋งŒ๊ฐœ ์ดํ•˜์ธ๊ฐ€? => SGD Regressor

    • ์ „์ฒด feature ์ค‘ ํŠน์ • feature์˜ ์ค‘์š”๋„๊ฐ€ ๋” ํฐ๊ฐ€? => Lasso, ElasticNet

    • ์ „์ฒด feature์˜ ์ค‘์š”๋„๊ฐ€ ๊ณ ๋ฅด๋‹ค => Ridge

      • ์ž˜ ์ž‘๋™์„ ํ•˜์ง€ ์•Š๋Š”๊ฐ€? => Ensemble Regressor

์ฝ”๋“œ๋ ˆ๋ฒจ ๊ตฌํ˜„

from sklearn.linear_model import LinearRegression,
                                Ridge,
                                Lasso,
                                ElasticNet
lr = LinearRegression()
ridge_reg = Ridge()
lasso_reg = Lasso()
elasticnet_Reg = ElasticNet()

ํ•˜์ดํผ ํŒŒ๋ผ๋ฏธํ„ฐ

  • ์•Œ๊ณ ๋ฆฌ์ฆ˜์— ์˜ํ•ด ๋ณ€๊ฒฝ๋˜๋Š” ํŒŒ๋ผ๋ฏธํ„ฐ ์™ธ์— ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋””์ž์ด๋„ˆ๊ฐ€ ์„ค์ •ํ•ด์ค˜์•ผ ํ•˜๋Š” ๊ฐ’์„ ํ•˜์ดํผ ํŒŒ๋ผ๋ฏธํ„ฐ ๋ผ๊ณ  ํ•œ๋‹ค

  • ์ ์ ˆํ•œ ํ•˜์ดํผ ํŒŒ๋ฆฌ๋ฏธํ„ฐ ๊ฐ’์„ ์ •ํ•ด์ฃผ๋Š” ๊ฒƒ๋„ ๋ชจ๋ธ์˜ ์„ฑ๋Šฅ์˜ ์ค‘์š”ํ•œ ์š”์†Œ ์ค‘ ํ•˜๋‚˜

๋ณด์Šคํ„ด ๋ถ€๋™์‚ฐ ๊ฐ€๊ฒฉ ์˜ˆ์ธก ์„ฑ๋Šฅ ํ–ฅ์ƒ์‹œ์ผœ๋ณด๊ธฐ (Feature Generation & Advanced Estimator)

  • Input data : 104 Dimension (PolynomialFeatures๋ฅผ ์‚ฌ์šฉํ•ด์„œ ํ™•์žฅ๋œ Feature Set)

  • Target data : ๋ณด์Šคํ„ด ๋ถ€๋™์‚ฐ ์ง‘๊ฐ’ (๋‹จ์œ„ : $1000)

  • ์‚ฌ์šฉ ์•Œ๊ณ ๋ฆฌ์ฆ˜

    • LinearRegression

    • Ridge

    • Lasso

    • ElasticNet

  • ์ถ”๊ฐ€์ ์ธ ์ ์šฉ๊ธฐ๋ฒ•

    • Feature Generation (PolynomialFeatures)

Last updated

Was this helpful?