I am doing customer segmentation, each customer has 3 attributes X, Y and Z. Based on the values of these 3 attributes, I separate them into 6 groups, say A - F.
X Y Z Group
John D. 300 35 1000 A
Adam S. 230 40 2500 B
Will Y. 500 55 3000 C
Then I count the number of customers falling into each group:
n(A) n(B) n(C) n(D) n(E) n(F)
5 5 20 30 20 20
Here is how I classify the customers based on x1, x2, y1, y2, z1, z2:
X Y Z Group
>x1 and <=x2 <=y1 >z2 A
>x2 <=y1 >=0 A
<=x1 <=y1 >z2 B
>x1 and <=x2 <=y1 <=z2 B
>x1 and <=x2 >y1 and <=y2 >z2 C
>x2 >y1 and <=y2 >=0 C
<=x1 <=y1 <=z2 D
<=x1 >y1 and <=y2 >=0 D
>x1 and <=x2 >y1 and <=y2 <=z2 D
>x1 and <=x2 >y2 >z2 E
>x2 >y2 >=0 E
<=x1 >y2 >=0 F
>x1 and <=x2 >y2 <=z2 F
So that’s how I start from x1, x2,... to get n(A), n(B), n(C)...
What I want to do is to work backward from n(A), n(B), n(C), ..., n(F) to get x1, x2, y1, y2, z1, z2. (By changing only the numbers, the grouping rules in the table remain unchanged.)
I'm not even sure what type of problem I'm dealing with. I thought it was linear programming but I couldn't seem to formulate the problem.
Any ideas how I can solve this problem?