Home  Products  Testimonials  Prices  Support  Contact  Publications  About   
Quick Links
Home
Purchase
Support
Products Product Home ActiveX/COM Components .NET Components Version History Support Support Home Installation Help About Us Company Info Clients Testimonials Publications Contact Us 
Would you like to use Independent Component Analysis in your Windows programs: Visual Basic, Visual C++, Borland C++ Builder, Excel, Access etc? Maths Studio/X is a premier suite of tools, containing ICA/X, PCA/X, Matrix Tools/X, MLP/X, Input Selection/X and Classifier/X. Maths Studio/X is ideally suited to comprehensive data analysis tasks. It contains six of our main data analysis components: ICA/X and PCA/X implement an independent component analysis algorithm and principal component analysis algorithm respectively. Matrix Tools/X provides a set of tried and tested matrix functions which enable the development of robust numerical algorithms in the language of your choice operating under the Windows platform. MLP/X is an implementation of the popular neural network models: the Multilayer Perceptron and the Time Delay Neural Network. In MLP/X, both standard first order backpropagation and the second order Kalmanbased learning algorithm (MEKA) are available. The problem of input variable selection is well known in the task of modeling real world data. In many real world modeling problems, for example in the context of biomedical, industrial, or environmental systems, a problem can occur when developing multivariate models and the best set of inputs to use are not known. Input Selection/X implements a method of selecting a set of input variables using higher order statistics. Classifier/X will let you quickly and easily implement a kmeans classifier in your programs. Each component is both an ActiveX Control and a COM object, so they can be used in a wide range of applications that support these standards, including Visual Basic, Visual C++ and Excel. The controls are written as lightweight ATL C/C++ objects, and do not require bulky MFC DLLs. Because the controls are written in ATL they are efficient and small in size. The numerical processing is written in C for speed, and integrated into the lightweight ATL/C++ framework. Components included: Purchase Maths Studio/X subscription now and lock in free upgrades and new components for 12 months without paying any more. ICA/X ActiveX and COM ComponentICA/X ActiveX Component drops into most windows application programs and with just a few lines of code you will be able to implement ICA. With full source samples you will be able to quickly and easily include independent component analysis functionality in your applications.
Independent Component AnalysisIndependent component analysis can be considered an extension of principal component analysis (PCA). In PCA, the input data is decorrelated to find the componentsthat are maximally correlated according to second order statistics. PCA gives orthogonalized and normalized outputs according to the second order statistics by minimizing the second order moments. The principal components can still be dependent however. In ICA, the aim is to process a number of measured signal vectors X and extract a set of statistically independent vectors Y which are estimates of some unknown source signals S which have been linearly mixed together via a mixing matrix A to form the observed input data. ICA seeks to ensure maximum independence, typically by minimizing the higher order moments of the outputs. When the higher order moments are zero (for nongaussian input signals), the outputs are independent.The problem of independent component analysis or blind source separation of signals mixed instantaneously, is defined as follows. We have available to us, a multivariate time series {x_{i}(t)}, i = 1,...,n. It is assumed that these signals are the result of a mixing process defined by
We seek estimate the unknown signals s_{j} (t) using only the observed data vector x(t) = [x_{1}(t),x_{2}(t),...,x_{n}(t)]^{T} . The problem is to find a demixing matrix B such that y(t) = Bx(t)= BAs(t), where A is the unknown mixing matrix. This matrix mixes signals instantaneously in time. It is possible for there to be differing numbers of sensors than sources, that is, A may not be square. If the number of sources is the same as the number of sensors or observed inputs n, then A is a square n×n matrix. If B = A^{1}, then y(t) = s(t), and perfect separation occurs. In practice, the optimum y will be some permutated and scaled version of s , since it is only possible to find B such that BA = PD where P is a permutation matrix and D is a diagonal scaling matrix (Tong, et. al. 1991). ICA is useful in a wide range of data analysis tasks where we seek to understand and analyse sequential or timebased data in terms of their underlying composition, where the composition signals are as independent of each other as possible. Many algorithms have been proposed to perform ICA. These may be divided into blockbased or online adaptive techniques. Blockbased algorithms take all the data in at once and produce the output. Online adaptive algorithms process each data point in a continuous sense. A disadvantage of many algorithms, especially online adaptive algorithms, is the need to select tuning parameters such as the learning rate. If the learning rate is chosen to be too small, then the solution may not be found or it may be found very slowly. If the learning rate is chosen too large, then the algorithm may 'blowup'. For many practical problems, it is useful to be able to have an algorithm that is capable of finding a solution without user intervention at all. ICA/X implements the JADE algorithm (Cardoso, 1993) and is capable of separating linearly mixed input signals in a blockbased manner without user intervention. The quality of the solution can vary depending on the specific characteristics of the data.PCA/X ActiveX and COM Component
Background of PCAPrincipal component analysis (PCA) is a statistical data analysis technique used to reduce the dimensionality of multivariate data. Understanding multivariate data can be difficult due to the number of dimensions. When more than three dimensions are being analyzed, it is difficult to visualize the data.PCA is a well known method for reducing the dimensionality by extracting components which are uncorrelated with each other. Moreover, the first component explains as much of the variance as possible, while remaining uncorrelated with subsequent principal components. Hence it is the first principal component. Further principal components in turn, provide as much of the remaining variance as possible. PCA is useful in a wide range of data analysis tasks where we seek to understand and analyse sequential or timebased data in terms of their underlying composition, where the composition signals are as independent of each other as possible. PCA/X employs singular value decomposition to separate linearly mixed input signals in a blockbased manner without user intervention. With full source code samples you can download and use immediately, Classifier/X will let you quickly and easily implement a kmeans classifier in your programs. Download Classifier/X now and you can be developing programs immediately. Classifier/X ActiveX and COM Component
The algorithm for kmeans classification is a widely known algorithm for classification which is capable of providing useful performance, although it does have some limitations. We have a multivariate input data set X which is defined as an M x N matrix. There are M input points in Ndimensional space. It is assumed there exist k compact classes of data, where k < n. The data is classified by allocating each data point to a class and then iteratively moving the data points between classes until we obtain the tightest overall cluster of points in each class. The specific algorithm is defined as follows:
The kmeans algorithm has several potential problems including:
The algorithm implemented in Classifier/X uses a plain vanilla version of the kmeans algorithm and does not introduce any measures to avoid the above problems. In general, it is left to the user to implement any special data preprocesing, initial center selection and so on. InputSelection/X ActiveX and COM Component
The task is to determine a set of inputs which will lead to an optimal model in some sense. Problems which can occur due to poor selection of inputs include the following:
This component implements an input variable selection algorithm using
higher order cross statistics for each of the individual variables. In this
component, the relevant inputs are determined
directly, without using independent component analysis as documented in [1]. It is
also possible to combine both components to select a potentially smaller number
of relevant inputs for modeling. MatrixTools/X ActiveX and COM ComponentMatrix Tools/X ActiveX Control implements a range of useful matrix functions including SVD, Sorting, Inverse, Eigenvalue decomposition, Covariance, Correlation and more. Matrix Tools/X is both an ActiveX Control and a COM object, so it can be used in a wide range of applications that support these standards. This includes Visual Basic, Visual C++, Excel and Borland C++ Builder. The control is written as a lightweight ATL C/C++ object, and does not require bulky MFC DLLs. Because the control is written in ATL it is efficient and small in size. The numerical processing is written in C for speed, and integrated into the lightweight ATL/C++ framework.Matrix Tools/X provides a set of tried and tested matrix functions which enable the development of robust numerical algorithms in the language of your choice operating under the Windows platform. Because it is written in C and implemented as an ActiveX Control and COM object, you do not have to worry about how or if the library will be compatible with your code. Matrix Tools/X is both an ActiveX Control and a COM object, implemented in a
single DLL, yet it can be used in a wide range of programming languages that
support these standards. This includes Visual Basic 6, Visual Basic .NET, Visual
C++, Visual C#, Excel  VBA, Delphi and Borland C++ Builder. This is a sample of the functions included:
Source Code ExamplesMatrix Tools/X now includes sample applications  with full source code, in the following programming languages:
Visual C# Do you need to perform matrix computations in a different programming
environment? Let us know and we will try to help.
If you do have any questions about using our controls just email us and we will assist you in learning how to use our controls. Just take a look at our testimonials page to see some of the comments we have received from customers. If you need quick results with industrialstrength reliability when using a neural network in your application, whether it is in Visual Basic, Visual C#, Visual C++, Delphi or Borland C++ Builder, then try MLP/X Multilayer Perceptron Active Control and COM Object.MLP/X is an ActiveX control that is tightly coded in C and C++, and can be used in a wide range of applications. You can now implement neural network software in just minutes by dropping in our control. Example Neural Networks with Free Source CodeMLP/X lets you quickly and easily implement a Multilayer Perceptron or Time Delay Neural Network in your application. With full source samples in Visual Basic, Excel Visual C++ coming soon), you will be able to quickly and easily implement a neural network in your application. We are serious about ensuring you can use our neural network software in your application. If you aren't sure about how to use an ActiveX control in your application, and need to have some help to get started, just send us an email and we will assist you.
MLP/X Learning AlgorithmsMLP/X implements a two weight layer multilayer perceptron or a TimeDelay Neural Network (TDNN). The parameters for an MLP can be found using a range of different techniques. The most well known of these is the backpropagation algorithm which is implemented in MLP/X.In addition to the backpropagation algorithm, an Extended Kalman Filterbased, second order algorithm is also implemented. This type of algorithm can provide faster convergence to a problem solution. The particular EKF algorithm used is the MEKA algorithm [1]. Often the MEKA algorithm will provide better results than standard backpropagation, however this is dependent on the actual problem. Both methods use gradient descent and are therefore subject to becoming stuck in a local minima in the weight space. These algorithms belong to a class of neural networks learning algorithms termed "supervised learning". This means, that they are capable of learning from a given set of data which must be provided by the user. MLP/X provides a range of simple functions to create, delete, load and save an MLP. The KFold Cross Validation method creates, trains and selects the optimal network size of an MLP in one step. The size is estimated in terms of the number of hidden units within a nominated range necessary to achieve minimal cross validation error. Network weights can be optionally saved for later recall. Cross validation errors are returned as well as the optimal number of hidden units Technical InformationThe ActiveX DLLs can be used in wide range of Windows applications. They requires no user interface and can be accessed by any ActiveX compatible development environment, including VB 6, Visual Basic .NET, Excel, VBA, Visual C#, Delphi and Visual C++. Each ActiveX and COM runtime component is included in a single DLL, these are typically about 200300k in size.The components supports threaded blocking and nonblocking modes. This means for lengthy computations, you can use the control in a program, pass it some data for processing and the program can then run other tasks and respond to user input while the computations are taking place. When processing is complete, an event is fired and the program continues from the data processing step. This blocking/nonblocking mode is under program control. Error codes are returned from the event indicating the success or otherwise of the data processing. The computations can also be interrupted under program control by the user, for example, it is straight forward to implement a "Stop" button to direct the computations to be stopped. Matrix data used with the components and returned from the control can have different index starting values in Visual Basic. For example, you can choose to index your data from 0 or 1. The components pass the data back in an array indexed from the value you specify in a property of the control. All data used and returned is in double format. This means it is suitable for use with Visual Basic and Visual C++. In addition, all our controls are designed to function together, so you can build your applications quickly and easily. References


