๋๋ฌด ๋ฆ๊ฒ ์ฌ๋ ค ์ฃ์กํฉ๋๋ค์!!
๊ฐ์
์ด๋ฒ ํ๋ก์ ํธ์ ๋ํ ๊ฐ๋จํ ๊ฐ์๋ฅผ ์ค๋ช ํ์๋ฉด ๋ค์๊ณผ ๊ฐ๋ค.
์ฒ์ฒด ๋ฐ์ดํฐ์ธ ‘์ฌ๋ก ๋์งํธ ์ฒ์ฒด ๊ด์ธก(SDSS)’ ๋ฐ์ดํฐ๋ฅผ ํ์ฉํ์ฌ ์ธก์ ๋ 21๊ฐ์ ๋ฐ์ดํฐ๋ฅผ ์ด์ฉํ์ฌ ์ด๋ฏธ ์ ์๋ 19๊ฐ์ ์ฒ์ฒด ์ ํ์ ๋ถ๋ฅํ๋ ๋ํ์ด๋ค.
Data ํบ์๋ณด๊ธฐ
๋ํ์ ์ฌ๋ผ์จ ๋ฐ์ดํฐ์ ์ ์ดํด๋ดค์ ๋ ๋ฑ์ฅํ๋ ์ฒ์ฒด๋ค์ ์ข ๋ฅ์ ๋ํด ์ ๋ฆฌํ๋ฉด ๋ค์๊ณผ ๊ฐ๋ค.
โ๐ป ์ฒ์ฒด ์ข ๋ฅ
- QSO- ํ์ด์ฌ
- STAR_RED_DWARF - ์ ์์์ฑ
- STAR_BHB - ์ํ๊ฑฐ์ด์ฑ
- STAR_CATY_VAR - ๊ฒฉ๋ณ๋ณ๊ด์ฑ
- SERENDIP_RED, SERENDIP_BLUE, SERENDIP_DISTANT : ํญ์ฑ ๊ตฌ์ญ ์ธ๋ถ์ ๋์ธ ์ฒ์ฒด
- SERENDIPITY_FIRST : ์ฒซ๋ฒ์งธ ๊ด์ธก์์ ํ์ด์ฌ๋ก ๋ถ๋ฅ๋์์ง๋ง, ์ด์ด์ง ๊ด์ธก์์๋ ๋ ํ๋ฆฟํ ์ฒ์ฒด
- SERENDIPITY_MANUAL : ์๋์ผ๋ก ๊ด์ธก๋ ์ฒ์ฒด
- sky : ๋น ํ๋
- ROSAT_D : X-์ ํ์ฅ๋์์ ๊ด์ธกํ ์ฒ์ฒด์ด์ง๋ง, SDSS ๋ง์๊ฒฝ์์๋ ๊ด์ธก๋๋ ์ฒ์ฒด </aside>
๊ทธ๋ฆฌ๊ณ ๊ฐ ์ํ๋ฒณ(u, g, r, i, z)์ด ์กด์ฌํ๋ ์๋ฏธ๋ฅผ ์์๋ณธ ๊ฒฐ๊ณผ, ํ์ฅ๋๋ฅผ ์๋ฏธํ๋ฉฐ ๊ฐ๊ฐ ๋ค์๊ณผ ๊ฐ์ ์๋ฏธ๋ฅผ ๊ฐ์ง๊ณ ์๋ค.
u : Ultraviolet
g : Green
r : Red
i : Near Infrared
z : Infrared
EDA(Exploratory Data Analysis, ํ์์ ๋ฐ์ดํฐ ๋ถ์)
์๊ฐํ, ์์น
import pandas as pd
from sklearn.ensemble import RandomForestClassifier
- pd๋ผ๋ ์ด๋ฆ์ผ๋ก pandas ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ํฌํธํ๋ค.
- ์ฌ์ดํท๋ฐ์์ ์ ๊ณตํ๋ ์์๋ธ ๋ชจ๋์์ ๋๋คํฌ๋ ์คํธ ๋ถ๋ฅ ๋ชจ๋ธ์ ๋ถ๋ฌ์จ๋ค.
# matplotlib and seaborn for plottingimport matplotlib.pyplot as plt
%matplotlib inline
import seaborn as sns
import matplotlib.patches as patches
- matplot library์์ ํจ์์ ๋ชจ์(pyplot)์ plt ์ด๋ฆ์ผ๋ก ์ํฌํธ.
- matplotlib.pypot: ๋ช
๋ น์ด ์คํ์ผ๋ก ๋์ํ๋ ํจ์์ ๋ชจ์
- ๋ชจ๋์ ๊ฐ๊ฐ์ ํจ์๋ฅผ ์ฌ์ฉํด์ ๊ฐํธํ๊ฒ ๊ทธ๋ํ๋ฅผ ๋ง๋ค๊ณ ๋ณํ๋ฅผ ์ค ์ ์์
- ex. ๊ทธ๋ํ ์์ญ์ ๋ง๋ค๊ธฐ, ์ ํํ, ๋ ์ด๋ธ ๊พธ๋ฏธ๊ธฐ ๋ฑ
- ๋ชจ๋์ ๊ฐ๊ฐ์ ํจ์๋ฅผ ์ฌ์ฉํด์ ๊ฐํธํ๊ฒ ๊ทธ๋ํ๋ฅผ ๋ง๋ค๊ณ ๋ณํ๋ฅผ ์ค ์ ์์
- seaborn ํจํค์ง ์ถ๊ฐ
- seaborn: Matplotlib์ ๊ธฐ๋ฐ์ผ๋ก ๋ค์ํ ์์ ํ ๋ง์ ํต๊ณ์ฉ ์ฐจํธ ๋ฑ์ ๊ธฐ๋ฅ์ ์ถ๊ฐํ ์๊ฐํ ํจํค์ง
- matplot library์์ patches ์ถ๊ฐ
- matplotlib.patches: ๋ชจ๋ ์๊ฐํ ์์๋ค์ ๋ด๊ณ ์๋ Artist ์๋ธํด๋์ค ๋ฐ์ ์ํด ์๋ ํ๋ฉด์๊ณผ ํ ๋๋ฆฌ์์ ๋ํ๋ธ๋ค.
[Data size]
print('Size of train data', train.shape)
print('Size of test data', test.shape)
#์ถ๋ ฅ๊ฒฐ๊ณผ
Size of train data (199991, 22)
Size of test data (10009, 21)
๋จผ์ , train.shape์ ํตํด train.csv, tst.csv๋ฅผ ๋ค์ค์ธ๋ฑ์ฑ ํ ์๋ฃ์ shape์ ์ถ๋ ฅํ๋ค. ⇒ (ํ ๊ฐ์, ์ด ๊ฐ์) ๊ทธ๋ฆฌ๊ณ ์ถ๋ ฅ ๊ฒฐ๊ณผ train ๋ฐ์ดํฐ์ ์ 199991๊ฐ์ ํ๊ณผ 22๊ฐ์ ์ด๋ก ์ด๋ฃจ์ด์ ธ ์๊ณ , test ๋ฐ์ดํฐ์ ์ 10009๊ฐ์ ํ๊ณผ 21๊ฐ์ ์ด๋ก ์ด๋ฃจ์ด์ ธ ์๋ค.
์ฌ๊ธฐ์ shape ํจ์(pandas.Dataframe.shape)๊ฐ ํ๋ ์ญํ ์ ๋ฐ์ดํฐํ๋ ์์ ์ฐจ์์ ๋ํ๋ด๋ ํํ ๊ฐ์ ์๋ ค์ฃผ๋ ๊ฒ์ด๋ค.
[Data info]
train.info()
#์ถ๋ ฅ๊ฒฐ๊ณผ
<class 'pandas.core.frame.DataFrame'>
Int64Index: 199991 entries, 0 to 199990#์ธ๋ฑ์ค ๋ฒํธ๋ 0~9๊น์ง (#๋ถ๋ถ)
Data columns (total 22 columns):#๋ฐ์ดํฐ ์ด์ ์ด 22๊ฐ# Column Non-Null Count Dtype
--- ------ -------------- -----
0 type 199991 non-null object
1 fiberID 199991 non-null int64
2 psfMag_u 199991 non-null float64
3 psfMag_g 199991 non-null float64
4 psfMag_r 199991 non-null float64
5 psfMag_i 199991 non-null float64
6 psfMag_z 199991 non-null float64
7 fiberMag_u 199991 non-null float64
8 fiberMag_g 199991 non-null float64
9 fiberMag_r 199991 non-null float64
10 fiberMag_i 199991 non-null float64
11 fiberMag_z 199991 non-null float64
12 petroMag_u 199991 non-null float64
13 petroMag_g 199991 non-null float64
14 petroMag_r 199991 non-null float64
15 petroMag_i 199991 non-null float64
16 petroMag_z 199991 non-null float64
17 modelMag_u 199991 non-null float64
18 modelMag_g 199991 non-null float64
19 modelMag_r 199991 non-null float64
20 modelMag_i 199991 non-null float64
21 modelMag_z 199991 non-null float64
dtypes: float64(20), int64(1), object(1)#๋ฐ์ดํฐ ํ์
์ float64, int64, object
memory usage: 35.1+ MB
[Data describe]
train.describe()
train_desc_df = train.describe()
train_desc_df
id | fiberID | psfMag_u | psfMag_g | psfMag_r | psfMag_i | psfMag_z | fiberMag_u | fiberMag_g | fiberMag_r | ... | petroMag_u | petroMag_g | petroMag_r | petroMag_i | petroMag_z | modelMag_u | modelMag_g | modelMag_r | modelMag_i | modelMag_z |
count | 199991.00000 | 199991.000000 | 1.999910e+05 | 199991.000000 | 199991.000000 | 199991.000000 | 199991.000000 | 1.999910e+05 | 199991.000000 | 199991.000000 | ... | 199991.000000 | 199991.000000 | 199991.000000 | 199991.000000 | 199991.000000 | 199991.000000 | 199991.000000 | 199991.000000 | 199991.000000 |
mean | 99995.00000 | 360.830152 | -6.750146e+00 | 18.675373 | 18.401235 | 18.043495 | 17.663526 | 1.084986e+01 | 19.072693 | 19.134483 | ... | 21.837903 | 18.454136 | 18.481525 | 17.686617 | 17.699207 | 20.110991 | 18.544375 | 18.181544 | 17.692395 |
std | 57732.57318 | 225.305890 | 1.187678e+04 | 155.423024 | 127.128078 | 116.622194 | 123.735298 | 4.172116e+03 | 749.256162 | 90.049058 | ... | 789.472333 | 154.376277 | 97.240448 | 145.730872 | 142.691880 | 122.299062 | 161.728183 | 133.984475 | 131.183416 |
min | 0.00000 | 1.000000 | -5.310802e+06 | -40022.466071 | -27184.795793 | -26566.310827 | -24878.828280 | -1.864766e+06 | -215882.917191 | -21802.656144 | ... | -24463.431833 | -25958.752324 | -23948.588523 | -40438.184078 | -30070.729379 | -26236.578659 | -36902.402336 | -36439.638493 | -38969.416822 |
25% | 49997.50000 | 174.000000 | 1.965259e+01 | 18.701180 | 18.048572 | 17.747663 | 17.425523 | 1.994040e+01 | 18.902851 | 18.259352 | ... | 19.247795 | 18.113933 | 17.479794 | 17.050294 | 16.804705 | 19.266214 | 18.076120 | 17.423425 | 16.977671 |
50% | 99995.00000 | 349.000000 | 2.087136e+01 | 19.904235 | 19.454492 | 19.043895 | 18.611799 | 2.104910e+01 | 20.069038 | 19.631419 | ... | 20.366848 | 19.586559 | 19.182789 | 18.693370 | 18.174592 | 20.406840 | 19.547674 | 19.143156 | 18.641756 |
75% | 149992.50000 | 526.000000 | 2.216043e+01 | 21.150297 | 20.515936 | 20.073528 | 19.883760 | 2.233754e+01 | 21.385830 | 20.773911 | ... | 21.797480 | 21.004397 | 20.457491 | 20.019112 | 19.807652 | 21.992898 | 20.962386 | 20.408140 | 19.968846 |
max | 199990.00000 | 1000.000000 | 1.877392e+04 | 3538.984910 | 3048.110913 | 4835.218639 | 9823.740407 | 4.870154e+03 | 248077.513380 | 12084.735440 | ... | 298771.019041 | 12139.815877 | 7003.136546 | 9772.190537 | 17403.789263 | 14488.251976 | 10582.058590 | 12237.951703 | 4062.499371 |
8 rows × 22 columns
Dataframe.describe(): descriptive ํต๊ณ๋ฅผ ์์ฑํ๋ ํจ์์ด๋ฉฐ ๊ธฐ๋ณธ ํํ๋ ๋ค์๊ณผ ๊ฐ๋ค.
DataFrame.describe(percentiles=None, include=None, exclude=None)
NaN ๊ฐ์ ์ ์ธํ ๋ฐ์ดํฐ ์ธํธ ๋ถํฌ์ ์ค์ฌ ๊ฒฝํฅ, ๋ถ์ฐ ๋ฐ ๋ชจ์์ ์์ฝํ๋ฉฐ, ์์ฝ ํต๊ณ๋์ ๋ฐํํ๋ค.
[Data head]
train.head()
id | type | fiberID | psfMag_u | psfMag_g | psfMag_r | psfMag_i | psfMag_z | fiberMag_u | fiberMag_g | ... | petroMag_u | petroMag_g | petroMag_r | petroMag_i | petroMag_z | modelMag_u | modelMag_g | modelMag_r | modelMag_i | modelMag_z |
0 | 0 | QSO | 601 | 23.198224 | 21.431953 | 21.314148 | 21.176553 | 21.171444 | 22.581309 | 21.644453 | ... | 22.504317 | 21.431636 | 21.478312 | 21.145409 | 20.422446 | 22.749241 | 21.465534 | 21.364187 | 21.020605 |
1 | 1 | QSO | 788 | 21.431355 | 20.708104 | 20.678850 | 20.703420 | 20.473229 | 21.868797 | 21.029773 | ... | 21.360701 | 20.778968 | 20.889705 | 20.639812 | 20.646660 | 21.492955 | 20.758527 | 20.753925 | 20.693389 |
2 | 2 | QSO | 427 | 17.851451 | 16.727898 | 16.679677 | 16.694640 | 16.641788 | 18.171890 | 17.033098 | ... | 17.867253 | 16.738784 | 16.688874 | 16.744210 | 16.808006 | 17.818063 | 16.697434 | 16.641249 | 16.660177 |
3 | 3 | QSO | 864 | 20.789900 | 20.040371 | 19.926909 | 19.843840 | 19.463270 | 21.039030 | 20.317165 | ... | 20.433907 | 19.993727 | 19.985531 | 19.750917 | 19.455117 | 20.770711 | 20.001699 | 19.889798 | 19.758113 |
4 | 4 | STAR_RED_DWARF | 612 | 26.454969 | 23.058767 | 21.471406 | 19.504961 | 18.389096 | 25.700632 | 23.629122 | ... | 25.859229 | 22.426929 | 21.673551 | 19.610012 | 18.376141 | 24.877052 | 23.147993 | 21.475342 | 19.487330 |
5 rows × 23 columns
Dataframe.head(): ์ฒซ ๋ฒ์งธ n๊ฐ์ ํ๋ค์ ๋ฐํํ๋ ํจ์์ด๋ค.
[Data Correlation]
# ์ ์ฒด ๋ฐ์ดํฐ์ ๋ํ ์๊ด๊ด๊ณ HeatMap ์๊ฐํcorr = train.corr()
cmap = sns.color_palette("Blues")
f, ax = plt.subplots(figsize=(10, 7))
sns.heatmap(corr, cmap=cmap)
<matplotlib.axes._subplots.AxesSubplot at 0x1a31854390>
Dataframe.corr()์ ํด๋น ๋ฐ์ดํฐ์ ์ ๋ํ ์๊ด๊ด๊ณ๋ฅผ ๋ํ๋ด๋ ํจ์์ด๋ค.
[Data type]
# Log_IDfig = plt.figure(figsize=(18,9))
plt.subplots_adjust(hspace=.5)
plt.subplot2grid((3,3), (0,0), colspan = 3)
train['type'].value_counts()[:100].plot(kind='bar', alpha=0.7)
plt.title('type Values in the Training Set - train ()')
Text(0.5, 1.0, 'type Values in the Training Set - train ()')
train['type'].value_counts()
QSO 49680
GALAXY 37347
SERENDIPITY_BLUE 21760
SPECTROPHOTO_STD 14630
REDDEN_STD 14618
STAR_RED_DWARF 13750
STAR_BHB 13500
SERENDIPITY_FIRST 7132
ROSAT_D 6580
STAR_CATY_VAR 6506
SERENDIPITY_DISTANT 4654
STAR_CARBON 3257
SERENDIPITY_RED 2562
STAR_WHITE_DWARF 2160
STAR_SUB_DWARF 1154
STAR_BROWN_DWARF 500
SKY 127
SERENDIPITY_MANUAL 61
STAR_PN 13
Name: type, dtype: int64
๊ฒฐ๊ณผ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ํ์ ํ ์ ์ QSO์ ๊ฐ์๊ฐ ์๋์ ์ผ๋ก ๋ง๋ค๋ ๊ฒ์ด๋ค.
๋ชจ๋ธ๋ง
from sklearn.ensemble import RandomForestClassifier
from sklearn.ensemble import BaggingClassifier
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score
import pandas as pd
import warnings
warnings.filterwarnings('ignore')
# Random Forest ๋ชจ๋ธ ๊ฐ์ ธ์ค๊ธฐ
rf_clf = RandomForestClassifier()
bag_clf = BaggingClassifier(rf_clf)
# training dataset ๋ถ๋ฌ์ค๊ธฐ
train_data = pd.read_csv("drive/MyDrive/Colab Notebooks/train.csv")
# ๋ง์ถฐ์ผ ํ๋ ๊ฒ์ type์ด๊ธฐ ๋๋ฌธ์ type๊ณผ ๋๋จธ์ง ๋ฐ์ดํฐ๋ค์ ๋ถ๋ฆฌํด์ค (์ฌ๋ผ์ด์ฑ)
X = train_data.iloc[:, 2:]
y = train_data.iloc[:, 1]#type ์ด# training dataset๊ณผ test dataset์ผ๋ก ์ชผ๊ฐ๊ธฐ# training๊ณผ test์ ๋น์จ์ 0.3 [7:3์ผ๋ก ์ชผ๊ฐ ๋ค]
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=11)
# ๋๋ค ํฌ๋ ์คํธ ํ์ต ๋ฐ ๋ณ๋์ ํ
์คํธ ์ธํธ๋ก ์์ธก ์ฑ๋ฅ ํ๊ฐ
rf_flf = RandomForestClassifier(criterion='entropy', bootstrap=True, random_state=42, max_depth=5)
rf_clf.fit(X_train, y_train)
pred = rf_clf.predict(X_test)
accuracy = accuracy_score(y_test, pred)
print('๋๋ค ํฌ๋ ์คํธ ์ ํ๋: {0:.4f}'.format(accuracy))
์ธ์ฌ์ดํธ ๋์ถ
๋ฐ์ดํฐ๋์ ์ดํด ๋ดค์ ๋ QSO๊ฐ ๊ฐ์ฅ ๋ง๊ณ , ์ด๋ค ๋ฐ์ดํฐ๋ค์ ๊ทน์๋๋ง ์กด์ฌํ๊ธฐ๋ ํ๋ค.
๊ทธ๋ฐ๋ฐ ๋ฐ์ดํฐ ๊ฐ ๊ด๋ จ์ฑ์ ์ด๋ป๊ฒ ์ฐพ์์ผ ํ ๊น?
๊ทธ ์ธ (์ฑ์ฐฐ, ๋๋ฉ์ธ ์ง์ ๋ฑ)
์ด๋ค ๋ฐฉํฅ์ผ๋ก ์ฝ๋๋ฅผ ์์ฑํ๊ณ ์ถ์์ง, ์ด๋ค ๊ฒฐ๊ณผ๋ฅผ ๋์ถํ๊ณ ์ถ์์ง ๋ช ํํ์ง ์์ ์ ๋ฐ์ ์ผ๋ก EDA ๋ฐ ๋ชจ๋ธ๋ง์ ์คํํ๋ ๊ณผ์ ์์ ํ์ ์ด ์์๋ค. ์์น์ ์ธ ๊ฒฐ๊ณผ๋ ๋ํ๊ฐ ๊ฒฐ๊ณผ๋ก ๋์ค๊ธฐ๋ ํ์ง๋ง ์ด๋ฅผ ํตํด ์ด๋ป๊ฒ ์๋ฏธ์๋ ๊ฒฐ๊ณผ๋ฅผ ์ฐพ์๋ผ ์ ์์์ง ์์ง ๊ฐ์ด ์กํ์ง ์๋๋ค. ๊ฐ์๊ฐ ๋ ๊ธฐ๋ถ์ด๊ณ ๋๋ฌผ์ด ๋๋ค.
ํ์ง๋ง ๋งค๋ฒ ์ด ์ฒ์ฒด ์ ํ์ ๋ถ๋ฅํ๊ธฐ ์ํ ๋ชจ๋ธ์ ๋๋ฆด ๋๋ง๋ค ๋ฐ๋์ ์ ๋ณตํด๋ฒ๋ฆฌ๊ณ ๋ง๊ฒ ๋ค๋ ์๊ฐ์ผ๋ก ๋ง๋ฌด๋ฆฌ๋๋ ๊ฑด ๋งคํ๊ฐ์ง์ธ ๊ฒ ๊ฐ๋ค. ์๋ ๋ด์ฉ์ ์กฐ์ฌํ๋ ๊ธฐ๋ณธ ์ง์๋ค์ด๋ค.
๋๋ฉ์ธ ์๋ฃ์กฐ์ฌ
- ํญ์ฑ๋ถ๋ฅ (์ถ์ฒ: ๐LINK)⇒ ์ฃผ๋ก ํ๋ฉด์จ๋์ ๋ถ๊ดํ์ ํน์ง ๋ ๊ฐ์ง์ ์ํด ํญ์ฑ์ ๋ถ๋ฅํ๋ค.: ํญ์ฑ๋ค์ ํน์ ๊ธฐ์ค์ ๋ฐ๋ผ ๊ตฌ๋ณํ๋ ๊ฒ
- ํญ์ฑ๋ถ๊ดํ์ ๋ฐ์ ์ผ๋ก ํก์์ ์ ์์์ ๋ฐ๋ผ ๊ฑฐ๋ฆฌ์ ๊ด๊ณ์์ด ํญ์ฑ์ ๋ถ๋ฅํ๋ ๊ฒ์ด ๊ฐ๋ฅํด์ก๋ค.
- QSO ํ์ด์ฌ (์ถ์ฒ: Link): ์ผ๋ฐ์ ์ธ ์ํ๋ณด๋ค๋ ํจ์ฌ ๋ฐ์ ํ๋์ ๋ณด์ด๋ ํ๋์ํํต์ ํ ์ข
๋ฅ
- ์ด๋์ง๋ ๋ธ๋ํ ์ฒ์ฒด์ด๋ฉฐ, ์ง๊ตฌ๋ก๋ถํฐ ๋๋ฌด ๋ฉ์ด ๊ด์ธก์ด ์ฝ์ง ์์
- ํ์ด์ฌ์ ๊ด๋๊ณก์ ์ ์ฌ๊ตฌ์ฑํ์ฌ ์ค๋ ฅ๋ ์ฆ ํ์์ ๊ฒช์ ํ์ด์ฌ๋ฅผ ์ฐพ์๋ด๋ ๊ฒ์ด ๊ด์ธก๋ฐฉ๋ฒ
- SDSS(Sloan Digital Sky Survey) (์ถ์ฒ: Link)
- ๋๊ท๋ชจ ๋ค์ค ๋ถ๊ด ์์ํ ๋ฐ ๋ถ๊ดํ์ ์ ์ํธ์ด ํ์ฌ ๊ณํ
- ํน๋ณํ ์ฒ์ฒด๋ฅผ ์ง๋ชฉํ์ง์๊ณ ์ต๋ํ ๋์ ํ๋ ์์ญ์ ๋ฐ์ดํฐ๋ฅผ ์ป์ด๋ด๋ ๋ฐฉ์
- ์ฝ 5์ต ๊ฐ์ ์ฒ์ฒด์ ๋ํ ์ธก๊ด ์๋ฃ์ 300๋ง ๊ฐ ์ด์์ ์ฒ์ฒด์ ์คํํธ๋ผ์ ์์งํจ
- ์ฃผ์ ์ํ ํ๋ณธ์ ์ ์ํธ์ด ์ค๊ฐ๊ฐ์ด z = 0.1
- ๋ฐ์ ์ ์ ์ํ์ ๋ํ์ฌ ์ ์ํธ์ด z = 0.7
- ํ์ด์ฌ์ ๋ํ์ฌ ์ ์ํธ์ด z = 5
- ๊ด์ธก
- ์ ์ฉ์ผ๋ก ๊ตฌ๋น๋ 2.5 m ๊ด๊ฐ ๊ดํ๋ง์๊ฒฝ์ ์ฌ์ฉํ๊ณ ์์
- ํํฐ ๋ค์ฏ๊ฐ(u, g, r, i, z)๋ก ๊ตฌ์ฑ๋ ์ธก๊ด๊ณ๋ฅผ ์ฌ์ฉํ์ฌ ์ดฌ์๋จ
- ์ด ์ฌ์ง๋ค์ ์ ์ ํน์ ์ํ์ ๊ฐ์ด ํผ์ง์์ผ๋ก ๋ณด์ด๋์ง, CCD๊ฐ ๊ฒ์ถํ๋ ๋ฐ๊ธฐ๊ฐ ์ด๋ค ๋ฐฉ์์ผ๋ก ์ฌ๋ฌ ์ข ๋ฅ์ ๋ฐ๊ธฐ ๋ฑ๊ธ๊ณผ ์ฐ๊ด๋๋๊ฐ์ ๋ฐ๋ฅธ ๋ค์ํ parameter๋ค์ ๋ชฉ๋ก ์์ฑ์๋ ์ฐ์ธ๋ค๊ณ ํ๋ค.
- ๊ฐ ๊ดํ ํํฐ๋ ์์์ ๋ฐ๋ผ ํ๊ท ์ฌ๊ณผ ํ์ฅ์ด 355.1, 468.6, 616.5, 748.1, 893.1 nm
- ๋ถ๊ด์นด๋ฉ๋ผ๋ ์๋ฃจ๋ฏธ๋ํ์ ๋ซ๋ ค ์๋ ๊ตฌ๋ฉ์ ํตํด ๋ณด์ด๋ ๊ฐ ํ์ ์ ๊ด์ฌ์ ๋ฅผ ๊ณต๊ธํ์ฌ ์๋
์๋ฃ์กฐ์ฌ_๋ถ๋ฅ ๊ธฐ๋ฒ
- ์ง๋ํ์ต์ ๋ํ์ ์ธ ์ ํ
- ์ง๋ํ์ต: ๋ช ์์ ์ธ ์ ๋ต์ด ์๋ ๋ฐ์ดํฐ๊ฐ ์ฃผ์ด์ง ์ํ์์ ํ์ตํ๋ ๋จธ์ ๋ฌ๋ ๋ฐฉ์
- ํ์ต ๋ฐ์ดํฐ๋ก ์ฃผ์ด์ง ๋ฐ์ดํฐ์ ํผ์ฒ์ ๋ ์ด๋ธ๊ฐ(๊ฒฐ์ ๊ฐ, ํด๋์ค ๊ฐ)์ ๋จธ์ ๋ฌ๋ ์๊ณ ๋ฆฌ์ฆ์ผ๋ก ํ์ตํด ๋ชจ๋ธ ์์ฑ
- ์์ฑ๋ ๋ชจ๋ธ์ ์๋ก์ด ๋ฐ์ดํฐ ๊ฐ์ด ์ฃผ์ด์ก์ ๋ ๋ฏธ์ง์ ๋ ์ด๋ธ ๊ฐ์ ์์ธกํ๋ ๊ฒ⇒ ๊ธฐ์กด ๋ฐ์ดํฐ๊ฐ ์ด๋ค ๋ ์ด๋ธ์ ์ํ๋์ง ํจํด์ ์๊ณ ๋ฆฌ์ฆ์ผ๋ก ์ธ์งํ ๋ค, ์๋กญ๊ฒ ๊ด์ธก๋ ๋ฐ์ดํฐ์ ๋ํ ๋ ์ด๋ธ์ ํ๋ณํ๋ ๊ฒ.
- ์ถ๋ ฅํ๊ณ ์ ํ๋ ๊ฐ์ด ์นดํ ๊ณ ๋ฆฌ๊ฐ(์ด์ฐํ)์ธ ๊ฒฝ์ฐ
- ๋
๋ฆฝ๋ณ์๊ฐ์ด ์ฃผ์ด์ก์ ๋ ๊ทธ ๊ฐ๊ณผ ๊ฐ์ฅ ์ฐ๊ด์ฑ์ด ํฐ ์ข
์๋ณ์๊ฐ(ํด๋์ค)์ ์์ธกํ๋ ๋ฌธ์
- ์ฆ, ์ด๋ค ํ๋ณธ์ ๋ํ ๋ฐ์ดํฐ๊ฐ ์ฃผ์ด์ก์ ๋ ๊ทธ ํ๋ณธ์ด ์ด๋ค ์นดํ
๊ณ ๋ฆฌ ํน์ ํด๋์ค์ ์ํ๋์ง
- ex. ์ด๋ฏธ์ง๋ฅผ ์ปดํจํฐ์ ์ ๋ ฅํ์ ๋ “๊ฐ”์ธ์ง “๊ณ ์์ด”์ธ์ง ํ๋ณํ๋ ๋ฌธ์
- ์ฆ, ์ด๋ค ํ๋ณธ์ ๋ํ ๋ฐ์ดํฐ๊ฐ ์ฃผ์ด์ก์ ๋ ๊ทธ ํ๋ณธ์ด ์ด๋ค ์นดํ
๊ณ ๋ฆฌ ํน์ ํด๋์ค์ ์ํ๋์ง
[๊ฒฐ์ ํธ๋ฆฌ Decision Tree]
: ๋ฐ์ดํฐ์ ์๋ ๊ท์น์ ํ์ต์ ํตํด ์๋์ผ๋ก ์ฐพ์๋ด ํธ๋ฆฌ ๊ธฐ๋ฐ์ผ๋ก ๋ถ๋ฅ ๊ท์น์ ๋ง๋๋ ๊ฒ.
- ML ์๊ณ ๋ฆฌ์ฆ ์ค ์ง๊ด์ ์ผ๋ก ์ดํดํ๊ธฐ ์ฌ์ด ์๊ณ ๋ฆฌ์ฆ
- ๋ฐ์ดํฐ์ ์ด๋ค ๊ธฐ์ค์ ๋ฐํ์ผ๋ก ๊ท์น์ ๋ง๋ค์ด์ผ ๊ฐ์ฅ ํจ์จ์ ์ธ ๋ถ๋ฅ๊ฐ ๋ ๊ฒ์ธ์ง๊ฐ ๊ด๊ฑด
- ๊ท์น ๋ ธ๋(Decision Node)์์ ๊ท์น์ ๋ฐ๋ผ ๋ถํ ๋จ. ๊ท์น ์กฐ๊ฑด์ ๋ํ๋
- ์๋ธ ํธ๋ฆฌ(Sub Tree)๋ ์๋ก์ด ๊ท์น ์กฐ๊ฑด๋ง๋ค ์์ฑ๋จ.
- ๊ณ์๋๋ ๊ท์น์ ๋ฐ๋ผ ๋ ธ๋๊ฐ ๋ถํ ๋๋ฉฐ ์ต์ข ์ ์ผ๋ก ๋ฆฌํ ๋ ธ๋(Leaf Node)์์๋ ๊ฒฐ์ ๋ ํด๋์ค ๊ฐ์ ๊ฐ์ง๊ฒ ๋จ
- ๊ฒฐ์ ํธ๋ฆฌ๋ฅผ ๊ตฌ์ฑํ ๋ ํ์ชฝ์ผ๋ก ์น์ฐ์น์ง ์๊ฒ ์ ์ ํ ๋ถํ ํด์ผ ํ๋ฉฐ ๊ฐ์ง์น๊ธฐ๋ฅผ ํตํด ๊ด๋ จ์ฑ์ด ์ ์ ์๋ธ ํธ๋ฆฌ๋ฅผ ์ ๊ฑฐ or ํธ๋ฆฌ์ ๊น์ด์ ์ ํ์ ๋๋ ๋ฑ์ ๋ฐฉ์์ผ๋ก ๊ณผ์ ํฉ์ด ์ผ์ด๋์ง ์์ ์ ์ ํ ํธ๋ฆฌ ๋ง๋ค์ด์ผ ํจ
- ๋ง์ ๊ท์น์ด ์๋ค๋ ๊ฒ = ๋ถ๋ฅ๋ฅผ ๊ฒฐ์ ํ๋ ๋ฐฉ์์ด ๋์ฑ ๋ณต์กํด์ง⇒ ํธ๋ฆฌ์ ๊น์ด๊ฐ ๊น์ด์ง์๋ก ๊ฒฐ์ ํธ๋ฆฌ์ ์์ธก ์ฑ๋ฅ์ด ์ ํ๋ ๊ฐ๋ฅ์ฑ์ด ๋์
- ํธ๋ฆฌ๋ฅผ ํจ์จ์ ์ผ๋ก ๋ถํ ํ๊ธฐ ์ํด ์ต๋ํ ๊ท ์ผํ ๋ฐ์ดํฐ ์ธํธ๋ฅผ ๊ตฌ์ฑํ๋ ๊ฒ์ด ์ค์
- ๊ท ์ผ๋ ์ธก์ ๋ฐฉ๋ฒ
- ์ ๋ณด ์ด๋: ์ํธ๋กํผ(์ฃผ์ด์ง ๋ฐ์ดํฐ ์งํฉ์ ํผ์ก๋) ๊ฐ๋
๊ธฐ๋ฐ. ์๋ก ๋ค๋ฅธ ๊ฐ์ด ์์ฌ ์์ผ๋ฉด ๋๊ณ , ๊ฐ์ ๊ฐ์ด ์์ฌ ์์ผ๋ฉด ๋ฎ์.
- ์ ๋ณด ์ด๋์ด ๋์ ์์ฑ์ ๊ธฐ์ค์ผ๋ก ๋ถํ
- ์ ๋ณด ์ด๋ ์ง์ = 1-์ํธ๋กํผ ์ง์
- ์ง๋ ๊ณ์: 0์ด ๊ฐ์ฅ ํ๋ฑํ๋ฉฐ 1๋ก ๊ฐ์๋ก ๋ถํ๋ฑ. ๋ฐ์ดํฐ๊ฐ ๋ค์ํ ๊ฐ์ ๊ฐ์ง์๋ก ํ๋ฑ, ํน์ ๊ฐ์ผ๋ก ์ ๋ฆด ๋๋ ๋ถํ๋ฑํ ๊ฐ.
- ๋ค์์ฑ์ด ๋ฎ์์๋ก ๊ท ์ผ๋๊ฐ ๋๋ค๋ ์๋ฏธ์ด๋ฏ๋ก 1๋ก ๊ฐ์๋ก ๊ท ์ผ๋๊ฐ ๋์ผ๋ฉฐ, ์ง๋ ๊ณ์๊ฐ ๋์ ์์ฑ์ ๊ธฐ์ค์ผ๋ก ๋ถํ
- ์ ๋ณด ์ด๋: ์ํธ๋กํผ(์ฃผ์ด์ง ๋ฐ์ดํฐ ์งํฉ์ ํผ์ก๋) ๊ฐ๋
๊ธฐ๋ฐ. ์๋ก ๋ค๋ฅธ ๊ฐ์ด ์์ฌ ์์ผ๋ฉด ๋๊ณ , ๊ฐ์ ๊ฐ์ด ์์ฌ ์์ผ๋ฉด ๋ฎ์.
- ๊ท ์ผ๋ ์ธก์ ๋ฐฉ๋ฒ
[์์๋ธ ํ์ต Ensemble Learning]
: ์ฌ๋ฌ ๊ฐ์ ๋ถ๋ฅ๊ธฐ(Classifier)๋ฅผ ์์ฑํ๊ณ ๊ทธ ์์ธก์ ๊ฒฐํฉํจ์ผ๋ก์จ ๋ณด๋ค ์ ํํ ์ต์ข ์์ธก์ ๋์ถํ๋ ๊ธฐ๋ฒ
- ๋ชฉํ: ๋ค์ํ ๋ถ๋ฅ๊ธฐ์ ์์ธก ๊ฒฐ๊ณผ๋ฅผ ๊ฒฐํฉํจ์ผ๋ก์จ ๋จ์ผ ๋ถ๋ฅ๊ธฐ๋ณด๋ค ์ ๋ขฐ์ฑ์ด ๋์ ์์ธก๊ฐ์ ์ป๋ ๊ฒ (์ง๋จ์ง์ฑ ๋๋)
- ๋๋ถ๋ถ์ ์ ํ ๋ฐ์ดํฐ๋ฅผ ๋ถ๋ฅํด ๋ผ ๋ ๋ฐ์ด๋ ํจ๊ณผ๋ฅผ ๋ํ๋
- ํ์ต ์ ํ
- Voting: ํ๋์ ๋ฐ์ดํฐ ์
์์ ๋ค์ํ ์๊ณ ๋ฆฌ์ฆ์ ๋ถ๋ฅ๊ธฐ๋ฅผ ์ฌ์ฉํด ์์ธกํ ๊ฐ์ ๊ฒฐํฉํ๋ ๋ฐฉ์
- ์ฌ๋ฌ ๊ฐ์ ๋ถ๋ฅ๊ธฐ๊ฐ ํฌํ๋ฅผ ํตํด ์ต์ข ์์ธก ๊ฒฐ๊ณผ๋ฅผ ๊ฒฐ์ ํ๋ ๋ฐฉ์ - ์๋ก ๋ค๋ฅธ ์๊ณ ๋ฆฌ์ฆ์ ๊ฐ์ง ๋ถ๋ฅ๊ธฐ์ ๊ฒฐํฉ
- Bagging: ํ ๊ฐ์ง์ ์๊ณ ๋ฆฌ์ฆ ๋ถ๋ฅ๊ธฐ๋ฅผ ํตํด ๋ค์ํ ๋ฐ์ดํฐ ์
๊ฐ๊ฐ์ ํ์ต์์ผ ์์ธกํ ๊ฐ์ ๊ฒฐํฉ
- ์ฌ๋ฌ ๊ฐ์ ๋ถ๋ฅ๊ธฐ๊ฐ ํฌํ๋ฅผ ํตํด ์ต์ข
์์ธก ๊ฒฐ๊ณผ๋ฅผ ๊ฒฐ์ ํ๋ ๋ฐฉ์ - ๊ฐ๊ฐ์ ๋ถ๋ฅ๊ธฐ๊ฐ ๋ชจ๋ ๊ฐ์ ์ ํ์ ์๊ณ ๋ฆฌ์ฆ ๊ธฐ๋ฐ. ๋ฐ์ดํฐ ์ํ๋ง์ ์๋ก ๋ค๋ฅด๊ฒ ํ๋ฉด์ ๋ณดํ
์ํ.
- ex) ๋๋ค ํฌ๋ ์คํธ ์๊ณ ๋ฆฌ์ฆ
- ๋๋ถ๋ถ ๊ฒฐ์ ํธ๋ฆฌ ์๊ณ ๋ฆฌ์ฆ์ ๊ธฐ๋ฐ์ผ๋ก ํจ
- ์ฌ๋ฌ ๊ฐ์ ๋ถ๋ฅ๊ธฐ๊ฐ ํฌํ๋ฅผ ํตํด ์ต์ข
์์ธก ๊ฒฐ๊ณผ๋ฅผ ๊ฒฐ์ ํ๋ ๋ฐฉ์ - ๊ฐ๊ฐ์ ๋ถ๋ฅ๊ธฐ๊ฐ ๋ชจ๋ ๊ฐ์ ์ ํ์ ์๊ณ ๋ฆฌ์ฆ ๊ธฐ๋ฐ. ๋ฐ์ดํฐ ์ํ๋ง์ ์๋ก ๋ค๋ฅด๊ฒ ํ๋ฉด์ ๋ณดํ
์ํ.
- Boosting: ์ฌ๋ฌ ๊ฐ์ ๋ถ๋ฅ๊ธฐ๋ฅผ ํ์ตํ๋ฉด์ ์์ ์์ธก์ ์งํํ ๋ถ๋ฅ๊ธฐ๊ฐ ์์ธก์ ํ๋ฆฐ ๋ฐ์ดํฐ์ ๋ํด ๊ฐ์ค์น(weight)๋ฅผ ๋ถ์ฌํ์ฌ ๋ค์ ๋ถ๋ฅ๊ธฐ์ ํ์ต์ ์งํํ๋ ๋ฐฉ์
- XGBoost(eXtra Gradient Boost), LightGBM(Light Gradient Boost), ๊ทธ๋๋์ธํธ ๋ถ์คํธ
- ๋๋ถ๋ถ ๊ฒฐ์ ํธ๋ฆฌ ์๊ณ ๋ฆฌ์ฆ์ ๊ธฐ๋ฐ์ผ๋ก ํจ
- Stacking: ๋ฏธ๋ฆฌ ๋ค๋ฅธ ์๊ณ ๋ฆฌ์ฆ ๋ถ๋ฅ๊ธฐ๋ก๋ก ํ์ตํ ์์ธก ๊ฐ์ ๋ค์ ํ์ต์ฉ ๋ฐ์ดํฐ๋ก ๋ง๋ค์ด ๋ค๋ฅธ ๋ถ๋ฅ๊ธฐ์ ์ฌ ํ์ต์ํค๋ ๋ฐฉ์
- ๋ฐฐ๊น ๋ฐ ๋ถ์คํ ๊ณผ์ ๊ณตํต์ - ๊ฐ๋ณ์ ์ธ ์ฌ๋ฌ ์๊ณ ๋ฆฌ์ฆ์ ์๋ก ๊ฒฐํฉํด ์์ธก ๊ฒฐ๊ณผ ๋์ถ
- ์ฐจ์ด์ - ๊ฐ๋ณ ์๊ณ ๋ฆฌ์ฆ์ผ๋ก ์์ธกํ ๋ฐ์ดํฐ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ๋ค์ ์์ธก ์ํ
- Voting: ํ๋์ ๋ฐ์ดํฐ ์
์์ ๋ค์ํ ์๊ณ ๋ฆฌ์ฆ์ ๋ถ๋ฅ๊ธฐ๋ฅผ ์ฌ์ฉํด ์์ธกํ ๊ฐ์ ๊ฒฐํฉํ๋ ๋ฐฉ์
์ฐธ๊ณ ๋ฌธํ:
[๋ฐ์ด์ฝ๋ต๋ณ์์ฒญ]๋ฐ์ดํฐ ๋ผ๋ฒจ์๋ํ ์ถ๊ฐ์ค๋ช ๋ถํ๋๋ฆฝ๋๋ค.
์ฑ [ํ์ด์ฌ ๋จธ์ ๋ฌ๋ ์๋ฒฝ ๊ฐ์ด๋]
https://dacon.io/en/codeshare/663?page&dtype=vote&ptype&fType
'๐ก WIDA > DACON ๋ถ๋ฅ-ํ๊ท' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[DACON/์ต๋ค์] ์ฒ์ฒด ๋ถ๋ฅ ๊ฒฝ์ง๋ํ ๋๋ฉ์ธ ๋ ๋ฏ์ด๋ณด๊ธฐ: modelMag (0) | 2023.05.26 |
---|---|
[DACON/์กฐ์์] ์ฒ์ฒด ๋ถ๋ฅ ๊ฒฝ์ง๋ํ ๋๋ฉ์ธ ๋ ๋ฏ์ด๋ณด๊ธฐ: Type (1) | 2023.05.26 |
[DACON/์กฐ์์] ์ฒ์ฒด ๋ถ๋ฅ ๊ฒฝ์ง๋ํ (4) | 2023.05.06 |
[DACON/์ต๋ค์] ํ๋ก์ ํธ ์์ธ์ด (5) | 2023.05.05 |
[DACON/๊น๊ฒฝ์] ํ๋ก์ ํธ ์์ธ์ด (4) | 2023.05.05 |