Take the 2-minute tour ×
Theoretical Computer Science Stack Exchange is a question and answer site for theoretical computer scientists and researchers in related fields. It's 100% free, no registration required.

I want to teach myself enough machine learning so that I can, to begin with, understand enough to put to use available open source ML frameworks that will allow me to do things like:

  1. Go through the HTML source of pages from a certain site and "understand" which sections form the content, which the advertisements and which form the metadata ( neither the content, nor the ads - for e.g. - TOC, author bio etc )

  2. Go through the HTML source of pages from disparate sites and "classify" whether the site belongs to a predefined category or not ( list of categories will be supplied beforehand ) based on the page content derived from 1

  3. ... similar classification tasks on text and pages.

As you can see, my immediate requirements are to do with classification on disparate data sources and large amounts of data.

As far as my limited understanding goes, taking the neural net approach will take a lot of training and maintenance than putting SVMs to use?

I understand that SVMs are well suited to ( binary ) classification tasks like mine, and open source frameworks like libSVM are fairly mature?

Taking forward the question assuming SVMs to be a better answer to classification of the likes of mine, how do I understand things like:

  1. What $R^n$ stands for

  2. or hyperplanes

  3. or how to transform a space so that it can be broken into two parts etc?2.

In that case, what subjects and topics does a computer science graduate need to learn right now, so that the above requirements can be solved, putting these frameworks to use? Especially those related to SVMs.

I am willing to learn and put in as much effort as I possibly can.

Recommendations from you on learning specific portions of statistics and probability theory is nothing unexpected from my side, so say that if required!

I will modify this question if needed, depending on all your suggestions and feedback.


Cross-posted on SO:

http://stackoverflow.com/questions/3764444/what-subjects-topics-does-a-computer-science-graduate-need-to-learn-to-apply-ava

share|improve this question
4  
Yes, I think you should modify the question based on Lev's answer: for this site, focus more on what principles/techniques you need to know. –  Suresh Venkat Sep 21 '10 at 21:45
    
@Suresh. Thanks! Modified the post as per suggestion :-) –  PoorLuzer Sep 21 '10 at 22:39
    
I have edited my answer to address your rephrased question (or at least the relevant parts). I would still say your question needs further rewriting as it is still mostly not pertinent to TCS -- dealing with available code, HTML, libSVM, etc. –  Lev Reyzin Sep 22 '10 at 0:31
    
You may want to try MetaOptimize for more practical ML questions. –  Kaveh Nov 22 '10 at 2:29
1  
as a supplement to theory, i find it is always incredibly useful (if not essential) to build and run lots of simple examples. to that end ORANGE ailab.si/orange is a really nice, flexible ML framework which supports a wide variety of ML techniques and robust python scripting. it also includes a lot of real-world examples from the UC Irvine public data sets. –  s8soj3o289 Nov 22 '10 at 2:46
add comment

2 Answers

up vote 9 down vote accepted

From the theory end, you should understand how SVMs work (and why they do). For example, I like the scribe notes from this class for a quick explanation and something like this tutorial for a more in-depth one. You might also want to consider other machine learning techniques that are suited for binary classification on large data ie. boosting, random forests, ...

As for dealing with open source code issues and with parsing HTML, stackoverflow might be a better place to seek answers.

EDIT: Given your modified question, I can address your concrete questions about SVMs directly:

  1. $R^n$ "stands for" the fact that the (data) points to be classified lie in a $n$-dimensional Euclidean space. For example, points in our familiar $2$ dimensions (with, say, latitude and longitude coordinates) lie in $R^2$ -- an $n$-dimensional space generalizes this notion.
  2. A hyperplane (in $R^n$) is a flat of dimension $n-1$. It is what an SVN uses to classify the data (after they have been mapped to the higher dimensional space by the chosen Kernel). For example, if your space is $R^2$ (or a plane) then a hyperplane is line, and so on.
  3. How to transform the space? This is done via the Kernel function. A big part of SVM design is choosing a proper Kernel for the problem at hand.

To understand these three points in more detail, you can read the references above.

share|improve this answer
    
GREAT stuff in this post! Modified the post as per Suresh's suggestion as well. –  PoorLuzer Sep 21 '10 at 22:38
add comment

First of all, you should study the fundamentals. I found this Stanford University course indeed helpful. In particular, pay attention to "Lecture 11". It covers best practices for applying machine learning techniques and debugging an application, no matter what learning model you use.

Additionally, among the open source ML frameworks, there are GATE and RapidMiner that look suitable for the task.

share|improve this answer
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.