โ ๋ถ๋ฅ๊ธฐ์ ํ๋
> ๋ค์ด๊ฐ๋ ๋ง
1. ์์ฒญ๋๊ฒ ๊ณ ์ํ๋ค.
2. ์๋์ฐ์์ ๋ณ๋ ฌ ์ปดํจํ ์ ์คํ์ํค๊ธฐ ์ํด์๋ ๋ฉ์ธ๋ฃจํ๋ฅผ "if __name__ == '__main__'"๋ก ๊ฐ์ธ์ผ ํ๋ค. sklearn์ joblib ๋ชจ๋ ๋ฌธ์๋ฅผ ์ดํด๋ณด๋ผ๋๋ฐ ๋ด๋ ๋ณ๊ฑฐ ์๋ค. ์ด์ ์๋ฌ ๋ฉ์ธ์ง๊น์ง ๋ํํ ๋ปฅ์ ์น๋คใ ก,ใ ก ์ด์จ๋ ๊ฐ์ธ๊ณ ๋๋ ๊ทธ ์๋ฌ ๋ฉ์ธ์ง๋ ์์ด์ก๋ค.
3. ๋งฅ์์๋ ๊ทธ๋ฅ ๋๋ค๊ณ ํ๋ค.
> ์คํ
1. MultinomialNB()์ SGDClassifier()์ ์ต์ ํ๋ผ๋ฏธํฐ๋ฅผ ์ฐพ์๋ดค๋ค.
2. ์ด๊ฒ๋ ์์ฒญ ๊ณ ์ํ๋ค.
3. pipeline๊ณผ parameters๋ค์ set๊ณผ dictionary๋ก ๋ง๋ค์ด ๋๋๊ฒ ํต์ฌ์ด๋ค.
4. ์ต์ ํ๋ผ๋ฏธํฐ๋ฅผ ์ธก์ ํ ๋ถ๋ฅ๊ธฐ๋ฅผ MultinomialNB()๋ SGDClassifier() ๋ ์ค์ ์ ํํ๋ค.( KFold๋ก ๊ต์ฐจ๊ฒ์ฆ๋ ํ ์ ์๋๋ผ)
5. ๊ฐ๊ฐ์ parameters๊ฐ ๋ค๋ฅด๋ฏ๋ก ์ต์ ํ๋ฅผ ์งํํ ์ธ์๋ฅผ ๋ฃ๋ ๊ฒ๋ ๋ฌ๋ผ์ ธ์ผ ํ๋ค.
6. naive_bayes.py์ 664์ค np.log(smoothed_fc)์ smoothed_fc ๊ฐ์ 0์ด ๋ค์ด๊ฐ์ ๊ณ์ ์๋ฌ๊ฐ ๋๋ค.
stackoverflow๋ฅผ ๋ค์ ธ๋ ๋ฑํ ์ด๊ฑฐ๋คํ๋๊ฒ ์์ด ๋๋นต์ผ๋ก np.log(smoothed_fc +0.000000001) ์ด๋ ๊ฒ ๋ฃ์๋ค.
smoothed_fc ์ด ๋ฌด์์ธ์ง ์ ๋๋ก ์ดํดํ์ง ๋ชปํ๊ณ ๋๋นต์ฒ๋ฆฌํ๋ ๊ต์ฅํ ์ฐ์ฐํ๋ค. ํฌํฐ๋ฅผ ์ ๊ณ ๋ฅ์ ์ผ ํ์ 2์๊ฐ ์์ ์๋ ๊ธฐ๋ถ์ด๋ค.
7. ์ด์จ๋ ๋ถ๋ฅ๊ธฐ ๋ณ๋ก ๋ชจ๋ ์ต์ ํ ํ๋ผ๋ฏธํฐ๋ฅผ ์ฐพ์๋ค. ๊ฒฐ๊ณผ๋ ๋๋ต ์๋์ ๊ฐ๋ค. weighted๊ฐ ๋ญ์ง ๋ชจ๋ฅด๊ฒ ์ง๋ง ์ด์ ์์ฐ๋๋ฐ ํธ์ถํ๋ ๋จ๋ ๊ฒฝ๊ณ ๋ค. ์์ ํ๋ ๋ง์ ์๋ฌ๋ฅผ ๋ง๋ฌ๋๋ ์ด์ ๊ฒฝ๊ณ ๋ฐ์ ์ ๊ฒฝ๋ ์์ฐ์ธ๋ค.
Fitting 3 folds for each of 288 candidates, totalling 864 fits
[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 11.8s
[Parallel(n_jobs=-1)]: Done 192 tasks | elapsed: 1.0min
[Parallel(n_jobs=-1)]: Done 442 tasks | elapsed: 3.0min
[Parallel(n_jobs=-1)]: Done 792 tasks | elapsed: 6.9min
[Parallel(n_jobs=-1)]: Done 864 out of 864 | elapsed: 8.2min finished
Best score: 0.7813333333333333
Best parameter set:
clf__alpha: 1.0
vect__max_features: None
vect__ngram_range: (1, 2)
vect__norm: None
vect__smooth_idf: True
vect__sublinear_tf: True
vect__use_idf: True
Accurary: 0.806
C:\Users\Alice\Anaconda3\lib\site-packages\sklearn\metrics\classification.py:1203: DeprecationWarning: The default `weighted` averaging is deprecated, and from version 0.18, use of precision, recall or F-score with multiclass or multilabel data or pos_label=None will result in an exception. Please set an explicit value for `average`, one of (None, 'micro', 'macro', 'weighted', 'samples'). In cross validation use, for instance, scoring="f1_weighted" instead of scoring="f1".
sample_weight=sample_weight)
Precision: 0.8136573785950023
C:\Users\Alice\Anaconda3\lib\site-packages\sklearn\metrics\classification.py:1304: DeprecationWarning: The default `weighted` averaging is deprecated, and from version 0.18, use of precision, recall or F-score with multiclass or multilabel data or pos_label=None will result in an exception. Please set an explicit value for `average`, one of (None, 'micro', 'macro', 'weighted', 'samples'). In cross validation use, for instance, scoring="f1_weighted" instead of scoring="f1".
sample_weight=sample_weight)
Recall: 0.806
์์์ ๊ตฌํ ์ต์ ์ ํ๋ผ๋ฏธํฐ๋ฅผ ์ด์ฉํด ์์ผ๋ก ๋ถ๋ฅ๊ธฐ๋ฅผ ์ฌ์ฉํ ๋ ๊ทธ์๊ฐ์ด ์ธํ ํด์ฃผ๋ฉด ๋๋๊ฑฐ๋ค. ๋ญ ๊ทน์ ์ผ๋ก ์ ํ๋๊ฐ ์ฌ๋ผ๊ฐ๊ณ ๊ทธ๋ฐ๊ฑด ์ ๋ชจ๋ฅด๊ฒ ๋ค. ์ข ๋ (๋ง์) ๊ณต๋ถ๊ฐ ํ์ํด๋ณด์ธ๋ค.
> ๋ฐ์ฑ
1. ์ต๊ทผ์ ๋๋ผ๋ ์ ์ธ๋ฐ, ๋ฐ์ดํฐ ๋ถ์์ด๋ ๊ณผํ ๋๋ ์ธ๊ณต์ง๋ฅ๊ฐ์ ์ฌ์ ์ง์ ์์ด ๊ทธ๋ฅ ์ด๋ ๊ฒ ๋ฐ๋ฅ์ ํ๋๊ฒ ๋ง๋ ๊ฑด๊ฐ ์ถ๋ค. ์์งํ ์ด๋ ต์ง๋ ์๋ค. ํ๊ณ ๋ค์ด๊ฐ๋ ๋งํผ ์ดํด๋๊ฐ ๋์์ง๋ ๊ฒ๋ ์ ์งํ๋ค. ์ผ๋จ์ ์ด๋ ๊ฒ ๊ฐ์ฌ๋์ด ๋ด๋ ค์ค '๋์์ค'์ ๋ถ์ฌ์ก๊ณ ์ด์ฌํ ๋ฐ๋ผ๊ฐ๋ ๊ฒ์ด ํจ์จ์ ์ด๊ณ ์ข์ ๊ฒ ๊ฐ๋ค. ๋ค์ ์ฌ์ ๊ฐ ์์ ๋ ๊ด๋ จ ์ฑ ๋ค์ ์ฝ์ด์ ๊ธฐ๋ณธ๊ธฐ๋ฅผ ๋ฆ์์ผ๊ฒ ๋ค.
2. ์๊ฐ๋ ๋๋ง๋ค ์ด๋ ๊ฒ ํด๋ ๊ฐ์ด ์์ ์ ๋ฃ๋ ๋ค๋ฅธ ์ฌ๋๋ค์ ์ ๋ฐ๋ ๋ชป๋ฐ๋ผ๊ฐ๋ ๊ฒ ๊ฐ๋ค. ์์ ์ค ๋ด๊ฐ ํ๋ ์ง๋ฌธ์ ๊ฐ์ฌ๋์ ๋ต๋ณ์ ๋ฃ๊ณ ๋๋ฉด ๋ด๊ฐ ์๊ฐํด๋ ๋ถ๋๋ฝ๊ธฐ ๊ทธ์ง ์๋๋ฐ ๋ค๋ฅธ ์ฌ๋๋ค์ด ํ๋ ์ง๋ฌธ์ ์ผ๋จ ๋ฌด์จ ์ง๋ฌธ์ธ์ง ์ดํด๊ฐ ๊ฐ์ง ์์ ๋ญ๋ผ ๋ง์ ํ ์๋ ์๋คใ ก,ใ ก
3. ๊ทธ๋ด ๋๋ง๋ค ๋๋ ์ฌ๋ฏธ๋ก ๋ฐฐ์ฐ๋ ๊ฑฐ๋๊น. ๊ทธ๋ด ์๋ ์์ง ํ๋ '๋น๊ฒํ' ๋ณ๋ช ์ ๋น ์ง๋ค.
4. ํ์ง๋ง ์ธ์์ ํ ์คํธ ๋ง์ด๋์ด ์ ์คํด์ ๋ฐฐ์ฐ๋ ์ฌ๋์ด ๋ช๋ช ์ด๋ ์๊ฒ ๋๊ฐ. ์๋ง ์ ๋ถ๋ค๋ ์ฌ๋ฏธ๋ก ๋ฐฐ์ฐ๋ ๊ฑธ๊ฑฐ๋ค.
5. ๊ทธ๋๋ ๋คํ์ธ ๊ฒ์ '๋๋ ๋ฌด์ธ๊ฐ๋ฅผ ์ฒ์ ๋ฐฐ์ธ ๋ ์ธ์ ๋ ๋จ๋ค๋ณด๋ค ๋ช๋ฐฐ๋ ๋ชปํ๋ค'๋ ์ฌ์ค์ด๋ค. ์ด๋ฒ์๋ ๋ณํจ์ด ์๋ ๊ฒ ๋ฟ์ด๋ค.
6. ์ ์๊พธ ๋๋ฌผ์ด ๋์ง ใ ใ