I want to know if this problem can/should be solved using machine learning? If I can and I should, what resources or next steps should I take ? Which approach seems to fit ?
There are 500,000 buildings, and at any given moment there could be anywhere from 0 to 10 people in a building. There is a population of 10,000,000 people. The people can come and go from the buildings as they please, but certain people will typically be at certain buildings at certain times (certain hour ranges, certain days of the week). A given person can be in 0 or 1 building at any given time, where ~95% of the time they will not be in a building.
There exists a mechanism which can identify all the people in a building and log the occupants at that moment. The log history can be examined, and given two snapshots in time, it can be identified which people have left and which have entered (and likewise remained). The change in the number of people (left+entered) from the previous snapshot shall be called the churn. The act of searching a building costs time
Maximize the rate of identifying the buildings of as much of the population as possible.
Once I get a good model with this limited information I would like to include more parameters/variables such as a buildings public rating. What language is spoken at the building, etc.
I believe re-enforcement learning may be applicable here because the churn is the reward and the search is the punishment. Imagine a building that almost never has people in it, scanning the building and finding no difference (0 people before, 0 people after) is costly. Scanning a popular building (always 10 people) but the occupants never change is almost as bad as scanning a building that typically never has people because the amount of population covered is either 0 or 10. However, scanning a popular building with high churn will yield more information about the whereabouts of more of the population through time. Just as important is the frequency of scanning the same building, because if you scan a building over and over within a minute, not much churn will have occurred.
If I was to solve this programmatically, perhaps I would assign a scanning cool down value to each building. Each buildings cool down would decrease through time and once it hit 0 or below, it would be suitable for re-scan. Re-scanning would reset it's cool down to its "delta cooldown". I would need to know some good min/max/avg cool down delta, such that buildings that had high churn would approach the minimum cooldown delta (so they are scanned more frequently) and buildings with little churn would approach the maximum cooldown (scanned less often, but probably not never again). I don't feel like this is the best approach and it's not exactly easy. I could probably think about this longer and come up with something, but in reality I want an excuse to learn more about machine learning.
I think approach would focus on the buildings with the highest churn and not have much new "discovery". This is especially true for my programmatic approach. Consider a building that gets scanned initially 10 times and every time had no churn. Over the course of time it may get popular (or have some sort of seasonality to it) that it never gets picked up because the algorithm is too busy focusing on previously scanned high churn rooms. I think this concern might be alleviated just by having a programmatic/random portion which adds data back in some % of the time, or alternatively give the machine learning a short memory time span.
I just spent all this time typing this up and I realized this is basically a search crawling problem, figuring out which sites to crawl and how often. Hopefully that will direct me in numerous approaches that are simple enough (I just need something basic that will probably be better than a programmatic approach)