I am working with tabular data that is similar to the below:
|Name||Phone Number||ISO3 Country||Amount||...||...||Outcome||Possible Reason|
|Leona Sunfurry||(555)-555-5555||United States||58.96||[email protected]||...||...||0||Not ISO3 country|
|Diana Moonglory||(333)-555-5555||USA||8.32||[email protected]||...||...||1|
|Darius Guy||12345678901234||CAN||555.01||null||...||...||0||Too many digits in phone|
|LULU||(333)-555-5555||CAN||0.00||null||...||...||0||Odd name format|
|Eve K.||(111)-555-5555||FRA||69.25||[email protected]||...||...||1|
|Lux D.||(333)-555-5555||USA||11.64||[email protected]||...||...||1|
|Jarvin Crown||(333)-555-5555||USA||1357.13||[email protected]||...||...||0||Unknown reason|
The table contains information about users. Some of the fields are user-generated while others are generated by the program (like device location, amount, etc.). When this data is collected, it is sent to third parties (we will say a bank). Sometimes the bank rejects the data and it is not good for our users. The rejection could have happened because the user did not input the data correctly or the banks did not like how a field is formatted despite the data being correct and acceptable to other banks.
So we want to find the fields that are causing the most errors and how to fix the issue.
Does it make sense to do pattern recognition on the values to find the reason why the row was rejected? It would need to be an alpha-numeric type of algorithm, it seems.
We know the outcomes from the bank which is labeled as
Outcome. Although we have labeled data, it still feels like we need an unsupervised learning algorithm because we do not have labels on why the rows of data were rejected.
Does anyone know what type of algorithm would be best? Any feedback would be appreciated!