๐Ÿ’ก WIDA/DACON ๋ถ„๋ฅ˜-ํšŒ๊ท€

[DACON/๊น€๋ฏผํ˜œ] ์ฒœ์ฒด ๋ถ„๋ฅ˜ ๊ฒฝ์ง„๋Œ€ํšŒ

์•Œ ์ˆ˜ ์—†๋Š” ์‚ฌ์šฉ์ž 2023. 5. 6. 15:07

๋„ˆ๋ฌด ๋Šฆ๊ฒŒ ์˜ฌ๋ ค ์ฃ„์†กํ•ฉ๋‹ˆ๋‹ค์•„!!

 

๊ฐœ์š”

์ด๋ฒˆ ํ”„๋กœ์ ํŠธ์— ๋Œ€ํ•œ ๊ฐ„๋‹จํ•œ ๊ฐœ์š”๋ฅผ ์„ค๋ช…ํ•˜์ž๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

์ฒœ์ฒด ๋ฐ์ดํ„ฐ์ธ ‘์Šฌ๋ก  ๋””์ง€ํ„ธ ์ฒœ์ฒด ๊ด€์ธก(SDSS)’ ๋ฐ์ดํ„ฐ๋ฅผ ํ™œ์šฉํ•˜์—ฌ ์ธก์ •๋œ 21๊ฐœ์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ด์šฉํ•˜์—ฌ ์ด๋ฏธ ์ •์˜๋œ 19๊ฐœ์˜ ์ฒœ์ฒด ์œ ํ˜•์„ ๋ถ„๋ฅ˜ํ•˜๋Š” ๋Œ€ํšŒ์ด๋‹ค.

Data ํ†บ์•„๋ณด๊ธฐ

๋Œ€ํšŒ์— ์˜ฌ๋ผ์˜จ ๋ฐ์ดํ„ฐ์…‹์„ ์‚ดํŽด๋ดค์„ ๋•Œ ๋“ฑ์žฅํ•˜๋Š” ์ฒœ์ฒด๋“ค์˜ ์ข…๋ฅ˜์— ๋Œ€ํ•ด ์ •๋ฆฌํ•˜๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

๋”๋ณด๊ธฐ

โ˜๐Ÿป ์ฒœ์ฒด ์ข…๋ฅ˜

  1. QSO- ํ€˜์ด์‚ฌ
  2. STAR_RED_DWARF - ์ ์ƒ‰์™œ์„ฑ
  3. STAR_BHB - ์ˆ˜ํ‰๊ฑฐ์—ด์„ฑ
  4. STAR_CATY_VAR - ๊ฒฉ๋ณ€๋ณ€๊ด‘์„ฑ
  5. SERENDIP_RED, SERENDIP_BLUE, SERENDIP_DISTANT : ํ•ญ์„ฑ ๊ตฌ์—ญ ์™ธ๋ถ€์— ๋†“์ธ ์ฒœ์ฒด
  6. SERENDIPITY_FIRST : ์ฒซ๋ฒˆ์งธ ๊ด€์ธก์—์„œ ํ€˜์ด์‚ฌ๋กœ ๋ถ„๋ฅ˜๋˜์—ˆ์ง€๋งŒ, ์ด์–ด์ง„ ๊ด€์ธก์—์„œ๋Š” ๋” ํ๋ฆฟํ•œ ์ฒœ์ฒด
  7. SERENDIPITY_MANUAL : ์ˆ˜๋™์œผ๋กœ ๊ด€์ธก๋œ ์ฒœ์ฒด
  8. sky : ๋นˆ ํ•˜๋Š˜
  9. 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. ์ •๋ณด ์ด๋“: ์—”ํŠธ๋กœํ”ผ(์ฃผ์–ด์ง„ ๋ฐ์ดํ„ฐ ์ง‘ํ•ฉ์˜ ํ˜ผ์žก๋„) ๊ฐœ๋… ๊ธฐ๋ฐ˜. ์„œ๋กœ ๋‹ค๋ฅธ ๊ฐ’์ด ์„ž์—ฌ ์žˆ์œผ๋ฉด ๋†’๊ณ , ๊ฐ™์€ ๊ฐ’์ด ์„ž์—ฌ ์žˆ์œผ๋ฉด ๋‚ฎ์Œ.
        • ์ •๋ณด ์ด๋“์ด ๋†’์€ ์†์„ฑ์„ ๊ธฐ์ค€์œผ๋กœ ๋ถ„ํ• 
        • ์ •๋ณด ์ด๋“ ์ง€์ˆ˜ = 1-์—”ํŠธ๋กœํ”ผ ์ง€์ˆ˜
      2. ์ง€๋‹ˆ ๊ณ„์ˆ˜: 0์ด ๊ฐ€์žฅ ํ‰๋“ฑํ•˜๋ฉฐ 1๋กœ ๊ฐˆ์ˆ˜๋ก ๋ถˆํ‰๋“ฑ. ๋ฐ์ดํ„ฐ๊ฐ€ ๋‹ค์–‘ํ•œ ๊ฐ’์„ ๊ฐ€์งˆ์ˆ˜๋ก ํ‰๋“ฑ, ํŠน์ • ๊ฐ’์œผ๋กœ ์ ๋ฆด ๋•Œ๋Š” ๋ถˆํ‰๋“ฑํ•œ ๊ฐ’.
        • ๋‹ค์–‘์„ฑ์ด ๋‚ฎ์„์ˆ˜๋ก ๊ท ์ผ๋„๊ฐ€ ๋†’๋‹ค๋Š” ์˜๋ฏธ์ด๋ฏ€๋กœ 1๋กœ ๊ฐˆ์ˆ˜๋ก ๊ท ์ผ๋„๊ฐ€ ๋†’์œผ๋ฉฐ, ์ง€๋‹ˆ ๊ณ„์ˆ˜๊ฐ€ ๋†’์€ ์†์„ฑ์„ ๊ธฐ์ค€์œผ๋กœ ๋ถ„ํ• 

[์•™์ƒ๋ธ” ํ•™์Šต Ensemble Learning]

: ์—ฌ๋Ÿฌ ๊ฐœ์˜ ๋ถ„๋ฅ˜๊ธฐ(Classifier)๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ๊ทธ ์˜ˆ์ธก์„ ๊ฒฐํ•ฉํ•จ์œผ๋กœ์จ ๋ณด๋‹ค ์ •ํ™•ํ•œ ์ตœ์ข… ์˜ˆ์ธก์„ ๋„์ถœํ•˜๋Š” ๊ธฐ๋ฒ•

  • ๋ชฉํ‘œ: ๋‹ค์–‘ํ•œ ๋ถ„๋ฅ˜๊ธฐ์˜ ์˜ˆ์ธก ๊ฒฐ๊ณผ๋ฅผ ๊ฒฐํ•ฉํ•จ์œผ๋กœ์จ ๋‹จ์ผ ๋ถ„๋ฅ˜๊ธฐ๋ณด๋‹ค ์‹ ๋ขฐ์„ฑ์ด ๋†’์€ ์˜ˆ์ธก๊ฐ’์„ ์–ป๋Š” ๊ฒƒ (์ง‘๋‹จ์ง€์„ฑ ๋Š๋‚Œ)
  • ๋Œ€๋ถ€๋ถ„์˜ ์ •ํ˜• ๋ฐ์ดํ„ฐ๋ฅผ ๋ถ„๋ฅ˜ํ•ด ๋‚ผ ๋•Œ ๋›ฐ์–ด๋‚œ ํšจ๊ณผ๋ฅผ ๋‚˜ํƒ€๋ƒ„
  • ํ•™์Šต ์œ ํ˜•
    1. Voting: ํ•˜๋‚˜์˜ ๋ฐ์ดํ„ฐ ์…‹์—์„œ ๋‹ค์–‘ํ•œ ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ๋ถ„๋ฅ˜๊ธฐ๋ฅผ ์‚ฌ์šฉํ•ด ์˜ˆ์ธกํ•œ ๊ฐ’์„ ๊ฒฐํ•ฉํ•˜๋Š” ๋ฐฉ์‹
      • ์—ฌ๋Ÿฌ ๊ฐœ์˜ ๋ถ„๋ฅ˜๊ธฐ๊ฐ€ ํˆฌํ‘œ๋ฅผ ํ†ตํ•ด ์ตœ์ข… ์˜ˆ์ธก ๊ฒฐ๊ณผ๋ฅผ ๊ฒฐ์ •ํ•˜๋Š” ๋ฐฉ์‹ - ์„œ๋กœ ๋‹ค๋ฅธ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ๊ฐ€์ง„ ๋ถ„๋ฅ˜๊ธฐ์˜ ๊ฒฐํ•ฉ
    2. Bagging: ํ•œ ๊ฐ€์ง€์˜ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ถ„๋ฅ˜๊ธฐ๋ฅผ ํ†ตํ•ด ๋‹ค์–‘ํ•œ ๋ฐ์ดํ„ฐ ์…‹ ๊ฐ๊ฐ์„ ํ•™์Šต์‹œ์ผœ ์˜ˆ์ธกํ•œ ๊ฐ’์„ ๊ฒฐํ•ฉ
      • ์—ฌ๋Ÿฌ ๊ฐœ์˜ ๋ถ„๋ฅ˜๊ธฐ๊ฐ€ ํˆฌํ‘œ๋ฅผ ํ†ตํ•ด ์ตœ์ข… ์˜ˆ์ธก ๊ฒฐ๊ณผ๋ฅผ ๊ฒฐ์ •ํ•˜๋Š” ๋ฐฉ์‹ - ๊ฐ๊ฐ์˜ ๋ถ„๋ฅ˜๊ธฐ๊ฐ€ ๋ชจ๋‘ ๊ฐ™์€ ์œ ํ˜•์˜ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๊ธฐ๋ฐ˜. ๋ฐ์ดํ„ฐ ์ƒ˜ํ”Œ๋ง์„ ์„œ๋กœ ๋‹ค๋ฅด๊ฒŒ ํ•˜๋ฉด์„œ ๋ณดํŒ… ์ˆ˜ํ–‰.
        • ex) ๋žœ๋ค ํฌ๋ ˆ์ŠคํŠธ ์•Œ๊ณ ๋ฆฌ์ฆ˜
      • ๋Œ€๋ถ€๋ถ„ ๊ฒฐ์ • ํŠธ๋ฆฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•จ
    3. Boosting: ์—ฌ๋Ÿฌ ๊ฐœ์˜ ๋ถ„๋ฅ˜๊ธฐ๋ฅผ ํ•™์Šตํ•˜๋ฉด์„œ ์•ž์„œ ์˜ˆ์ธก์„ ์ง„ํ–‰ํ•œ ๋ถ„๋ฅ˜๊ธฐ๊ฐ€ ์˜ˆ์ธก์— ํ‹€๋ฆฐ ๋ฐ์ดํ„ฐ์— ๋Œ€ํ•ด ๊ฐ€์ค‘์น˜(weight)๋ฅผ ๋ถ€์—ฌํ•˜์—ฌ ๋‹ค์Œ ๋ถ„๋ฅ˜๊ธฐ์˜ ํ•™์Šต์„ ์ง„ํ–‰ํ•˜๋Š” ๋ฐฉ์‹
      • XGBoost(eXtra Gradient Boost), LightGBM(Light Gradient Boost), ๊ทธ๋ž˜๋””์–ธํŠธ ๋ถ€์ŠคํŠธ
      • ๋Œ€๋ถ€๋ถ„ ๊ฒฐ์ • ํŠธ๋ฆฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•จ
    • Stacking: ๋ฏธ๋ฆฌ ๋‹ค๋ฅธ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ถ„๋ฅ˜๊ธฐ๋กœ๋กœ ํ•™์Šตํ•œ ์˜ˆ์ธก ๊ฐ’์„ ๋‹ค์‹œ ํ•™์Šต์šฉ ๋ฐ์ดํ„ฐ๋กœ ๋งŒ๋“ค์–ด ๋‹ค๋ฅธ ๋ถ„๋ฅ˜๊ธฐ์— ์žฌ ํ•™์Šต์‹œํ‚ค๋Š” ๋ฐฉ์‹
      • ๋ฐฐ๊น… ๋ฐ ๋ถ€์ŠคํŒ…๊ณผ์˜ ๊ณตํ†ต์  - ๊ฐœ๋ณ„์ ์ธ ์—ฌ๋Ÿฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์„œ๋กœ ๊ฒฐํ•ฉํ•ด ์˜ˆ์ธก ๊ฒฐ๊ณผ ๋„์ถœ
      • ์ฐจ์ด์  - ๊ฐœ๋ณ„ ์•Œ๊ณ ๋ฆฌ์ฆ˜์œผ๋กœ ์˜ˆ์ธกํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ๋‹ค์‹œ ์˜ˆ์ธก ์ˆ˜ํ–‰

 


์ฐธ๊ณ ๋ฌธํ—Œ:

[๋ฐ์ด์ฝ˜๋‹ต๋ณ€์š”์ฒญ]๋ฐ์ดํ„ฐ ๋ผ๋ฒจ์—๋Œ€ํ•œ ์ถ”๊ฐ€์„ค๋ช… ๋ถ€ํƒ๋“œ๋ฆฝ๋‹ˆ๋‹ค.

์ฑ… [ํŒŒ์ด์ฌ ๋จธ์‹ ๋Ÿฌ๋‹ ์™„๋ฒฝ ๊ฐ€์ด๋“œ]

https://jalynne-kim.medium.com/๋ฐ์ดํ„ฐ๋ถ„์„-๊ธฐ์ดˆ-eda์˜-๊ฐœ๋…๊ณผ-๋ฐ์ดํ„ฐ๋ถ„์„-์ž˜-ํ•˜๋Š”-๋ฒ•-a3cac2cc5ebc

https://dacon.io/en/codeshare/663?page&dtype=vote&ptype&fType

https://m.blog.naver.com/yhinjesus/172732656