π μ€λ ν μΌ
- SMOTE μ€μ΅
- λ₯λ¬λ κΈ°μ΄
SMOTE μ€μ΅
π€μ νλλ‘ μ λλ‘ λ λͺ¨λΈμ μ±λ₯μ μΈ‘μ μ νκΈ° μ΄λ €μ΄ μ¬λ‘?
- ν΄λμ€κ° λΆκ· νν λ°μ΄ν°μΌ λ
- e.g.
- κΈμ΅ => μν λμΆ μ¬κΈ°, μ μ©μΉ΄λ μ¬κΈ°, μμ₯νμ§μ’
λͺ© μ¬λΆ
- μ μ‘°μ
=> μλΆ(μν, λΆλν) μ¬λΆ
- ν¬μ€μΌμ΄ => ν¬κ·μ§λ³(μ μ§λ¨μ¬λΆ)
- ITκ΄λ ¨ => κ²μ μ΄λ·°μ , κ΄κ³ μ΄λ·°μ , κ·ΈμΈ μ΄λ·°μ
π‘predict_proba
- λΆλ₯μ μΈ‘μ μ§ν. 0,1 λ±μ ν΄λμ€ κ°μ΄ μλ νλ₯ κ°μΌλ‘ λ°ν
- μκ³κ°(threshold)μ μ§μ μ ν΄μ True, Falseλ₯Ό κ²°μ νκ² λλλ° λ³΄ν΅ 0.5 λ‘ νκΈ°λ νκ³ 0.3, 0.7 λ±μΌλ‘ μ νκΈ°λ ν¨
np.argmax
: κ°μ₯ ν° μΈλ±μ€λ₯Ό λ°ν. predict_probaλ₯Ό κ°μΈμ ν΄λμ€ μμΈ‘νκΈ° μν΄ μ¬μ©
- e.g.
y_pred_proba_class = np.argmax(y_pred_proba, axis=1)
π‘colabμμ κ΅¬κΈ λλΌμ΄λΈμ λ§μ΄ν
νκΈ°
google colab μ’μΈ‘ νλ¨ μ½λ μ€λν«μ mount κ²μνλ©΄ μμ€μ½λ λΈ
- κ΅¬κΈ λλΌμ΄λΈλ₯Ό λ§μ΄νΈνλ©΄ λ°μ΄ν°λ₯Ό λ§€λ² colab μ μ
λ‘λ νμ§ μμλ λλ©° λ°μ΄ν°λ₯Ό λΆλ¬μ€λ μλλ λ λΉ λ¦
from google.colab import drive
drive.mount('/content/drive')
π‘train_test_split()
- train_test_splitμ sklearnμμ μ 곡νλ λ°μ΄ν° λΆν λ©μλ
- μ
λ ₯ λ³μμ λͺ©ν λ³μλ₯Ό μ
λ ₯νλ©΄ λ°μ΄ν°λ₯Ό νμ΅μ© λ°μ΄ν°μ κ²μ¦μ© λ°μ΄ν°λ‘ λλ μ€
- λ¨Έμ λ¬λμμ λ°μ΄ν°λ₯Ό νμ΅μ© λ°μ΄ν°μ κ²μ¦μ© λ°μ΄ν°λ‘ λλλ κ²μ λ§€μ° μ€μν¨
- λ λ°μ΄ν°κ° μ λλ‘ λΆλ¦¬λμ§ μμΌλ©΄, λͺ¨λΈμ΄ λ΅μ§λ₯Ό λ³΄κ³ μμνλ κ²μ΄λ λ§μ°¬κ°μ§μ΄κΈ° λλ¬Έ
- μ΄λ¬ν μν©μ λ°μ΄ν° μ μΆ(Data Leakage)λΌκ³ ν¨
- tran_test_splitμ κΈ°λ³Έμ μΌλ‘ λ°μ΄ν°λ₯Ό λΆν ν λ μμ΄μ(shuffle) λΆν νλλ‘ λμ΄μμ
- λΆκ· ν λ°μ΄ν°μμ train_test_splitμ μ€νμμΌ°μ λ, ν μͺ½ λ°μ΄ν°μ ν¬μν κ°μ΄ λͺ°λ¦΄ κ°λ₯μ±μ΄ μμ
- stratify νλΌλ―Έν°λ μλ λ°μ΄ν°μ κ° λΉμ¨λλ‘ νμ΅μ© λ°μ΄ν°μ κ²μ¦μ© λ°μ΄ν°λ₯Ό λΆν μμΌμ€
π‘confusion matrix ꡬνκΈ°
pd.crosstab(y_test, y_pred)
cf = confusion_matrix(y_test, y_pred)
sns.heatmap(data=cf, annot=True, cmap="Blues");
from sklearn.metrics import ConfusionMatrixDisplay
ConfusionMatrixDisplay(cf).plot();
π‘classification_report(y_test, y_pred)
-
print()λ‘ κ°μΈμ μΆλ ₯ν΄μΌ ν¨
-
λ°μ¬λ¦Όν κ°μ
-
precisionμ μ λ°λλ₯Ό μλ―Έ
from sklearn.metrics import precision_score
-
recallμ μ¬νλλ₯Ό μλ―Έ
from sklearn.metrics import recall_score
-
f1-scoreλ f1 μ μλ₯Ό μλ―Έ
from sklearn.metrics import f1_score
-
accuracyλ μ νλλ₯Ό μλ―Έ
from sklearn.metrics import accuracy_score
-
supportλ ν΄λμ€μ μ€μ λ°μ νμκ° μΌλ§μΈμ§ μλ €μ€
- λ°λΌμ supportλ λͺ¨λΈμ λ°λΌ λ¬λΌμ§λ μ«μκ° μλ
-
weighted avgλ κ°μ€ νκ· μ μλ―Ένκ³ , macro avgλ κ°μ€λμ§ μμ νκ· μ μλ―Έν¨.
- macro avgλ κ° λ μ΄λΈμ λν μΈ‘μ νλͺ©μ κ³μ°νκ³ κ°μ€μΉκ° μ μ©λμ§ μμ νκ· μ μ°Ύμ. λ μ΄λΈ λΆκ· νμ κ³ λ €νμ§ μμ.
- weighted avgλ κ° λ μ΄λΈμ λν λ©νΈλ¦μ κ³μ°νκ³ μ§μ(κ° λ μ΄λΈμ λν μ€μ μΈμ€ν΄μ€ μ)λ³λ‘ κ°μ€μΉλ₯Ό λΆμ¬ν νκ· μ μ°Ύμ.
π‘λ°μ΄ν° μνλ§ - undersampling & oversampling
- λ λ°©λ²μ λͺ©μ μ λ κ°μ λΉμ¨μ λΉμ·νκ² λ§μΆ°μ£Όλ κ²
- under-samplingμ λ κ°μ΄ λ§μ μͺ½μμ μΌλΆλ§ μνλ§νμ¬ λΉμ¨μ λ§μΆ°μ£Όλ λ°©λ²
- over-samplingμ λ κ°μ΄ μ μ μͺ½μμ κ°μ λλ € λΉμ¨μ λ§μΆ°μ€ λ°©λ²
- under-samplingμ ꡬνμ΄ μ½μ§λ§ μ 체 λ°μ΄ν°κ° μ€μ΄ λ¨Έμ λ¬λ λͺ¨λΈ μ±λ₯μ΄ λ¨μ΄μ§ μ°λ €κ° μμ
π‘λ°μ΄ν° μνλ§ - SMOTE
- SMOTEλ Synthetic Minority Over-sampling Techniqueμ μ½μλ‘ ν©μ± μμμ μ€λ²μνλ§ κΈ°λ².
- μ μ κ°μ λ릴 λ, k-κ·Όμ μ΄μμ κ°μ μ΄μ©νμ¬ ν©μ±λ μλ‘μ΄ κ°μ μΆκ°ν¨
- k-κ·Όμ μ΄μμ΄λ κ°μ₯ κ°κΉμ΄ kκ° μ΄μμ μλ―Έ.
μνλ§ν λ°μ΄ν°λ₯Ό X, yλ‘ train-test(+validation) μ
μΌλ‘ λλ μ€
μνλ§μ μ¬μ©νμ§ μκ³ λ°μ΄ν°λ₯Ό λλ νμ΅νμ λμ λΉκ΅ν΄μ
f1_score, precision, recall κ°μ΄ λͺ¨λ λμμ§
μ λ΅ ν΄λμ€κ° λΆκ· ννλ©΄ νμ΅μ μ λλ‘ νκΈ° μ΄λ ΅κΈ° λλ¬Έμ μ€λ²μνλ§μ΄λ μΈλμνλ§μΌλ‘ μ λ΅ ν΄λμ€λ₯Ό λΉμ·νκ² λ§λ€μ΄ μ£Όλ©΄ μ’ λ λμ μ±λ₯μ λ
λ₯λ¬λ κΈ°μ΄
λ¨Έμ λ¬λ : μΈκ°μ΄ μ§μ νΉμ§μ λμΆν μ μκ² μ€κ³ν΄μ μμΈ‘κ° μΆλ ₯
λ₯λ¬λ : μΈκ³΅μ§λ₯ μ€μ€λ‘ μΌμ λ²μ£Όμ λ°μ΄ν°λ₯Ό λ°νμΌλ‘ 곡ν΅λ νΉμ§μ λμΆνκ³ , κ·Έ νΉμ§μΌλ‘ μμΈ‘κ° μΆλ ₯
κΈ°μΈκΈ° μμ€μ μμ ν κ³Όμ μμ λ°μνλ λ¬Έμ . μμ νλ λ₯λ¬λ νμ΅κ³Όμ μ€ μΌλΆμ. λ€μΈ΅ νΌμ
νΈλ‘ νμ΅μ μ¬μ©λλ ν΅κ³μ κΈ°λ²
μμ ν κ³Όμ μ κ²μ°κ³Όμ μ΄λΌκ³ μκ°νκΈ°. μμ ν λ μ μ©ν νμ±νν¨μμ κ²°κ³Όλ₯Ό κ²μ°νμ¬ μ€μ°¨λ₯Ό μ€μ¬μ£Όλ κ³Όμ μ΄κΈ° λλ¬Έμ μμ ν κ³Όμ μμλ λ°λ‘ νμ±νν¨μλ₯Ό μ¬μ©νλ κ³Όμ μ΄ μλ
μ€μ°¨λ₯Ό μ΅μννκΈ° μν μμ ν κ³Όμ μμ λ―ΈλΆ κΈ°λ²μ μ΄μ©νκ² λ¨. νμ§λ§ νμ±νν¨μλ₯Ό sigmoidμ tanh ν¨μλ‘ μ€μ νκ² λλ©΄ μ΄ λ―ΈλΆκ³Όμ μμ κΈ°μΈκΈ°κ° 0μΌλ‘ μλ ΄νκ² λ¨. λ°λΌμ μ μ κΈ°μΈκΈ°κ° μ¬λΌμ§κ³ μ΄μ λ°λ₯Έ κ°μ€μΉμ νΈν₯ λμΆμ΄ μ΄λ €μμ§λ λ¬Έμ κ° λ°μν¨
- μμ ν -> Inputμ λ°κ³ λ€μμ hidden layerμμ νμ±νν¨μ μ μ©μ ν΅νμ¬ outputμ μΆλ ₯νλ κ³Όμ
- μμ ν -> μμ ν κ³Όμ μμ μΆλ ₯ν κ²°κ³Όμ μ λ΅κ°μ μ€μ°¨λ₯Ό μΈ‘μ νμ¬ κ·Έ μ€μ°¨μ κ°μ μ΅μννκΈ° μν κ³Όμ
π€λ¨μΈ΅ νΌμ
νΈλ‘ μΌλ‘ ꡬννμ§ λͺ»νλ λ
Όλ¦¬νλ‘?
- XOR κ²μ΄νΈ
π€XOR λ¬Έμ λ₯Ό ν΄κ²°ν λ°©λ²?
πμ€λμ νκ³
- μ¬μ€(Fact) : μ μ©μΉ΄λκ±°λλ°μ΄ν°λ‘ μ΄μ§λΆλ₯νκ°μ§ν μ€μ΅κ³Ό μ±λ₯ν₯μμ μν μνλ§λ°©λ², μμ ν, μμ ν, μμ€ν¨μλ₯Ό ν¬ν¨ν λ₯λ¬λ κΈ°μ΄κ°λ
μ λ°°μ λ€
- λλ(Feeling) : λ₯λ¬λ κΈ°μ΄ κ°λ
μ μμ΄ λ°©λν κ² κ°λ€.
- κ΅ν(Finding) : κΈ°μ΄ κ°λ
μ νμ€νκ² μ΄ν΄ν΄λ³΄μ.