|
So I have a program which scans a computer and tries to determine some findings based on what it sees. I recently implemented an operating system detection module for it using some basic machine learning and then converted a lot more code to store data in a way which can be intelligently examined later to make other findings. I later learned that this is a form of machine learning. So now I feel as if I may have reinvented the wheel and would like to brush up on what the formal or industry standard way of doing this would be. I'm interested in how data should be stored and classified, how to determine findings based on that data, and how to deal with data generated from other data. However I have no idea what books to read or what information should be searching for (is there a more specific terminology than ML for what I'm doing?). I'm interested in this from more of a programming method rather than mathematic. As I see now, Collective Intelligence will be a fair start but does anyone have any other suggestions? |
|
I recommend tutorials from mathematical monk along with some textbook so that you have a track. Tutorials can be found at http://www.youtube.com/playlist?list=PLD0F06AA0D2E8FFBA&feature=plcp. Also book named Machine Learning in Action , has the programming perspective you are asking for rather than mathematical side. |
|
You have already figured out what your problem is called: classification. You want to take a bunch of inputs, which we call 'features', to assign a label to each computer; namely, its operating system. First you need to decide what features you want to use. One dimension of the feature vector, for example, could indicate in binary (0 or 1) whether or not a certain file is present. After that it is a simple matter of looking at the feature space and seeing where the like-typed computers amass. The details will be covered in any book on machine learning. |
|
Hi, I might recommend picking up the following "Data Mining" book: http://www.amazon.com/Data-Mining-Practical-Techniques-Management/dp/0123748569/ref=sr_1_1?ie=UTF8&qid=1356247556&sr=8-1&keywords=data+mining From a programmer's perspective its nice. It gives a succinct overview of the basics in machine learning and data mining, then covers WEKA -> a ML tool suite so no need to reinvent anything to get started. |
|
Like @Emre S pointed, you are dealing with classification problem. There is a number of ML algorithms that you can use, and Support Vector Machines is one of them. It is good choice because it is very popular and you can find good tutorials for it. Also because you are experienced with programming it can be good fit for your problem because there are number of libraries for it. For example for Python: scikit-learn Good start for learning ML (SVM algorithm) would be optimization: Convex Optimization - Boyd |
|
You have figured out that you want to do classification. A simple and robust technique to use is the Naive Bayesian method. This method is robust and there are no long training phases. In general methods like neural networks, random forests, classification trees can be quite powerful to eventually get a proper learned model. Simple classification trees are also useful in gaining valuable insights into what the machine learning process actually learned. Hope this helps. |
|
If you do not care about all the mathematical details, I will recommend the book: Machine Learning - An Algorithmic Perspective by Stephen Marsland. It contains a minimum of math and the approach is very practical and example based. Also, the author provides python code for most of his examples. You can also consider the book: Introduction to Data Mining, which is more detailed and is slightly more mathematical (necessary math is covered in the appendix). But it is still fairly easy to read. |