But also want to know the strategy to make some differences (a.k.a. modify the sample)
When applying a classifier,
sometimes we not only just want to know whether a sample belongs to a class
Given us a classifier C(⋅), and an n-features vector X={x1,x2,...,xn}
The object is to find another X′ so that X′=argX′maxC(X′)
RF is C(X)=t=1∑Tλtft(X) here fi(⋅) is a tree in the forest.
idea: consider it to be a MIP problem
Let leaves(t) be the set of leaves or terminal nodes of tree t.
Let splits(t) denote the set of splits of tree t (non-terminal nodes).
Let left(s) be the set of leaves that are accessible from the left branch, and same as the right(s)
let V(s)∈{1,...,n} denote the variable that participates in split s,
and let C(s) denote the set of values of variable i that participate in the split query of s.
x,ymaxt=1∑Tℓ∈leaves(t)∑λt⋅pt,ℓ⋅yt,ℓ
xi,j indicates that if a feature Xi fulfills the predicate of that node, i.e. Xi falls into left branch of the tree
Trick kicks in!
Ω={(t,s)∣t∈{1,...,T},s∈splits(t)}
Where Z is the objective value