Я делаю сегментацию клиентов, у каждого клиента есть 3 атрибута X, Y и Z. Основываясь на значениях этих 3 атрибутов, я делю их на 6 групп, скажем, A - F.
X Y Z Group
John D. 300 35 1000 A
Adam S. 230 40 2500 B
Will Y. 500 55 3000 C
Тогда я считаю количество клиентов, попадающих в каждую группу:
n(A) n(B) n(C) n(D) n(E) n(F)
5 5 20 30 20 20
Вот как я классифицирую клиентов на основе 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
Так вот как я начинаю с x1, x2, ... чтобы получить n (A), n (B), n (C) ...
Что я хочу сделать, это работать в обратном направлении от n (A), n (B), n (C), ..., n (F), чтобы получить x1, x2, y1, y2, z1, z2. (Изменяя только числа, правила группировки в таблице остаются без изменений.)
Я даже не уверен, с какой проблемой я имею дело. Я думал, что это линейное программирование, но я не мог сформулировать проблему.
Есть идеи, как мне решить эту проблему, в R или любом другом программном обеспечении?