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?

What you're encountering is a pretty common issue.
Fortunately, you have a very good size dataset (380K rows), so even though curse of dimensionality applies, I think you might be able to get away with actually not putting that much effort into transforming your data. Have you tried just one-hot encoding it and seeing what happens? Also - did you mention one-hot encoding because you're using a neural network? Have you tried not one-hot encoding and using RandomForest?
This is not perfect, but I would recommend using your subject matter expertise (and knowledge of the data) to slightly reduce the dimensionality by grouping the data together a bit.
As a side note, you said "So, I wish to transform high cardinal variable without using any encoding approach". Someone should please correct me if I'm wrong, but I think that's impossible, by definition. If you're transforming it (esp. in a way that changes dimensionality or representation, you are by definition encoding it).

*

*Try just using the segment field instead of product (I know you said you think it's really the product, but just give it a try. See if the results you get are good enough). If not..


*Try using the product field as is in a RandomForest model (no encoding) and remove the segment field (it probably wouldn't add much value on top of the specific product, right?)


*Look at the frequency distribution of your product purchases. It'll probably be some kind of exponentially decaying distribution, where there are some products that account for hugely disproportionate fractions of all purchases (one product accounting for 5% of all purchases because it's so popular), and others that barely ever get purchased. Find what you think is an appropriate cutoff (for example, maybe you say if a product hasn't ever been purchased more than X times) you throw all of those into an "Other" bucket. This will probably be some combination of you trying different thresholds + reasonable deduction. If your dataset is 380K and you have a product purchased 5 or 10 times, your model probably won't be able to figure out anything useful about that specific product. So now, your "product" field becomes, for example, your top 100 products + one "Other" category that is everything else. See if this starts to give you any kind of result.
