In this section, we look at an example that loads similar training and checking data sets. The checking data set is corrupted by noise.
To work both of the following examples, you load the training data sets
the checking data sets (
fuzex2chkData), into the Neuro-Fuzzy Designer
from the workspace. You may also substitute your own data sets.
To load the data sets from the workspace into the Neuro-Fuzzy Designer:
Type the following commands at the MATLAB® command line to load the data sets into the MATLAB workspace:
load fuzex1trnData.dat load fuzex2trnData.dat load fuzex1chkData.dat load fuzex2chkData.dat
Open the Neuro-Fuzzy Designer by typing
neuroFuzzyDesigner in the MATLAB command line.
To load the training data set from the workspace:
In the Load data portion of the designer, select the following options:
Click Load Data to open the Load from workspace dialog box.
fuzex1trnData as shown in the
following figure, and click OK.
The training data set is used to train a fuzzy system by adjusting the membership function parameters that best model this data, and appears in the plot in the center of the app as a set of circles.
The horizontal axis is marked data set index. This index indicates the row from which that input data value was obtained (whether or not the input is a vector or a scalar).
To load the checking data set from the workspace:
In the Load data section, select Checking in the Type column.
Click Load Data to open the Load from workspace dialog box.
fuzex1chkData as the variable name
and click OK.
The checking data appears in the plot as pluses superimposed on the training data.
The next step is to specify an initial fuzzy inference
anfis to train.
You can either initialize the FIS parameters to your own preference, or if you
do not have any preference for how you want the initial membership functions to
be parameterized, you can let
anfis initialize the
parameters for you, as described in the following sections:
To initialize your FIS using
partition, the default partitioning method. The two
partition methods, grid partitioning and subtractive clustering, are
Click Generate FIS .
Clicking this button displays a menu from which you can choose the
number of membership functions, MFs,
and the type of input and output membership functions. There are only
two choices for the output membership function:
limitation of output membership function choices is because
anfis only operates on Sugeno-type systems.
Fill in the entries as shown in the following figure, and click OK.
You can also implement this FIS generation from the command line using
You can choose your own preferred membership functions with specific
parameters to be used by
anfis as an initial FIS for
To define your own FIS structure and parameters:
Open the Membership functions menu item from the Edit menu.
Add your desired membership functions (the custom
membership option will be disabled for
output membership functions must either be all constant or all linear.
For carrying out this and the following step, see The Fuzzy Logic Designer and
The Membership Function Editor.
Select the Rules menu item in the Edit menu, and use the Rule Editor to generate the rules (see The Rule Editor).
Select the FIS Properties menu item from the Edit menu. Name your FIS, and save it to either the workspace or to file.
Click the Close button to return to the Neuro-Fuzzy Designer to train the FIS.
To load an existing FIS for ANFIS initialization, in the Generate FIS portion of the designer, click Load from worksp or Load from file. You load your FIS from a file if you have saved an FIS previously that you would like to use. Otherwise you load your FIS from the workspace.
After you generate the FIS, you can view the model structure by clicking the Structure button in the middle of the right side of the editor. A new editor appears, as follows.
The branches in this graph are color coded. Color coding of branches characterize the rules and indicate whether or not and, not, or or are used in the rules. The input is represented by the left-most node and the output by the right-most node. The node represents a normalization factor for the rules. Clicking on the nodes indicates information about the structure.
You can view the membership functions or the rules by opening either the Membership Function Editor, or the Rule Editor from the Edit menu.
anfis parameter optimization method options
available for FIS training are
hybrid (the default, mixed
least squares and backpropagation) and
(backpropagation). Error Tolerance is used to
create a training stopping criterion, which is related to the error size. The
training will stop after the training data error remains within this tolerance.
This is best left set to 0 if you are unsure how your training error may behave.
If you want to save the training error data generated during ANFIS training to the MATLAB workspace, you must train the FIS at the command line. For an example, Save Training Error Data to MATLAB Workspace.
To start the training:
Leave the optimization method at
Set the number of training Epochs to 40 (the default value is 3).
Select Train Now.
The following window appears on your screen.
The plot shows the checking error as ♦ ♦ on the top . The training
error appears as * * on the bottom. The checking error decreases up to a
certain point in the training, and then it increases. This increase
represents the point of model overfitting.
chooses the model parameters associated with the minimum checking error
(just prior to this jump point). This example shows why the checking
data option of
anfis is useful.
To test your FIS against the checking data, select Checking data in the Test FIS portion of the Neuro-Fuzzy Designer, and click Test Now. When you test the checking data against the FIS, it looks satisfactory.
If you load data into
anfis after clearing previously
loaded data, you must make sure that the newly loaded data sets have the same
number of inputs as the previously loaded ones did. Otherwise, you must start a
new Neuro-Fuzzy Designer session from the command line.
If you do not want to use the checking data option of
anfis, then do not load any checking data before you
train the FIS. If you decide to retrain your FIS with no checking data, you can
unload the checking data in one of two ways:
Select the Checking option button in the Load data portion of the Neuro-Fuzzy Designer, and then click Clear Data to unload the checking data.
Close the Neuro-Fuzzy Designer, and go to the MATLAB command line, and retype
neuroFuzzyDesigner. In this case you must reload
the training data.
After clearing the data, you must regenerate your FIS. After the FIS is generated, you can use your first training experience to decide on the number of training epochs you want for the second round of training.
This example examines what happens when the training and checking data sets are sufficiently different. To see how the Neuro-Fuzzy Designer can be used to learn something about data sets and how they differ:
Clear the Neuro-Fuzzy Designer:
Clear both the training and checking data.
(optional) Click the Clear Plot button on the right.
fuzex2chkData (respectively, the training data and
checking data) from the MATLAB workspace just as you did in the previous example.
You should see a plot similar to the one in the following figure. The training data appears as circles superimposed with the checking data, appearing as pluses.
Train the FIS for this system exactly as you did in the previous example, except
Epochs before training. You should get the
following plot, showing the checking error as ♦ ♦ on top and the training error as *
* on the bottom.
In this case, the checking error is quite large. It appears that the minimum
checking error occurs within the first epoch. Using the checking data option with
anfis automatically sets the FIS parameters to be those
associated with the minimum checking error. Clearly this set of membership functions
is not the best choice for modeling the training data.
This example illustrates the problem discussed earlier wherein the checking data
set presented to
anfis for training was sufficiently different
from the training data set. As a result, the trained FIS did not capture the
features of this data set very well. It is important to know the features of your
data set well when you select your training and checking data. When you do not know
the features of your data, you can analyze the checking error plots to see whether
or not the checking data performed sufficiently well with the trained model.
In this example, the checking error is sufficiently large to indicate that either you need to select more data for training or modify your membership function choices (both the number of membership functions and the type). Otherwise, the system can be retrained without the checking data, if you think the training data sufficiently captures the features you are trying to represent.
To complete this example, test the trained FIS model against the checking data. To do so, select Checking data in the Test FIS portion of the app, and click Test Now. The following plot in the app indicates that there is quite a discrepancy between the checking data output and the FIS output.