Case based reasoning (CBR) is a a new method which might looks quite similar to previous rule based examples we have seen previously but has a few key differences.
CBR takes past experiences and categorises them as cases and uses them to solve future problems. The scope of these cases varies from implementation to implementation but they mostly contained the initial problem and the past solution. These past cases can be changed if needed and as such the CBR system maintains an accurate working memory that it uses to tackle problems with which increases in accuracy as time passes.
Unlike rule-induction algorithms which make their training examples from the get go, CBR waits until the actual testing time to do so meaning it is not pre-optimised for a particular scenario. This means that in a database where the solutions could be extremely varied from one another CBR tends to perform well. The cases in CBR, such as in the rules found in other systems, all depend on well the database is organised and how many measures exist that help the system judge if a case is valuable and relevant.
What follows is a rundown on how the algorithm works and a brief explanation of its steps:
Categorise the problem and break down to its components so it can be compared to other cases in the database and relevant ones be found.
Retrieve Relevant Past Cases
Retrieve any cases relevant to the problem at hand. These will usually have ascribed solutions or descriptions on why they failed which will help to provide a solution for this problem.
Use the solution off a previous relevant case to solve this problem. This might necessitate tweaking the solution to match this problem.
Test the solution and check if it works. If the solution isn’t adequate this is where we could try to adapt it to meet the current requirements. If this is not possible append a description of why that is the case and store it in the case database as a failed case.
If the solution gas been made to work for this problem store in the database as a new case. The CBR memory grows accordingly and can now use this new case in any future problems.
Using the above steps CBR effectively learns and uses what it has learn to solve new problems. Depending on the use cases CBR databases can grow to huge sizes so a developer should look to implement a system that identifies redundant or little used cases and remove them.
Harrison, Ian. (1997). Case Based Reasoning
Available from: http://www.aiai.ed.ac.uk/links/cbr.html
Riesback, Chris. (2016). Case-Based Reasoning
Available from: https://www.cs.northwestern.edu/academics/courses/325/readings/cbr-intro.php