[scikit-learn] A necessary feature for Decision trees

Julio Antonio Soto de Vicente julio at esbet.es
Thu Jan 4 10:02:48 EST 2018


Hi Yang Li,

I have to agree with you. Bitset and/or one hot encoding are just hacks which should not be necessary for decision tree learners.

There is some WIP on an implementation for natural handling of categorical features in trees: please take a look at https://github.com/scikit-learn/scikit-learn/pull/4899

Cheers!

--
Julio

> El 4 ene 2018, a las 9:06, 李扬 <sky188133882 at 163.com> escribió:
> 
> Dear J.B.,
> 
> Thanks for your advice!
> 
> Yeah, I have considered using bitstring or sequence number, but the problem is the algorithm not the representation of categorical data.
> Take the regression tree as an example, the algorithm in sklearn find a split value of the feature, and find the best split by computing the minimal impurity of child nodes.
> However, find a split of the categorical feature is not that meaningful even though u represent it as continuous value, and the split result is partially depends on how u permute the value in categorical  feature, which is not very persuasive.
> Instead, in the CART algorithm, u should separate each category in the feature from others and compute the impurity of the two sets. Then find the best separation strategy with the minimal impurity.
> Obviously, this separation process can`t be finished by current algorithm which simply use the split method on continuous value.
> 
> One more possible shortcoming is the categorical feature can`t be properly visualized. when forming a tree graph, it`s hard to get information from the categorical feature node while u just split it.
> 
> Thank you for your time!
> Best wishes.
> 
> 
> 
> 
> --
> 顺颂时祺!
> 
> 
> 李扬 
> 上海交通大学  电子信息 与 电气工程 学院  
> 电话:18818212371
> 地址:上海市闵行区东川路800号
> 邮编:200240
> 
> Yang Li  +86 188 1821 2371
> Shanghai Jiao Tong University
> School of Electronic,Information and Electrical Engineering F1203026
> 800 Dongchuan Road, Minhang District, Shanghai 200240
> 
> 
>  
> 
> At 2018-01-04 15:30:34, "Brown J.B. via scikit-learn" <scikit-learn at python.org> wrote:
> Dear Yang Li,
> 
> > Neither the classificationTree nor the regressionTree supports categorical feature. That means the Decision trees model can only accept continuous feature. 
> 
> Consider either manually encoding your categories in bitstrings (e.g., "Facebook" = 001, "Twitter" = 010, "Google" = 100), or using OneHotEncoder to do the same thing for you automatically.
> 
> Cheers,
> J.B.
> 
> 
>  
> 
> _______________________________________________
> scikit-learn mailing list
> scikit-learn at python.org
> https://mail.python.org/mailman/listinfo/scikit-learn
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/scikit-learn/attachments/20180104/c8484ed7/attachment-0001.html>


More information about the scikit-learn mailing list