tgoop.com/smalldatascience/815
Create:
Last Update:
Last Update:
#термин
Есть некоторые простые понятия ML, которые мало кто знает, поскольку их нет в стандартных курсах. Например, в теме решающие деревья (Decision Trees) редко рассказывают про суррогатные расщепления (Surrogate Splits), а это очень эффективный приём обработки пропусков... Суть очень простая, пусть при построении дерева в некоторой ветке мы дошли до такой подвыборки
A B C Y=targetЗдесь напрашивается сделать расщепление A > 2.5, но не понятно, в какое поддерево класть последние два объекта. Есть стандартные стратегии:
0 ? 0 0
1 5 1 0
2 ? 0 0
3 8 1 1
? 7 1 1
? 7 1 1
- положить в обе ветви дерева (не очень выгодно при большом числе пропусков и долгая работа алгоритма),
- выбрать наиболее подходящую ветвь дерева, в данном случае ту, куда попал объект с меткой 1 (но тут мы «уравниваем» объекты с пропуском),
- для неизвестных значений применить другое "запасное" расщепление, которое и называется суррогатным.
Нетрудно заметить, что расщепление B > 6 на объектах с известными значениями признаков совпадает с исходным, при этом определено для тех объектов, у которых были неизвестны значения признака A.
Теперь, если Вы пользователь R, понимаете, что выводит код
tm <- rpart(Y ~ weight + height, data = tmp_df, control = rpart.control(minsplit =1, minbucket=1, cp=0, maxdepth = 1))
summary(tm)
Primary splits:
weight < 5.5 to the left, improve=4.444444, (1 missing)
height < 4.5 to the left, improve=3.333333, (0 missing)
Surrogate splits:
height < 3.5 to the left, agree=0.889, adj=0.75, (1 split)
BY Small Data Science for Russian Adventurers
Share with your friend now:
tgoop.com/smalldatascience/815