What model to use for predicting future expenses of an individual? I am currently working on a Personal Finance application, which tracks expenses of a person. When entering an expense entry, the user selects the category of the transaction (e.g. 'Bills', 'Food', 'Clothing', 'Entertainment', etc).
Using the existing expense data, I want to be predict how much a person will spend in the future (i.e. next month). In order to achieve this, I inted to use BigML, because of it's easy to use API.
My question is, what is the best way to model the data source provided to BigML
I am thinking about grouping the expenses by Year, Month and Expense_Category, such that the data source will contain the following columns (amount is the column I intend to predict, obviously):


*

*expense-year

*expense-month 

*expense-category

*amount 


However, I am certain my approach can be improved. Please take into consideration that I am pretty new to the field of Machine Learning, this is why I chose to use an API for generating my predictions.
 A: You can model this in multiple ways. Assume that expenses in different categories will influence each other and the expenses in each category will depend on the total amount to spend. Thus each user has a total amount to spend every month (total_expenses_next_month). This amount will follow a specific trend that is the first thing you should predict. You can aggregate your data to create predictors such as:


*

*total_expenses_3_month_ago (amount)

*total_expenses_2_month_ago (amount)

*total_expenses_1_month_ago (amount)

*total_expenses_current_month (amount)

*expense_shock (total_expenses_current_month - avg_expenses_last_3_month) / std_expenses_last_3_month (speed of change) 

*total_expenses_next_month (amount)


and then use an ensemble or logistic regressor. 
If you also know the user's income. You can also add features such as total_income_3_month_ago, etc and the corresponding ratios expenses / income. 
Once you can decently predict 'total_expenses_next_month', you can start predicting for each category following a similar strategy or just using the ratio that it represents over the total expenses.  For example, for food:


*

*food_expenses_3_month_ago (%)

*food_expenses_2_month_ago (%)

*food_expenses_1_month_ago (%)

*food_expenses_current_month (%)

*expense_shock (total_expenses_current_month - avg_expenses_last_3_month) / std_expenses_last_3_month  (speed of change)

*total_expenses_next_month (%)


and create a new ensemble or logistic regressor for each category. 
You can also assume that depending on the month, the expenses on different categories might fluctuate. So can also addd current_month to the mix. 


*

*current_month (1..12)


If you repeat this for all the categories, you might end up having percentages that do not add 100%, but you can always relativize them.
You can also cluster users that follow a similar expense structure and use data across multiple users to generalize better. 
If you already have some data (a few months for multiple users for multiple categories), you just give it a try and see what the performance is before trying to develop any more complicated approach. 
