Without encoding, how can we solve high cardinality issue? I already referred the posts here but this question is different. I don't wish to use categorical encoding. details given below
I have a dataset of 3000 unique customers purchase data. The dataset size is 380276.
I am working on a binary classification. The purchase data includes info on the below items
a) Name of the product (there are more than 1000 unique products)
b) segment to which the product belong to (there are 121 unique segments)
c) brokers who sold the product to customer (there are around 30 brokers)
d) Which country the customer belong to (there are more than 30 countries)
So, now I understand that one-hot encoding is not applicable (due to curse of dimensionality) and I don't wish to use hash-encoding (interpretability issue), label/ordinal encoding (imposes a rank order), target encoding (data leakage issue) etc.
So, I wish to transform high cardinal variable without using any encoding approach
In my dataset, a customer can have 300-400 transactions and they might have bought same product 400 times or 400 unique product (in 400 transactions).
Similarly, under a single product segment, there are multiple products. Of course, the level of cardinality of segment is less than products.
but what we think majorly drives the outcome is product. So, we wish to know whether a customer buying a specific product makes him a likely to stay with us or not. I don't know how can I reduce the cardinality of this product field
For ex: We have info on frequently purchased product by the customer. For instance, I know that customer A bought product A 60% of time and product B 20% of time and product C,D,E,F for 5% of the time. Not sure whether this qualifies as data leakage. Because,  I am able to look back at the historical data now and compute the products that are bought most hy the customer.
Do you think knowing this, can help us reduce the cardinality of product variable for each customer? For ex: Can I create a column called Top product purchased for each customer? and Top 2 product purchased for each customer?
Can help me with the above?


So, now I understand that one-hot encoding is not applicable (due to curse of dimensionality)

That is not true. The curse of dimensionality is a problem for some algorithms, but it doesn't mean that you can't use data with many columns. You need to deal with it, for example, by using regularization. In many real-life data problems, you would have the number of columns as high or higher than in your case, for example in recommender systems (all users, all movies on Netflix) or natural language processing (all the words in the vocabulary). In cases like this, you have specialized models that deal with such data and technological solutions to deal with problems like high memory consumption (e.g. using sparse matrices). See One-hot-encoding gives untractable amount of classes for more details.

and I don't wish to use hash-encoding (interpretability issue),

Hashed representations are harder to interpret but not impossible to interpret. What it does is just randomly merge some categories to the same bins, so you have the OR relationship within the bin.

label/ordinal encoding (imposes a rank order),

Correct, it would not work here.

target encoding (data leakage issue) etc.

Data leakage would be a problem only if you implemented it incorrectly. If it always lead to leakage it won't be ever used, while it is used quite successively.

So, I wish to transform high cardinal variable without using any encoding approach.

You can't send the data to an algorithm "without representation". Every algorithm expects the data encoded as numbers (maybe except for tree-based models). Even for the algorithms that take as input "raw" data and do the feature engineering by themselves like neural networks you need to encode the data (images are numerical tensors, natural language data is words encoded somehow, etc). Even if instead of providing the data as one-hot columns, but "as is" to the algorithm, it would need to have something like separate weight per each category, or separate IF statement, etc so internally the representation of the data would be equally big as when it used as input a one-hot matrix because the model would need to know how it should react to every one of the categories. "No representation" at best means that the representation is learned by the algorithm, so skipping this step doesn't solve any problem, just makes life harder for your algorithm.
