श्रेणीबद्ध वैरिएबल्स का One-Hot-Encoding

R में Supervised Learning: Regression

Nina Zumel and John Mount

Win-Vector, LLC

श्रेणीबद्ध मानों को मैन्युअल रूप से क्यों बदलें?

  • ज़्यादातर R फंक्शंस यह रूपांतरण खुद कर देते हैं
    • model.matrix()
  • xgboost() नहीं करता
    • श्रेणीबद्ध वैरिएबल्स को संख्यात्मक रूप में बदलना होगा
  • इंडिकेटर्स में बदलना: one-hot encoding
R में Supervised Learning: Regression

`vtreat` से one-hot-encoding और डेटा क्लीनिंग

मूल विचार:

  • ट्रेनिंग डेटा से treatment plan बनाने के लिए designTreatmentsZ(), फिर
  • "clean" डेटा बनाने के लिए prepare()
    • सब कुछ numerical
    • कोई missing values नहीं
      • भविष्य के सभी डेटा पर treatment plan के साथ prepare() का ही उपयोग करें
R में Supervised Learning: Regression

एक छोटा vtreat उदाहरण

Training Data

x u y
one 44 0.4855671
two 24 1.3683726
three 66 2.0352837
two 22 1.6396267

Test Data

x u y
one 5 2.6488148
three 12 1.5012938
one 56 0.1993731
two 28 1.2778516
R में Supervised Learning: Regression

Treatment Plan बनाएँ

vars <- c("x", "u")
treatplan <- designTreatmentsZ(dframe, varslist, verbose = FALSE)

designTreatmentsZ() के इनपुट

  • dframe: training data
  • varlist: इनपुट वैरिएबल नामों की सूची
  • progress संदेश दबाने के लिए verbose = FALSE सेट करें
R में Supervised Learning: Regression

नए वैरिएबल्स प्राप्त करें

scoreFrame वैरिएबल mapping और प्रकार बताता है

(scoreFrame <- treatplan$scoreFrame %>% 
     select(varName, origName, code))
        varName origName  code
1   x_lev_x.one        x   lev
2 x_lev_x.three        x   lev
3   x_lev_x.two        x   lev
4        x_catP        x  catP
5       u_clean        u clean

नए lev और clean वैरिएबल्स के नाम लें

(newvars <- scoreFrame %>% 
     filter(code %in% c("clean", "lev")) %>%
     use_series(varName))
"x_lev_x.one"   "x_lev_x.three" "x_lev_x.two"   "u_clean"
R में Supervised Learning: Regression

मॉडलिंग के लिए Training Data तैयार करें

training.treat <- prepare(treatmentplan, dframe, varRestriction = newvars)

prepare() के इनपुट:

  • treatmentplan: treatment plan
  • dframe: data frame
  • varRestriction: तैयार करने वाले वैरिएबल्स की सूची (वैकल्पिक)
    • default: सभी वैरिएबल्स तैयार करें
R में Supervised Learning: Regression

डाटा ट्रीटमेंट से पहले और बाद

Training Data

x u y
one 44 0.4855671
two 24 1.3683726
three 66 2.0352837
two 22 1.6396267

Treated Training Data

x_lev _x. one x_lev _x. three x_lev _x. two u_clean
1 0 0 44
0 0 1 24
0 1 0 66
0 0 1 22
R में Supervised Learning: Regression

मॉडल लागू करने से पहले Test Data तैयार करें

(test.treat <- prepare(treatplan, test, varRestriction = newvars))
  x_lev_x.one x_lev_x.three x_lev_x.two u_clean
1           1             0           0       5
2           0             1           0      12
3           1             0           0      56
4           0             0           1      28
R में Supervised Learning: Regression

vtreat ट्रीटमेंट है Robust

पहले न दिखा x स्तर: four

x u y
one 4 0.2331301
two 14 1.9331760
three 66 3.1251029
four 25 4.0332491

four (0, 0, 0) में encode होता है

prepare(treatplan, toomany, ...)
x_lev _x. one x_lev _x. three x_lev _x. two u_clean
1 0 0 4
0 0 1 14
0 1 0 66
0 0 0 25
R में Supervised Learning: Regression

अभ्यास करते हैं!

R में Supervised Learning: Regression

Preparing Video For Download...