{'F1': nan,
'MCC Binary': nan,
'Log Loss Binary': 93.29789549298991,
'AUC': 58.36492736629537,
'Precision': nan,
'Balanced Accuracy Binary': 63.46659876071641,
'Accuracy Binary': 12.876088314169193}
evalml
μμ μ΄ λ¬Έμ λ₯Ό μ¬ννλ Jupyter λ
ΈνΈλΆμ λ§λ€κ³ Slackμ μ€λ λμ κ΄λ ¨ λ°μ΄ν° νμΌκ³Ό ν¨κ» 첨λΆνμ΅λλ€.
μ¬μκΈ°
import evalml
import pandas as pd
X = pd.read_csv('~/Downloads/fraud_500_data.csv').drop(['id', 'expiration_date'], axis=1)
y = X.pop('fraud')
automl = evalml.automl.AutoMLSearch(problem_type="binary", objective="f1")
automl.search(X, y)
# note that all percent_better_than_baseline values are nan in the rankings table
print(automl.rankings)
# can also check the scores of any pipeline other than the baseline pipeline, which should have id 0
print(automl.results['pipeline_results'][1]['percent_better_than_baseline_all_objectives'])
λ°μ΄ν°μΈνΈλ μ¬κΈ°
@dsherry @rpeck λ² μ΄μ€λΌμΈ νμ΄νλΌμΈμ΄ NaN( F1
, MCCBinary
, Precision
)μ μ¬μ©νμ¬ λͺ©νμμ 0μ μ λ°κΈ° λλ¬Έμ μ΄λ μμλ λμμ
λλ€. μ΄ λ°©λ²μμ 0μΌλ‘ λλκΈ°λ₯Ό 무νλ λλ μμμΌλ‘ μ€μ νλ κ²μ λν λ
Όμκ° μμμ§λ§ κΈ°μ€μ μ΄ λͺ¨λ λͺ©νμμ κ°λ₯ν μ΅μ
μ μ μλ₯Ό κΈ°λ‘νλ©΄ "νΌμΌνΈ λ μ’μ"μ λΉκ΅νκΈ° λλ¬Έμ NaNλ³΄λ€ λ λ«λ€κ³ κ²°μ ν μ μ΄ μμ΅λλ€. λͺ©μ μ κ·Έλ€μ§ μ’μ§ μμΌλ©° None, NaN λλ 무νλλ‘ μ λ¬ν μ μμ΅λλ€.
μ¦, NaNλ³΄λ€ μ΄λ¬ν μ΅μ μ€ νλλ₯Ό μ νν΄μΌ νλ λ€λ₯Έ μ΄μ κ° μμ μ μμ΅λλ€!
@freddyaboulton μ, λ§μ΄ λλ€μ! κΈ°μ€μ΄ 0μΈ λͺ©νλ₯Ό 건λλ°λλ‘ ν μ€νΈλ₯Ό λ³κ²½νκ² μ΅λλ€. κ°μ¬ν©λλ€!
@freddyaboulton κ°μ¬ν©λλ€! @rpeck μ΄μ λΉμ μ΄ λμκ² κ·Έκ²μ λν΄ λ¬Όμμ λ λ΄κ° μ΄κ²μ μ‘μ§ λͺ»ν΄μ μ£μ‘ν©λλ€.
μ΄ λ¬Έμ λ₯Ό ν λ‘ ν μ μλλ‘ μ΄μ΄ λ‘λλ€. μ΄ κ²½μ° λμμ λ³κ²½ν΄μΌ ν©λκΉ?
@freddyaboulton λ°λΌμ F1, MCCBinary λ° Precisionμ λͺ¨λ ν¬λ©΄ ν΄μλ‘ μ’μΌλ©° [-1, 1](corr) λλ [0, 1] λ²μλ‘ μ νλ©λλ€. pct κ°μ implμ λ³κ²½νμ¬ 0κ³Όμ μ λ μ°¨μ΄λ₯Ό κ³μ°νκ³ μ΄λ₯Ό pct κ°μ μΌλ‘ μ¬μ©ν μ μμ΅λκΉ? κ·Έλ¦¬κ³ κ·Έκ²μ΄ νμ¬ μ°λ¦¬κ° νκ³ μλ μΌμ΄λΌλ©΄ κΈ°μ€μ μ΄ 0μΈ κ²½μ° ν΄λΉ μ§νμ λν΄ nan
pct κ°μ μ΄ λ°μνμ§ μμ κ²μ
λλ€.
@dsherry μ°λ¦¬λ μ€κ³ λ¨κ³μμ [0, 1] κ²½κ³μ λͺ©νμ λν μ λμ°¨ κ³μ°μ μ μνμ§λ§ λ κ°μ§ λ€λ₯Έ κ³μ°μ΄ νΌλμ€λ¬μΈ κ²μ΄λΌκ³ κ²°μ νμ΅λλ€. μ¦, λ² μ΄μ€λΌμΈ νμ΄νλΌμΈμ΄ ν΄λΉ λͺ©νμμ κ±°μ 0μ μ λ°λλ‘ μ€κ³λμλ€λ μ μ κ°μν λ μ¬κ³ ν΄μΌ ν μλ μμ΅λλ€. μ°λ¦¬κ° μ²μ κ·Έ κ²°μ μ λ΄λ Έμ λ μ°λ¦¬λ 1μ°¨ λͺ©ν(νκ·λ₯Ό μ μΈνκ³ μ΄λ¬ν μ νλ λͺ©ν μ€ νλκ° μλ)μ λν΄ λ λμ λ°±λΆμ¨μ κ³μ°νκ³ μμλ€λ μ μ μ£Όλͺ©ν κ°μΉκ° μμ΅λλ€.
μ λ μ°¨μ΄λ₯Ό κ³μ°νλ κ²½μ°μλ Nan/None/inf λλκΈ° λμμ λ³κ²½νλ κ²μ κ³ λ €ν μ μμ΅λλ€. ν κ°μ§ ν₯λ―Έλ‘μ΄ μ¬λ‘λ R2
μ
λλ€. λλΆλΆμ κ²½μ° [0, 1]μ΄μ§λ§ κΈ°μ μ μΌλ‘λ (-inf, 1]μ΄κΈ° λλ¬Έμ
λλ€. λ°λΌμ μ λ μ°¨μ΄λ₯Ό κ³μ°νλ κ²μ μνμ μΌλ‘ 건μ νμ§ μμ μ μμ§λ§ νκ·μ κΈ°λ³Έ λͺ©νμ΄κΈ° λλ¬Έμ , μ°λ¦¬λ λ§μ κΈ°μ€μ μ΄ 0μ μ λ°μ κ²μΌλ‘ μμν΄μΌ ν©λλ€.
μμ½νμλ©΄, μ°λ¦¬κ° λ§λ€ μ μλ λ κ°μ§ λ 립μ μΈ λ³κ²½ μ¬νμ΄ μμ΄ λ€ κ°μ§ κ°λ₯ν κ²°κ³Όλ₯Ό μ»μ μ μμ΅λλ€.
0μΌλ‘ λλ λ NaNμ λ°ννλ κ²μ μ νΈνμ§λ§ NaNμ λ³Ό λ μ¬μ©μμ μ§κ° λ°μμ automlμμ 무μΈκ°κ° κ³ μ₯λ κ²μΌλ‘ κ°μ νλ κ²μ΄μμ΅λλ€. infλ₯Ό λ°ννλ©΄ μ무 κ²λ μμλμ§ μμμΌλ©° νμ΄νλΌμΈμ΄ μ€μ λ‘ κΈ°μ€μ λ³΄λ€ λ«λ€λ κ²μ λ λͺ ννκ² μ μ μλ€κ³ μκ°ν©λλ€.
κ·Έλ¬λ©΄ μ΅μ 2μ 4κ° λ¨μ΅λλ€.
"νΌμΌνΈ ν₯μ"μ λν΄ λ κ°μ§ λ€λ₯Έ κ³μ°μ μ¬μ©νλ©΄ κ° νμ΄νλΌμΈμ λν΄ μ€μ λ‘ κ³μ°λλ λ΄μ©μ μ¬μ©μμκ² μ λ¬νκΈ°κ° λ μ΄λ €μμ§ κ²μ΄λΌκ³ μκ°ν©λλ€. μ¦, μ°λ¦¬μ λ² μ΄μ€λΌμΈ νμ΄νλΌμΈμ νΉν λΆκ· ν λ¬Έμ (λͺ¨λλ₯Ό μμΈ‘ν¨)μμ λ§μ λͺ©ν(R2, F1, MCC)μ λν΄ 0μ μ μ»λλ‘ μ€κ³λμμ΅λλ€. λͺ¨λ νμ΄νλΌμΈμ΄ κΈ°μ€μ λ³΄λ€ "무ν" λ λμ κ²μ΄κΈ° λλ¬Έμ "νΌμΌνΈ ν₯μ" κΈ°λ₯μ΄ κ°μ₯ νμ€μ μΈ λ¬Έμ μ κ·Έλ€μ§ μ μ©νμ§ μκ² λ§λλλ€.
λλ μ΅μ 4μ λν΄ 55%, μ΅μ 2μ λν΄ 45%λ₯Ό κΈ°λνκ³ μλ€κ³ μκ°νμ§λ§ λ³κ²½νκΈ° μ μ λ€λ₯Έ κ΄μ μ λ£κ³ μΆμ΅λλ€!
μ€λ μ€ν λμ μμ μ°λ¦¬λ "κΈ°μ€λ³΄λ€ λμ pct" λμμ μ λ°μ΄νΈν μκ°μ κ²°μ νμ΅λλ€. μμ μ΅μ 2μ 4λ₯Ό μ¬μ©ν©λλ€.
nan
inf
λ₯Ό λ°νν©λλ€.@freddyaboulton μ΄κ²μ΄ μ°λ¦¬κ° λ Όμν κ²κ³Ό μΌμΉν©λκΉ?
μ’λ€. :-)
μΆκ°: λλ κ·Έ κ²°μ μ λμν©λλ€. IMO, λ©νΈλ¦μ΄ [보ν΅, μ μ΄λ] 0..1μ΄λ©΄ 0μμ 0.2λ‘ μ΄λνλ©΄ μνμ μΌλ‘λ κ·Έλ μ§ μλλΌλ 20% κ°μ μ²λΌ λκ»΄μ§λλ€. μ΄λ€ λ©΄μμ μ΄κ²μ μλμ log
λ₯Ό μ·¨νμ§λ§ 0μ log
λ₯Ό μ·¨νμ§ μλλ‘ λ¨Όμ 1μ μΆκ°νλ λͺ¨λ 곡μμ μκ°λκ² ν©λλ€. :slightly_smiling_face:
κ°μ₯ μ μ©ν λκΈ
μ’λ€. :-)