The title of this blog post is a famous quote by Einstein. This post is not on GOD or religion, but on the concept of probability. This post is also based on the concept of determinism and hidden variable theory.
First let's differentiate between an experiment and an event. An event simply occurs, whereas in experiment, we observe the event. Let's call this process of observing to note the outcome of the event as information retrieval process i.e we are trying to get information about the event when it occurs. Some of the information retrieval processes are seeing, hearing, or using any other sensory organs, taking a picture, video/audio recording, etc.
Note that information retrieval process may in someway disturb the event itself. See Heisenberg uncertainty principle. But for sake of this thought experiment, imagine we have some special information retrieval process that gets information about the event or experiment, without in any way disturbing the experiment. (Note, quantum mechanics says this is not possible. But I say this is not possible with currently available information retrieval mechanism. May be in future we may have sophisticated information retrieval mechanism where it might be possible).
Consider a experiment of rolling a dice. Do you think it is deterministic or probabilistic/stochastic ?
The deterministic point of view says that if we knew weight of dice, envirnomental factors (wind direction/strength, humidity), surface friction, density of dice, exact hand movements (angle of release, force during release), and many many other factors, then we can predict the exact outcome of the dice.
Since we don't know many of this factors (i.e hidden variables), we cannot predict the exact outcome of the dice. To model these variables, so that we can get very close to the outcome and in some way make the experiment useful, we use the concept of probability.
Thursday, November 19, 2009
Tuesday, November 10, 2009
Presentation on Map Reduce Merge
I gave a presentation yesterday (here is the powerpoint slides) and I am writing this blog to just jot down things I have learnt.:
- I need to improve my grammar. The best thing to do is give a practice talk before your presentation.
- It is very important to add all the references in your presentation.
- If the paper is about a system, always add big picture describing the modules and their interactions.
- If possible try to prepare for a demo to get people excited about the topic.
- Always be sure of what you tell in the presentation. If you don't know something, say that "I don't know or I am not sure of it".
Thursday, November 05, 2009
SACHIN TENDULKAR - The Greatest (Video Collection)
What is your motivation ?
Its the passion. I care about playing for India. Its being a dream and I am absolutely honored to do that for last 20 years. - Sachin Tendulkar.
First some of his great innings:
Second, his interviews:
Third, Documentaries:
Fourth, Best Quotes on Sachin:
And lastly, his bowling:
Its the passion. I care about playing for India. Its being a dream and I am absolutely honored to do that for last 20 years. - Sachin Tendulkar.
First some of his great innings:
Second, his interviews:
Third, Documentaries:
Fourth, Best Quotes on Sachin:
And lastly, his bowling:
Friday, October 02, 2009
How to set up Trac + SVN on Ubuntu
sudo apt-get install trac
sudo apt-get install libapache2-mod-python libapache2-mod-python-doc libapache2-svn
# Create a directory where all your Trac projects will live
sudo mkdir /var/lib/trac
sudo mkdir /var/lib/svn
# Usernames
sudo htpasswd -cm /etc/svnauth urname
sudo htpasswd -cm /etc/svnauth nextuserrname
# Add following to /etc/svnaccess
sudo vim /etc/svnaccess
##################From here#########################
[groups]
developers = yourusername, nextusername
[ / ]
@developers = rw
* = r
##################Till here#########################
# Add following to /etc/apache2/sites-available/default
sudo vim /etc/apache2/sites-available/default
##################From here#########################
DAV svn
SVNParentPath /var/lib/svn
AuthType Basic
AuthName "Subversion Repository"
AuthUserFile /etc/svnauth
Require valid-user
AuthzSVNAccessFile /etc/svnaccess
SetHandler mod_python
PythonHandler trac.web.modpython_frontend
PythonOption TracEnvParentDir /var/lib/svn
PythonOption TracUriRoot /trac
AuthType Basic
AuthName "Trac"
AuthUserFile /etc/svnauth
Require valid-user
##################Till here#########################
# Statically set the users in envvars
sudo vim /etc/apache2/envvars
export APACHE_RUN_USER=www-data
export APACHE_RUN_GROUP=www-data
# Reload the configuration
sudo /etc/init.d/apache2 reload
# Say ur project name is PhDProject
sudo svnadmin create /var/lib/svn/PhDProject
# Assign permissions
sudo chown www-data:www-data -R /var/lib/trac
sudo chown www-data:www-data -R /var/lib/svn
# Create Trac with SVN
sudo trac-admin /var/lib/trac/PhDProject/ initenv 'PhDProject' 'sqlite:db/trac.db' 'svn' '/var/lib/svn/PhDProject'
# Add urself to developers group
sudo trac-admin /var/lib/trac/PhDProject/ permission add urusername developers
# Optional: Some cool plugin
sudo easy_install http://trac-hacks.org/svn/accountmanagerplugin/trunk
# Re-assign permission
sudo chown www-data:www-data -R /var/lib/trac
sudo chown www-data:www-data -R /var/lib/svn
# Reload the configuration and restart
sudo /etc/init.d/apache2 reload
sudo /etc/init.d/apache2 restart
References:
http://trac.edgewall.org/wiki/TracUbuntuMultipleProjects
http://anantgarg.com/2009/03/25/subversion-trac-multiple-projects/
sudo apt-get install libapache2-mod-python libapache2-mod-python-doc libapache2-svn
# Create a directory where all your Trac projects will live
sudo mkdir /var/lib/trac
sudo mkdir /var/lib/svn
# Usernames
sudo htpasswd -cm /etc/svnauth urname
sudo htpasswd -cm /etc/svnauth nextuserrname
# Add following to /etc/svnaccess
sudo vim /etc/svnaccess
##################From here#########################
[groups]
developers = yourusername, nextusername
[ / ]
@developers = rw
* = r
##################Till here#########################
# Add following to /etc/apache2/sites-available/default
sudo vim /etc/apache2/sites-available/default
##################From here#########################
DAV svn
SVNParentPath /var/lib/svn
AuthType Basic
AuthName "Subversion Repository"
AuthUserFile /etc/svnauth
Require valid-user
AuthzSVNAccessFile /etc/svnaccess
SetHandler mod_python
PythonHandler trac.web.modpython_frontend
PythonOption TracEnvParentDir /var/lib/svn
PythonOption TracUriRoot /trac
AuthType Basic
AuthName "Trac"
AuthUserFile /etc/svnauth
Require valid-user
##################Till here#########################
# Statically set the users in envvars
sudo vim /etc/apache2/envvars
export APACHE_RUN_USER=www-data
export APACHE_RUN_GROUP=www-data
# Reload the configuration
sudo /etc/init.d/apache2 reload
# Say ur project name is PhDProject
sudo svnadmin create /var/lib/svn/PhDProject
# Assign permissions
sudo chown www-data:www-data -R /var/lib/trac
sudo chown www-data:www-data -R /var/lib/svn
# Create Trac with SVN
sudo trac-admin /var/lib/trac/PhDProject/ initenv 'PhDProject' 'sqlite:db/trac.db' 'svn' '/var/lib/svn/PhDProject'
# Add urself to developers group
sudo trac-admin /var/lib/trac/PhDProject/ permission add urusername developers
# Optional: Some cool plugin
sudo easy_install http://trac-hacks.org/svn/accountmanagerplugin/trunk
# Re-assign permission
sudo chown www-data:www-data -R /var/lib/trac
sudo chown www-data:www-data -R /var/lib/svn
# Reload the configuration and restart
sudo /etc/init.d/apache2 reload
sudo /etc/init.d/apache2 restart
References:
http://trac.edgewall.org/wiki/
http://anantgarg.com/2009/03/
Wednesday, September 23, 2009
Meta-PhD
Why did I decide to do a PhD ?
When Chris asked me to do PhD, I was dead sure about one thing: I want to be in US for at least next 4-5 years of my life. So, I had two choices in front of me: either accept the SDE job offer from Microsoft SQL Server Data Mining team or accept Chris' PhD offer. Somewhere in back of my mind, I wanted to do a PhD after 3-4 years of my job. Also, Microsoft SQL Server Data Mining team was a dream job at that time. However, I decided to go for PhD for following reasons (ranked in the order of importance):
1. Why PhD?: For rest of my life, (except the daily chores and some personal issues), I want to THINK and DO certain work. I believe PhD sharpens (if not develops) the unbiased factual decision making process. It also helps you identify and enumerate some choices which you probably would not had thought of. (To be brutally honest, you don't need to do PhD for this, you just need to spent some time regularly acquiring this skills. PhD is one of the well-known an hopefully the simplest way to acquire them.)
2. Why Chris?:
a. I don't think I would find a better advisor than Chris (for "me"). There are two reasons for it. First, I am very comfortable communicating my ideas with him (both technical as well as non-technical). Second, Chris is an "awesome" researcher and I will learn a lot (and not just Database Research topics) from him.
3. Why PhD then and not afterwards?: If I jumped into job, I don't think I would ever return to PhD. (May be I think once I am settled down with good income, I would not have the motivation to start studying).
Though I have talked about skills that I would like to acquire in general, I would like to break it into my so-called mini-goals. The list below is a result of an hour long discussion with Ravi Jampani.
Mini-Goals for PhD (ranked in the order of importance):
1. Problem Identification Skills: Before I complete my PhD, this is the most important skill that I would like to acquire. For example, I should be able to identify potential problems in a given area after doing critical literature study.
2. Critical Literature Study or Building your base: This includes accumulation, simplification, contextual categorization (eg: Mindmap with Mnemonics) of the knowledge in my research field. This skill should also facilitate a way of frequently revisiting this knowledge base and also doing periodic "Lateral thinking" on it.
3. Multi-domain expertise: This means iterating skill 2 for multiple fields. It will also help for skill 1. The fields that I am interested in are Database, Data Mining & Machine Learning, Algorithms(with emphasis on Approximation and Randomization) and Mathematics (with emphasis on Statistics).
4. Indexing: Finding out who are good researchers in your field and always knowing what they are working on (kind of like fan-following).
5. Improve my communication skills and then writing skills. As of now, I ramble a lot and am almost never articulate in any discussion (though I believe that I am very persistent and continue the discussion atleast until I have communicated my ideas).
6. Collaboration of research with other people: This is least important skill as of now.
Useful advice from different researchers for new graduate students:
1. Chris:
- Indexing skill (i.e skill 4)
- Do not do exactly what the good researchers are doing.
2. Steven Weinberg:
- Start doing research (instead of writing this blog post ;) ), and pick up what you needed to know as you went along.
- Forgive yourself for wasting time. As you will never be sure which are the right problems to work on, most of the time that you spend at your desk will be wasted.
3. Richard Hamming:
- What are the most important problems in your field?, Are you working on one of them? and Why not?
- 'Knowledge and productivity are like compound interest.' Given two people of approximately the same ability and one person who works ten percent more than the other, the latter will more than twice outproduce the former. The more you know, the more you learn it is very much like compound interest.
- Luck favours the prepared mind (originally for Louis Pasteur). This essentially means that acquire skill 2 and 3 and you will soon find an opportunity to identify a 'good' potential problem and may be even solve it.
3. Others:
- There is not substitute for hard work. (Most important of all the advices)
- Be Persistent: "I have not failed. I've just found 10,000 ways that won't work" - Thomas A. Edison
- Explore as many areas as you can find. Read papers from different areas, not just your area.
4. Self:
- Be modest. The ego destroys the process of learning. Never disregard anyone who does not agree with you. Hear what he/she has to say and then try to think it through.
- Be committed to your problem. even if you think its not important. Finish it first and then start working on what you think is important.
- Think clearly, write clearly and talk clearly. Always talk with right amount of abstraction.
When Chris asked me to do PhD, I was dead sure about one thing: I want to be in US for at least next 4-5 years of my life. So, I had two choices in front of me: either accept the SDE job offer from Microsoft SQL Server Data Mining team or accept Chris' PhD offer. Somewhere in back of my mind, I wanted to do a PhD after 3-4 years of my job. Also, Microsoft SQL Server Data Mining team was a dream job at that time. However, I decided to go for PhD for following reasons (ranked in the order of importance):
1. Why PhD?: For rest of my life, (except the daily chores and some personal issues), I want to THINK and DO certain work. I believe PhD sharpens (if not develops) the unbiased factual decision making process. It also helps you identify and enumerate some choices which you probably would not had thought of. (To be brutally honest, you don't need to do PhD for this, you just need to spent some time regularly acquiring this skills. PhD is one of the well-known an hopefully the simplest way to acquire them.)
2. Why Chris?:
a. I don't think I would find a better advisor than Chris (for "me"). There are two reasons for it. First, I am very comfortable communicating my ideas with him (both technical as well as non-technical). Second, Chris is an "awesome" researcher and I will learn a lot (and not just Database Research topics) from him.
3. Why PhD then and not afterwards?: If I jumped into job, I don't think I would ever return to PhD. (May be I think once I am settled down with good income, I would not have the motivation to start studying).
Though I have talked about skills that I would like to acquire in general, I would like to break it into my so-called mini-goals. The list below is a result of an hour long discussion with Ravi Jampani.
Mini-Goals for PhD (ranked in the order of importance):
1. Problem Identification Skills: Before I complete my PhD, this is the most important skill that I would like to acquire. For example, I should be able to identify potential problems in a given area after doing critical literature study.
2. Critical Literature Study or Building your base: This includes accumulation, simplification, contextual categorization (eg: Mindmap with Mnemonics) of the knowledge in my research field. This skill should also facilitate a way of frequently revisiting this knowledge base and also doing periodic "Lateral thinking" on it.
3. Multi-domain expertise: This means iterating skill 2 for multiple fields. It will also help for skill 1. The fields that I am interested in are Database, Data Mining & Machine Learning, Algorithms(with emphasis on Approximation and Randomization) and Mathematics (with emphasis on Statistics).
4. Indexing: Finding out who are good researchers in your field and always knowing what they are working on (kind of like fan-following).
5. Improve my communication skills and then writing skills. As of now, I ramble a lot and am almost never articulate in any discussion (though I believe that I am very persistent and continue the discussion atleast until I have communicated my ideas).
6. Collaboration of research with other people: This is least important skill as of now.
Useful advice from different researchers for new graduate students:
1. Chris:
- Indexing skill (i.e skill 4)
- Do not do exactly what the good researchers are doing.
2. Steven Weinberg:
- Start doing research (instead of writing this blog post ;) ), and pick up what you needed to know as you went along.
- Forgive yourself for wasting time. As you will never be sure which are the right problems to work on, most of the time that you spend at your desk will be wasted.
3. Richard Hamming:
- What are the most important problems in your field?, Are you working on one of them? and Why not?
- 'Knowledge and productivity are like compound interest.' Given two people of approximately the same ability and one person who works ten percent more than the other, the latter will more than twice outproduce the former. The more you know, the more you learn it is very much like compound interest.
- Luck favours the prepared mind (originally for Louis Pasteur). This essentially means that acquire skill 2 and 3 and you will soon find an opportunity to identify a 'good' potential problem and may be even solve it.
3. Others:
- There is not substitute for hard work. (Most important of all the advices)
- Be Persistent: "I have not failed. I've just found 10,000 ways that won't work" - Thomas A. Edison
- Explore as many areas as you can find. Read papers from different areas, not just your area.
4. Self:
- Be modest. The ego destroys the process of learning. Never disregard anyone who does not agree with you. Hear what he/she has to say and then try to think it through.
- Be committed to your problem. even if you think its not important. Finish it first and then start working on what you think is important.
- Think clearly, write clearly and talk clearly. Always talk with right amount of abstraction.
Subscribe to:
Posts (Atom)