์ ๋ ฅ ๋ฒกํฐ์ ๋ํ ์ถ๋ ฅ ํจ์
if wx + b > 0:
return 1
*w = weight, b = bias, wx => inner product*
else:
return 0
์ฌ๋ฌ ๊ณ์ธต์ ํผ์
ํธ๋ก
์ฒ์์๋ ์์๋ก ํ ๋น๋ weight๋ฅผ ์ฌ์ฉํ์ฌ ํ์ฑํ ํ ์ดํ ์์ธก ๊ฐ๊ณผ ์ค์ ๊ฐ์ ๋น๊ตํ์ฌ ์ค์ฐจ๋ฅผ ๊ณ์ฐํ์ฌ ๋ค์ ์ ํผ์
ํธ๋ก ์ผ๋ก ์ ๋ฌ, ์ ์ ํ optimizer๋ฅผ ํตํด ์ค์ฐจ๋ฅผ ์ค์ด๋ ๋ฐฉํฅ์ผ๋ก weight ์กฐ์ .
์ถ๋ ฅ์ ๋ํ weight ๋ฐ bias ์กฐ์ ์ ํ์ฑํ ํจ์ ์ด์ฉํ๋ ๊ฒ์ด ์ข์. ๊ทธ๋ ์ง ์์ผ๋ฉด ์ถ๋ ฅ ๊ฐ์ด ํฌ๊ฒ ๋ณํด ์ ์ง์ ์ผ๋ก ํ์ตํ๊ธฐ ์ด๋ ค์.
ํฉ์ฑ๊ณฑ ์ ๊ฒฝ๋ง
Layer ๋ง์ผ๋ฉด DCNN, ํํฐ์ ๊น์ด๋ ์งํ๋ ์๋ก ๊น์ด์ง, ๋ง์ง๋ง ๋จ๊ณ์์๋ ์ผ๋ฐ์ ์ผ๋ก ํ๋ ์ด์์ ์์ ์ฐ๊ฒฐ ๊ณ์ธต์ผ๋ก ๊ตฌ์ฑ.
์ ์ Training data์ ๋ํด ์ข์ ํจ์จ์ ๋ณด์ด๋ฉฐ, Transfer Training์ ์์ฃผ ์ฌ์ฉ.
์ ์ด ํ์ต
- ๊ธฐ์กด์ ๋ง๋ค์ด์ง ๋ชจ๋ธ์ ์ฌ์ฉํ์ฌ ์๋ก์ด ๋ชจ๋ธ์ ๋ง๋ค ๋ ํ์ต์ ๋น ๋ฅด๊ฒ ํ๊ณ ์์ธก์ ๋ ๋์.
- ์ด๋ฏธ ํ์ต๋ weight์์ ์ฐ๋ฆฌ๊ฐ ์ํ๋ ํ์ต์ ๋ง๊ฒ fine tuningํจ.
- fine tuning์๋ feature extraction, ํ์ต๋ ๋ชจ๋ธ ์ฌ์ฉ, ์ผ๋ถ layer ์กฐ์ ๋ฑ์ด ์๋ค.
- ๋ฐ์ดํฐ๊ฐ ๋ถ์กฑํ ๊ฒฝ์ฐ ํ์ฉํ๊ธฐ ์ข๋ค.
์ ๋์ ์์ฑ ๋คํธ์ํฌ
์ผ๋ฐ์ ์ผ๋ก ๋ ๊ฐ์ ๋คํธ์ํฌ๋ก ๊ตฌ์ฑํ ๋, ํ๋๋ ์ง์ง์ฒ๋ผ ๋ณด์ด๋ ํฉ์ฑ ๋ฐ์ดํฐ๋ฅผ ์์กฐํ๊ฒ ํ์ตํ๊ณ , ๋ค๋ฅธ ํ๋๋ ์์กฐํ ๋ฐ์ดํฐ์ ์ง์ง ๋ฐ์ดํฐ๋ฅผ ๊ตฌ๋ถํ๊ฒ ํ์ตํ๋ค. ์ค์ ๋ก ํต์ฌ feature์ ๋ํด์๋ ๊ฐ๊ธฐ ๋๋ฌธ์ GAN์ ํตํด ๋ฐ์ดํฐ๋ฅผ ๋ง์ด ๋ง๋ค์ด์ ํ์ตํ๋๋ผ๋ ์์ฒญ๋ ํฅ์์ด ์์ง๋ ์๊ณ , ๋ชจ๋ธ์ด robustํด์ง๋ ํจ๊ณผ๋ ์๋ค.
๋ ๋คํธ์ํฌ๊ฐ ๊ฒฝ์์ ํตํ ํฅ์
๋ฐฐ์น ์ ๊ทํ: ๊ฐ ๋จ์์ ๋ํ ์
๋ ฅ์ ํ๊ท ๋ฐ ๋จ์๋ถ์ฐ์ 0์ผ๋ก ์ ๊ทํํด ํ์ต์ ์์ ํ์ํค๋ ๋ฐ ๋์. ์ฌ๋ฌ ์ํฉ์์ ํ์ต์ ๊ฐ์ํํ๊ณ ์๋ชป๋ ์ด๊ธฐํ ๋ฌธ์ ๋ฅผ์ค ์ค์ด๋ฉฐ, ์ผ๋ฐ์ ์ผ๋ก ๋ ์ ํํ ๊ฒฐ๊ณผ๋ฅผ ์ฐ์ถํ๋ ๊ฒ์ด ๊ฒฝํ์ ์ผ๋ก ์
์ฆ๋จ.
- DCGAN - Deep Convolutional Generative Adversarial Networks
CNN ํ์ฉํ์ฌ ์์กฐ ์์ฐ
One-Hot Encoding - ๋จ์ด ๊ฐ ์ ์ฌ์ฑ ํํ ๋ถ๊ฐ๋ฅ
NLP(Natural Language Processing)
- word2vec
- GloVe
์ํ ์ ๊ฒฝ๋ง
๋ค์ค ํผ์
ํธ๋ก ์ ๊ฒฝ๋ง์ ๊ฒฝ์ฐ ๋ชจ๋ ์
๋ ฅ ๋ณ์๊ฐ ๋
๋ฆฝ์ด๋ผ ๊ฐ์ ํ์ง๋ง, ์๊ณ์ด ๋ฐ์ดํฐ๋ ๋ฌธ์ฅ๊ณผ ๊ฐ์ ์์ฐจ์ ์ธ ๋ฐ์ดํฐ์ ๊ฒฝ์ฐ ๊ณผ๊ฑฐ ๋ฐ์ดํฐ์ ๋ํด ์์กด์ฑ์ด ์๋ค.
์ํ ์ ๊ฒฝ๋ง์ ์
์์๋ ํน์ ์์ ์ ๊ดํ ํจ์๋ก ์๋ ์ํ ๊ฐ๊ณผ ์
๋ ฅ ๊ฐ์ ํํ
RNN, LSTM, GRU
๋น์ง๋ํ์ต
์ญ์ ํ ์ด์ฉ ์
๋ ฅ๊ฐ ๋ณต์, ์
๋ ฅ ์ฐจ์๊ณผ ์ถ๋ ฅ ์ฐจ์์ด ๊ฐ๋ค. ์ฐจ์ ์์ถ ๊ณผ์ ์์ ์ค์ํ ์ ๋ณด๋ค๋ง ์ ์ฅํ๋ ๊ฒ์ด ๋ณต์๋ฅ ์ด ์ข์ผ๋ฏ๋ก ์ด์ ๋ง๊ฒ ํ์ต.
Autoencoder๋ ์ฐจ์ ์ถ์์ ๋ฒกํฐ ์ฐ์ฐ ํจ์จ์ฑ์ ์ด์ ์ด ์๋ค.
- ์ฐจ์์ด ์ปค์ง๋ฉด ์ฐ์ฐ์ด ์ง์์ ์ผ๋ก ์ฆ๊ฐํ๋ฏ๋ก ์ ๋นํ ์ฐจ์์์ ๊ณ์ฐํด์ผ ํ๋ค.
- ๊ณ ์ฐจ์์ ๋ฐ์ดํฐ๋ฅผ ๋ฐ๋ก ์ฐ์ฐํ๋ ๊ฒ๋ณด๋ค ์ ์ฐจ์์ ๋ฐ์ดํฐ๋ก ๋ฐ๊พผ ๋ค ์ฐ์ฐํ์ฌ ๋ค์ ๊ณ ์ฐจ์์ผ๋ก ๋ณต์ํ๋ ๊ฒ์ด ์ข์ ๊ฒฝ์ฐ๊ฐ ์๋ค.(ex, ์ด๋ฏธ์ง ํฉ์ฑ)
์ฐจ์ ์ถ์
- ์ฐจ์์ด ์ปค์ง๋ฉด ๊ณต๊ฐ์ ํฌ๊ธฐ๊ฐ ๊ธฐํ ๊ธ์์ ์ผ๋ก ์ปค์ ธ ๋ฐ์ดํฐ์ ๋ฐ๋๊ฐ ๊ธ๊ฒฉํ ๋ฎ์์ง๋ฏ๋ก ๋ฐ์ดํฐ์ ๋ถํฌ ๋ฐ ๋ชจ๋ธ ๋ถ์์ ํ์ํ ์ํ์ ์๊ฐ ๊ธฐํ๊ธ์์ ์ผ๋ก ๋์ด๋๋ค. ๋ฐ๋ผ์ ์ผ๋ฐ์ ์ผ๋ก ์ฐจ์์ ํฌ๊ธฐ๋ฅผ ์ค์ด๊ณ ํต์ฌ์ด ๋๋ feature๋ค์ ์ ๋ณํ์ฌ ๋ฐ์ดํฐ์ ๋ถํฌ ๋ฐ ๋ชจ๋ธ ๋ถ์์ ํ๋ค. ์ฃผ๋ก PCA, AutoEncoder ๋ฑ์ ์ฌ์ฉํ๋ฉฐ ์ฐจ์ ์ถ์๊ฐ ํฌํจ๋ ๋ชจ๋ธ์ ์ค๊ฐ ๊ณ์ธต์์ ์ถ์ถํ๋ ๋ฐฉ๋ฒ๋ ์๋ค.(ex DCNN) ์ค๊ฐ ๊ณ์ธต์์ ์ถ์ถ ์ ํด๋น ๋ชจ๋ธ์ ์ญํ ์ ๋ง๋ ํน์ง์ ์ป์ ์ ์๋ค.
์ฐจ์ ํ์ฅ
- ๊ฐ๋ น 3์ฐจ์์ ๊ณต๊ฐ์์ z>0๊ณผ z<0์ผ๋ก ๋๋ ๋ถํฌ๊ฐ z=0์ธ ํ๋ฉด์ ์ ์ฌ์ ๋ ๊ฒฝ์ฐ z=0์ธ 2์ฐจ์์์๋ ๊ทธ ๋ถํฌ๋ฅผ ํ์ธํ๊ธฐ ์ด๋ ต์ง๋ง 3์ฐจ์์ผ๋ก ํ์ฅํ๋ค๋ฉด ํจ๊ณผ์ ์ผ๋ก ๋ถํฌ๋ฅผ ํ์ธํ ์ ์๋ค. ์ด๋ฌํ ๊ฒฝ์ฐ์ฒ๋ผ ์ฐจ์์ ํ์ฅํ์ฌ ๋ฌธ์ ๊ฐ ๋จ์ํ๋ ์ ์๋ค.
Supervised - ์ ๋ต์ง๊ฐ ์์, ์ถ๋ ฅ๊ฐ๊ณผ label ๋น๊ต
๊ฐ๋ 1, ๊ณ ์์ด๋ 0, ์ ๋ต์ง ์กด์ฌ
x1 -> 1
x2 -> 0
x3 -> 1
...
Unsupervised - ์ ๋ต x, (k-means, density-based, etc)clustering / (in time-series)anomaly detector //
clustering
x1 -> group 1
x2 -> group 2
x3 -> group 1
...
anomaly detector
x1 -> 0
x2 -> 0
x3 -> 0
x4 -> 0.1
**x5 -> 0.9**
x6 -> 0.3
...
Semisupervise - ๊ฐ์ ๋ํด์ ํ์ต, ๋ค๋ฅธ data๋ ๋ค์ด์ด
x1 -> 1
x2 -> 1
x3 -> 1
x4 -> 1
a1 -> not 1
- ํ์ต ์ ํ์ํ data
- Training data, Validation data, Test data(+ label if classifier/supervised)
- data normalization ์ ์ต๋๊ฐ์ผ๋ก ๋๋ ์ฃผ๋ ๊ฒ์ด ์๋๋ผ, 0.9 ๋๋ 0.95๊ฐ์ผ๋ก ๋๋ ์ฃผ๋ ๊ฒ์ด ์ข๋ค(quantile)
-
PCA
- ์ฃผ์ฑ๋ถ ๋ถ์, ๋ชจ๋ ๋ฒกํฐ์ ๋ํด ๋ถ์ํ์ฌ ์ฐจ์ ์ถ์
pca = PCA(k) pca.fit(target_data) pca.transform(test_data)
-
MLP
- bias, ํ์ฑํ ํจ์๊ฐ ์์ ๊ฒฝ์ฐ, ๋ชจ๋ ๋ฒกํฐ์ ๋ํด ๊ฐ์ค์น๋ฅผ ๊ณ์ฐํ๋ฏ๋ก PCA์ ๊ฒฐ๊ณผ๊ฐ์ด ๊ฑฐ์ ๋น์ทํ๊ฒ ๋์ด.
- bias, ํ์ฑํ ํจ์๊ฐ ์์ ๊ฒฝ์ฐ, weight๊ณผ bias๊ฐ ๋ณํ๋ฉด์ ์ํฅ๋ ฅ์ด ํฐ ์ธ์์ ๋ํด weight ๋ฐ bias๊ฐ ์กฐ์ ๋๊ณ , ํ์ฑํ ํจ์์ ์ํด ๋น์ ํ ๋ณํ๋จ.
input_layer = Input(shape=(n, n)) or input_layer = Input(shape(m, )) flatten_layer = Flatten()(input_layer) ... hidden layers encoding_layer = Dense(k)(hidden_layer_x) encoder = Model(input_layer, encoding_layer) encoder.compile(optimizer = 'rmsprop', loss = 'binary_crossentropy') # check params encoder.summary() encoder.fit(training_data, training_label, validation_data = (validation_data, validation_label), epochs = 1000, callbacks=[early_stopping, tensorboard]) # callbacks ๋ด๋ถ ์ธ์๋ ๋ฏธ๋ฆฌ ์ ์ธํด์ผํจ encoder.evaluate()
-
CNN
- Deep Learning, ์ด๋ฏธ์ง์ ํน์ฑ์ด ๊ฐํ ๊ฒฝ์ฐ ์ข๋ค.
- ์ธต์ด ๊น์ด์ง์๋ก filter ์๋ฅผ ๋ง์ด ํ๋ ํธ
- ์์ถ์ด ๋ชฉ์ ์ด๋ผ๋ฉด stride ์ต์ ์ ๋ฐ๋ก ์ฃผ๊ฑฐ๋ filter size๋ฅผ ํฌ๊ฒ ํ์ฌ filter๋ฅผ ํต๊ณผํ ์ดํ์ ํฌ๊ธฐ๋ฅผ ์์์ง๊ฒ ํ๊ฑฐ๋, Pooling์ ์ด์ฉ
- ๋น๊ต์ ์ ์ parameter ์ฌ์ฉ, ๋ง์ resource ์๋ชจ
input_layer = Input(shape=(n, n, 1)) conv1_layer = Conv2D(10, (3, 3), padding="same")(input_layer) mxp1_layer = MaxPooling2D((2, 2), padding="same")(conv1_layer) .... encoding_layer = Conv2D(1, (3, 3), padding='same')(mxp3_deep) encoder = Model(input_layer, encoding_layer) encoder.compile(optimizer='rmsprop', loss='binary_crossentropy') # check params encoder.summary() encoder.fit(training_data, training_label, validation_data = (validation_data, validation_label), epochs = 1000, callbacks=[early_stopping, tensorboard]) # callbacks ๋ด๋ถ ์ธ์๋ ๋ฏธ๋ฆฌ ์ ์ธํด์ผํจ encoder.evaluate()
-
In Model
- ๋ชจ๋ธ ์์ฑ ์ parameter ์๋ data ์์ ๋นํด ์ ์๊ฒ ์ข๋ค(๋ณต์กํ ๋ชจ๋ธ - ์๊ฐ ์๋ชจ ํฌ๊ณ overfitting ๊ฐ๋ฅ์ฑ ๋์)
- Input layer ์ ๋ ฅ์ธต
- Flatten layer (ํ์ํ๋ค๋ฉด) (n, n)ํ๋ ฌ์ (n**2, 1) ํ๋ ฌ๋ก
- Hidden layer ์๋์ธต, Hidden layer ์ค์ฒฉ์ ํตํด Deep Learning
- Output layer ์ถ๋ ฅ์ธต, ์ถ๋ ฅ ๊ฐ์ ๋ง๋ ํ์ฑํ ํจ์ ์ฌ์ฉ(sigmoid, softmax, etc)
- Dropout ๋คํธ์ํฌ ๋ด๋ถ๋ก ์ ๋ฌ๋๋ ๊ฐ ์ค ์ผ๋ถ๋ฅผ ๋๋กญ์์ ํ๋ฅ ๋ก ๋ฌด์์๋ก ์ ๊ฑฐํ์ฌ ์ฑ๋ฅ ํฅ์
- summary๋ฅผ ํตํด parameter ์ ํ์ธ
- ํ์ฑํํจ์
ํ์ฑํ ํจ์๋ฅผ ํตํด ๋ฐ์ดํฐ๋ฅผ ํน์ ๊ตฌ๊ฐ์ fitting ์ํจ๋ค. ํ์ฑํ ํจ์ ์์ด ์ฌ์ฉํ ๊ฒฝ์ฐ ๋จ์ PCA์ ๋น์ทํ ๊ฒฐ๊ณผ๊ฐ ๋์ด.
- sigmoid: -inf to 0, inf to 1, (0,1)์ ์ถ๋ ฅ๊ฐ์ ๊ฐ๋ ์ถ๋ ฅ์ธต์ ์ ์ , [True, False]
- tanh: -inf to -1, inf to 1, (-1,1)
- ReLU: ์๋์ธต์ ์ ์ , sigmoid/tanh๋ณด๋ค ๋น ๋ฅด๊ฒ ์๋ ดํ๋ค.
- LeakyReLU: ReLU์ ํน๋ณํ ๋ฒ์ , ๋ค์ํ ์ํฉ์์ GAN์ ์ฑ๋ฅ ๊ฐ์
if x<0: return 0 else: return ax- softmax: ํ๋ฅ ๋ถํฌํจ์๋ก 2๊ฐ ์ด์์ ๋ถ๋ฅ ๋ชจ๋ธ ์ถ๋ ฅ์ธต์ ์ ์ , [a, b, c, ...]
-
Compile(Model.compile)
- loss:
- mean squared error - ์ผ๋ฐ์ ์ผ๋ก ์ฌ์ฉ
- binary crossentropy - ์ถ๋ ฅ ๊ฐ๊ณผ ๋ฉ์ด์ง์๋ก ํฐ penalty ๋ฐ์, binary
- categorical crossentropy - ์ถ๋ ฅ ๊ฐ๊ณผ ๋ฉ์ด์ง ์๋ก ํฐ penalty ๋ฐ์, >2
- Metric:
- Accuracy(์ ํ๋) - ํ๊ฒ์ ์ ํํ ์์ธกํ ๋น์จ
- Precision(์ ๋ฐ๋) - ๊ธ์ ์ด๋ผ๊ณ ์์ธกํ ๊ฒ ์ค ์ค์ ๋ก ์ฐธ์ธ ๊ฒ์ ๋น์จ
- Recall(์ฌํ์จ) - ์ฌ๋ฐ๋ฅด๊ฒ ์์ธกํ ๊ฒ ์ค ๊ธ์ ์ผ๋ก ์์ธกํ ๊ฒ์ด ์ค์ ๋ก ์ฐธ์ธ ๊ฒฝ์ฐ์ ๋น์จ
- optimizer:
- SGD(Stochastic Gradient Descent) - ํ๋ฅ ์ ๊ฒฝ์ฌํ๊ฐ๋ฒ
- RMSprop, Adam - SGD์ ๊ด์ฑ๊ฐ๋ ํฌํจ, ๋ง์ ๊ณ์ฐ ๋น์ฉ ํ์ ์ ๋น ๋ฅธ ์๋ ด ๊ฐ๋ฅ
- loss:
-
Learning(Model.fit)
- epochs - ๋ชจ๋ธ์ด ํ์ต ๋ฐ์ดํฐ์ ์ ์ฒด๋ฅผ ์ดํด๋ณธ ํ์, ๊ฐ ๋ฐ๋ณต๋ง๋ค optimizer๋ฅผ ํตํด ๋ชฉ์ ํจ์๊ฐ ์ต์ํ๋๋๋ก ๊ฐ์ค์น ์กฐ์ // ๋ชจ๋ธ์ ๋ณต์ก๋
- batch_size - ์ตํฐ๋ง์ด์ ๊ฐ weight ์ ๋ฐ์ดํธ ํ๊ธฐ ์ ๊น์ง ์ดํด๋ณธ ํ์ต ๋ฐ์ดํฐ์ ์ // ์๋ ด์ฑ
- Regularization
- kernel_regularizer weight matrix์ ์ ์ฉ๋๋ ์ผ๋ฐํ ํจ์
- bias_regularizer bias vector์ ์ ์ฉ๋๋ ์ผ๋ฐํ ํจ์
- activity_regularizer ๊ณ์ธต์ ์ถ๋ ฅ์ ์ ์ฉ๋๋ ์ผ๋ฐํ ํจ์
- callback - Tensorboard, earlystopping
-
After Learning
- evaluate - ์์ค ๊ฐ ๊ณ์ฐ
- predict_classes - ๋ฒ์ฃผ ์ถ๋ ฅ ๊ณ์ฐ
- predict_proba - ๋ฒ์ฃผ ํ๋ฅ
- ๋ฐ์ดํฐ ์ฌ์ด์ ์ ์ฌ๋(๊ฑฐ๋ฆฌ ์ ๋ณด ํ์ฉ)๋ฅผ ์ด์ฉํ์ฌ ๊ณ ์ฐจ์์ ์ ๊ณต๊ฐ์์ ์ ์ฐจ์์ ์๋ฒ ๋ฉ ๊ณต๊ฐ์ผ๋ก ๋ณํํ๋ค.
- ์ ๊ณต๊ฐ์์ ์ธ์ ํ ๋ฐ์ดํฐ๋ ์๋ฒ ๋ฉ ๊ณต๊ฐ์์๋ ์ธ์ ํ๊ฒ, ์ ๊ณต๊ฐ์์ ๋จผ ๋ฐ์ดํฐ๋ ์๋ฒ ๋ฉ ๊ณต๊ฐ์์๋ ๋ฉ๊ฒ ๋ณํ.
| ์๋ณ ๊ฒฐ๊ณผ ์์ฑ | ์๋ณ ๊ฒฐ๊ณผ ์์ฑ | ํฉ๊ณ | |
|---|---|---|---|
| ์ค์ ์์ฑ | TP(True Positive) | FN(False Negative) | TP + FN |
| ์ค์ ์์ฑ | FP(False Positive) | TN(True Negative) | FP + TN |
| ํฉ๊ณ | TP + FP | FN + TN | ALL |
- TP / ( TP + FN ) = ์ง์์ฑ๋ฅ = ๋ฏผ๊ฐ๋
- TP / ( TP + FP ) = ์ ๋ฐ๋
- TP / ( TP + FN ) = ์ฌํ์จ
- FN / ( TP + FN ) = ๊ฑฐ์ง์์ฑ๋ฅ
- FP / ( FP + TN ) = ๊ฑฐ์ง์์ฑ๋ฅ
- TN / ( FP + TN ) = ์ง์์ฑ๋ฅ = ํน์ด๋
- ๋ฏผ๊ฐ๋ + ๊ฑฐ์ง์์ฑ๋ฅ = 1
- ํน์ด๋ + ๊ฑฐ์ง์์ฑ๋ฅ = 1
- Accuracy = ( TP + TN ) / ALL
- F measure = 2 * (์ ๋ฐ๋ * ์ฌํ์จ) / (์ ๋ฐ๋ + ์ฌํ์จ)
- ์๋ณ ๊ฒฐ๊ณผ๊ฐ (0, 1) ์ฌ์ด๋ก ๋์จ ๊ฒฝ์ฐ ์๋ณ ๊ฒฐ๊ณผ์ ์ ๋ต ์ธํธ๋ฅผ ์๋ณ ๊ฒฐ๊ณผ์ ์ ์ ์์๋ก ์ ๋ ฌํ์ฌ ์๊ณ์น๋ฅผ ์ค์ ํ๊ณ , ์๊ณ์น๋ณด๋ค ์๋ฅผ ์์ฑ์ผ๋ก ํ์ฌ ํผ๋ํ๋ ฌ๋ก ๋ํ๋ธ๋ค๋ฉด ์ง์์ฑ๋ฅ ๊ณผ ๊ฑฐ์ง์์ฑ๋ฅ ์ ๊ณ์ฐํ ์ ์์.
- x์ถ์ ๊ฑฐ์ง์์ฑ๋ฅ (1-ํน์ด๋, False Positive Rate), y์ถ์ ์ง์์ฑ๋ฅ (๋ฏผ๊ฐ๋, True Positive Rate)๋ก ํ์ฌ ์๊ณ์น๋ฅผ ๋ณํ์ํค๋ฉด ROC curve ๋ง๋ค ์ ์์.
- ๊ธฐ์ค ๋ผ์ธ NIR(No Information Rate) - ๋ฉ์ฒญํ ๋ชจ๋ธ๋ก ๋ง๋ ๊ฒฝ์ฐ์ ๊ณก์
- AUC(Area Under Curve): ROC ๊ณก์ ์ ์๋ซ๋ถ๋ถ ๋ฉด์ ๊ฐ, 0.9 ์ด์์ด๋ฉด ์ ํ๋(accuracy)๊ฐ ๋์.
- Youden Index - AUC ๊ฐ๊ณผ ๊ธธ์ด 0.5์ ๋๊ฐ์ ์ฌ์ด ๊ฑฐ๋ฆฌ b๊ฐ ๊ฐ์ฅ ๋ฉ ๋์ ์ง์์ฑ๋ฅ + ๊ฑฐ์ง์์ฑ๋ฅ , ํด ์๋ก ์ข์ ๋ชจ๋ธ
Model 1
| ์๋ณ ๊ฒฐ๊ณผ ๊ฐ | ์๋ณ ๊ฒฐ๊ณผ ๊ณ ์์ด | ํฉ๊ณ | |
|---|---|---|---|
| ์ค์ ๊ฐ | TP = 5000 | FN = 5000 | 10000 |
| ์ค์ ๊ณ ์์ด | FP = 5000 | TN = 5000 | 10000 |
| ํฉ๊ณ | 10000 | 10000 | 20000 |
์ค์ ๊ฐ ์ค ๊ฐ๋ผ๊ณ ๋๋ตํ ํ๋ฅ -> ๋ฏผ๊ฐ๋ = 5000 / 10000 = 0.5
๊ฐ๋ผ๊ณ ๋๋ตํ ๋ ๊ฐ์ผ ํ๋ฅ -> ์ ๋ฐ๋ = 5000 / 10000 = 0.5
์ค์ ๊ณ ์์ด ์ค ๊ณ ์์ด๋ผ๊ณ ๋๋ตํ ํ๋ฅ -> ํน์ด๋ = 5000 / 10000 = 0.5
์ ์ฒด ์ ๋ต ์ค ๊ฐ์ ๋น์จ -> ์ฌํ์จ = 5000 / 10000 = 0.5
๊ณ ์์ด๋ผ๊ณ ๋๋ตํ ๋ ๊ณ ์์ด๊ฐ ์์ ํ๋ฅ - 5000 / 10000 = 0.5
Accuracy = 10000 / 20000 = 0.5
F = 2 * (0.5 * 0.5) / (0.5 + 0.5) = 0.5
Model 2
| ์๋ณ ๊ฒฐ๊ณผ ๊ฐ | ์๋ณ ๊ฒฐ๊ณผ ๊ณ ์์ด | ํฉ๊ณ | |
|---|---|---|---|
| ์ค์ ๊ฐ | TP = 9000 | FN = 1000 | 10000 |
| ์ค์ ๊ณ ์์ด | FP = 9000 | TN = 1000 | 10000 |
| ํฉ๊ณ | 18000 | 2000 | 20000 |
์ค์ ๊ฐ ์ค ๊ฐ๋ผ๊ณ ๋๋ตํ ํ๋ฅ -> ๋ฏผ๊ฐ๋ = 9000 / 10000 = 0.7
๊ฐ๋ผ๊ณ ๋๋ตํ ๋ ๊ฐ์ผ ํ๋ฅ -> ์ ๋ฐ๋ = 9000 / 18000 = 0.5
์ค์ ๊ณ ์์ด ์ค ๊ณ ์์ด๋ผ๊ณ ๋๋ตํ ํ๋ฅ -> ํน์ด๋ = 1000 / 10000 = 0.1
์ ์ฒด ์ ๋ต ์ค ๊ฐ์ ๋น์จ -> ์ฌํ์จ = 9000 / 10000 = 0.9
๊ณ ์์ด๋ผ๊ณ ๋๋ตํ ๋ ๊ณ ์์ด๊ฐ ์์ ํ๋ฅ - 5000 / 10000 = 0.5
Accuracy = 10000 / 20000 = 0.5
F = 2 * ( 0.5 * 0.9 ) / ( 0.5 + 0.9 ) = 0.64285
Model 3
| ์๋ณ ๊ฒฐ๊ณผ ๊ฐ | ์๋ณ ๊ฒฐ๊ณผ ๊ณ ์์ด | ํฉ๊ณ | |
|---|---|---|---|
| ์ค์ ๊ฐ | TP = 7000 | FN = 3000 | 10000 |
| ์ค์ ๊ณ ์์ด | FP = 1000 | TN = 9000 | 10000 |
| ํฉ๊ณ | 8000 | 12000 | 20000 |
์ค์ ๊ฐ ์ค ๊ฐ๋ผ๊ณ ๋๋ตํ ํ๋ฅ -> ๋ฏผ๊ฐ๋ = 7000 / 10000 = 0.7
๊ฐ๋ผ๊ณ ๋๋ตํ ๋ ๊ฐ์ผ ํ๋ฅ -> ์ ๋ฐ๋ = 7000 / 8000 = 0.875
์ค์ ๊ณ ์์ด ์ค ๊ณ ์์ด๋ผ๊ณ ๋๋ตํ ํ๋ฅ -> ํน์ด๋ = 9000 / 10000 = 0.9
์ ์ฒด ์ ๋ต ์ค ๊ฐ์ ๋น์จ -> ์ฌํ์จ = 7000 / 10000 = 0.7
๊ณ ์์ด๋ผ๊ณ ๋๋ตํ ๋ ๊ณ ์์ด๊ฐ ์์ ํ๋ฅ -> 9000 / 12000 = 0.75
Accuracy = 16000 / 20000 = 0.8
F = 2 * ( 0.875 * 0.7 ) / (0.875 + 0.7 )= 0.77778
Model 4
| ์๋ณ ๊ฒฐ๊ณผ ๊ฐ | ์๋ณ ๊ฒฐ๊ณผ ๊ณ ์์ด | ํฉ๊ณ | |
|---|---|---|---|
| ์ค์ ๊ฐ | TP = 9000 | FN = 1000 | 10000 |
| ์ค์ ๊ณ ์์ด | FP = 3000 | TN = 7000 | 10000 |
| ํฉ๊ณ | 12000 | 8000 | 20000 |
์ค์ ๊ฐ ์ค ๊ฐ๋ผ๊ณ ๋๋ตํ ํ๋ฅ -> ๋ฏผ๊ฐ๋ = 9000 / 10000 = 0.9
๊ฐ๋ผ๊ณ ๋๋ตํ ๋ ๊ฐ์ผ ํ๋ฅ -> ์ ๋ฐ๋ = 9000 / 12000 = 0.75
์ค์ ๊ณ ์์ด ์ค ๊ณ ์์ด๋ผ๊ณ ๋๋ตํ ํ๋ฅ -> ํน์ด๋ = 7000 / 10000 = 0.7
์ ์ฒด ์ ๋ต ์ค ๊ฐ์ ๋น์จ -> ์ฌํ์จ = 9000 / 10000 = 0.9
๊ณ ์์ด๋ผ๊ณ ๋๋ตํ ๋ ๊ณ ์์ด๊ฐ ์์ ํ๋ฅ - 7000 / 8000 = 0.875
Accuracy = 16000 / 20000 = 0.8
F = 2 * ( 0.75 * 0.9) / (0.75 + 0.9) = 0.81818
Model 5
| ์๋ณ ๊ฒฐ๊ณผ ๊ฐ | ์๋ณ ๊ฒฐ๊ณผ ๊ณ ์์ด | ํฉ๊ณ | |
|---|---|---|---|
| ์ค์ ๊ฐ | TP = 0 | FN = 10000 | 10000 |
| ์ค์ ๊ณ ์์ด | FP = 0 | TN = 10000 | 10000 |
| ํฉ๊ณ | 0 | 20000 | 20000 |
์ค์ ๊ฐ ์ค ๊ฐ๋ผ๊ณ ๋๋ตํ ํ๋ฅ -> ๋ฏผ๊ฐ๋ = 0 / 10000 = 0
๊ฐ๋ผ๊ณ ๋๋ตํ ๋ ๊ฐ์ผ ํ๋ฅ -> ์ ๋ฐ๋ = 0 / 0 = 0
์ค์ ๊ณ ์์ด ์ค ๊ณ ์์ด๋ผ๊ณ ๋๋ตํ ํ๋ฅ -> ํน์ด๋ = 10000 / 10000 = 1.0
์ ์ฒด ์ ๋ต ์ค ๊ฐ์ ๋น์จ -> ์ฌํ์จ = 0/ 10000 = 0
๊ณ ์์ด๋ผ๊ณ ๋๋ตํ ๋ ๊ณ ์์ด๊ฐ ์์ ํ๋ฅ - 10000 / 20000 = 0.5
Accuracy = 10000 / 20000 = 0.5
F = 2 * ( 0 * 0) / (0 + 0) = 0
Model 6
| ์๋ณ ๊ฒฐ๊ณผ ๊ฐ | ์๋ณ ๊ฒฐ๊ณผ ๊ณ ์์ด | ํฉ๊ณ | |
|---|---|---|---|
| ์ค์ ๊ฐ | TP = 10000 | FN = 0 | 10000 |
| ์ค์ ๊ณ ์์ด | FP = 10000 | TN = 0 | 10000 |
| ํฉ๊ณ | 20000 | 0 | 20000 |
์ค์ ๊ฐ ์ค ๊ฐ๋ผ๊ณ ๋๋ตํ ํ๋ฅ -> ๋ฏผ๊ฐ๋ = 10000 / 10000 = 1.0
๊ฐ๋ผ๊ณ ๋๋ตํ ๋ ๊ฐ์ผ ํ๋ฅ -> ์ ๋ฐ๋ = 10000 / 20000 = 0.5
์ค์ ๊ณ ์์ด ์ค ๊ณ ์์ด๋ผ๊ณ ๋๋ตํ ํ๋ฅ -> ํน์ด๋ = 0 / 10000 = 0
์ ์ฒด ์ ๋ต ์ค ๊ฐ์ ๋น์จ -> ์ฌํ์จ = 10000 / 10000 = 1.0
๊ณ ์์ด๋ผ๊ณ ๋๋ตํ ๋ ๊ณ ์์ด๊ฐ ์์ ํ๋ฅ - 0 / 0 = 0
Accuracy = 10000 / 20000 = 0.5
F = 2 * ( 1 * 0.5) / (1 + 0.5) = 0.66667
Model 7
| ์๋ณ ๊ฒฐ๊ณผ ๊ฐ | ์๋ณ ๊ฒฐ๊ณผ ๊ณ ์์ด | ํฉ๊ณ | |
|---|---|---|---|
| ์ค์ ๊ฐ | TP = 10000 | FN = 0 | 10000 |
| ์ค์ ๊ณ ์์ด | FP = 0 | TN = 10000 | 10000 |
| ํฉ๊ณ | 10000 | 10000 | 20000 |
์ค์ ๊ฐ ์ค ๊ฐ๋ผ๊ณ ๋๋ตํ ํ๋ฅ -> ๋ฏผ๊ฐ๋ = 10000 / 10000 = 1.0
๊ฐ๋ผ๊ณ ๋๋ตํ ๋ ๊ฐ์ผ ํ๋ฅ -> ์ ๋ฐ๋ = 10000 / 10000 = 1.0
์ค์ ๊ณ ์์ด ์ค ๊ณ ์์ด๋ผ๊ณ ๋๋ตํ ํ๋ฅ -> ํน์ด๋ = 10000 / 10000 = 1.0
์ ์ฒด ์ ๋ต ์ค ๊ฐ์ ๋น์จ -> ์ฌํ์จ = 10000 / 10000 = 1.0
๊ณ ์์ด๋ผ๊ณ ๋๋ตํ ๋ ๊ณ ์์ด๊ฐ ์์ ํ๋ฅ - 10000 / 10000 = 1.0
Accuracy = 20000 / 20000 = 1.0
F = 2 * ( 1.0 * 1.0) / (1.0 + 1.0) = 1.0