123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216 |
- <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
- <html> <head>
- <title>Support Vector Machines</title>
- <style>
- .slide {
- border: 2px solid #000066;
- background-color: #CCCCFF;
- position: absolute;
- width: 95%;
- height: 95%;
- }
- </style>
- <script>
- var slides = new Array();
- var currentSlide = 0;
- function initializeSlideshow() {
- var divs = document.getElementsByTagName("div");
- for (i=0; i < divs.length; i++) {
- var div = divs[i];
- if (div.className && (div.className == "slide")) {
- div.style.display = "none";
- div.addEventListener("click", showSlide, false);
- slides.push(div);
- }
- }
- showSlide();
- }
- function showSlide() {
- for (var i in slides) {
- slides[i].style.display = "none";
- }
- slides[currentSlide].style.display = "inline";
- currentSlide++;
- if (currentSlide >= slides.length) {
- currentSlide = 0;
- }
- }
- </script>
- </head>
- <body onload="initializeSlideshow();">
- <div class='slide'>
- <h1>Support Vector Machines</h1>
- <p>(lightning talk)</p>
- <p>(LPW '07) (john melesky)</p>
- </div>
- <div class='slide'>
- <h1>Presupposing:</h1>
- <p><ul>
- <li>You have a bunch of something.</li>
- <li>You can transform relevant attributes of those things into numbers.</li>
- <li>You can connect those numbers into vectors (think coordinates in an attribute space).</li>
- <li>You want to categorise them base on those numbers.</li>
- </ul></p>
- </div>
- <div class='slide'>
- <h1>The problem: find a line that separates these two categories of thing</h1>
- <img style="float: right;" src="basedata.png" />
- </div>
- <div class='slide'>
- <h1>For humans, this is easy.</h1>
- <img style="float: right;" src="cleansep.png" />
- <p>For mathematicians, it's actually not too hard.</p>
- </div>
- <div class='slide'>
- <h1>For humans, this is easy.</h1>
- <img style="float: right;" src="cleansep.png" />
- <p>For <del>mathematicians</del> computers, it's actually not too hard.</p>
- </div>
- <div class='slide'>
- <h1>There are two problems, though.</h1>
- </div>
- <div class='slide'>
- <h1>Problem, the first:</h1>
- <img style="float: right;" src="badline1.png" />
- </div>
- <div class='slide'>
- <h1>Problem, the first:</h1>
- <img style="float: right;" src="badline2.png" />
- </div>
- <div class='slide'>
- <h1>Problem, the second:</h1>
- <img style="float: right;" src="badset1.png" />
- </div>
- <div class='slide'>
- <h1>Problem, the second:</h1>
- <img style="float: right;" src="badset2.png" />
- </div>
- <div class='slide'>
- <h1>Problem, the second:</h1>
- <img style="float: right;" src="badset3.png" />
- </div>
- <div class='slide'>
- <h1>Conveniently, Support Vector Machines address both of the problems i've identified.</h1>
- <p></p>
- </div>
- <div class='slide'>
- <h1>Solution, the first:</h1>
- <p></p>
- </div>
- <div class='slide'>
- <h1>Solution, the first:</h1>
- <img style="float: right;" src="bordervectors.png" />
- <p><ul>
- <li>Create "border" vectors, parallel to eachother, touching the outermost edge of each category dataset.</li>
- </ul></p>
- </div>
- <div class='slide'>
- <h1>Solution, the first:</h1>
- <img style="float: right;" src="bordervectors.png" />
- <p><ul>
- <li>Create "border" vectors, parallel to eachother, touching the outermost edge of each category dataset.</li>
- <li>As you add new items, ensure these "borders" stay parallel.</li>
- </ul></p>
- </div>
- <div class='slide'>
- <h1>Solution, the first:</h1>
- <img style="float: right;" src="supportvectors.png" />
- <p><ul>
- <li>Create "border" vectors, parallel to eachother, touching the outermost edge of each category dataset.</li>
- <li>As you add new items, ensure these "borders" stay parallel.</li>
- <li>Create your categorizing vector equidistant from your two "borders".</li>
- </ul></p>
- </div>
- <div class='slide'>
- <h1>Solution, the first:</h1>
- <img style="float: right;" src="supportvectors.png" />
- <p><ul>
- <li>Create "border" vectors, parallel to eachother, touching the outermost edge of each category dataset.</li>
- <li>As you add new items, ensure these "borders" stay parallel.</li>
- <li>Create your categorizing vector equidistant from your two "borders".</li>
- <li>These "borders" are called "support vectors".</li>
- </ul></p>
- </div>
- <div class='slide'>
- <h1>A joke:</h1>
- <p>Q: How many mathematicians does it take to change a lightbulb?</p>
- <p></p>
- </div>
- <div class='slide'>
- <h1>A joke:</h1>
- <p>Q: How many mathematicians does it take to change a lightbulb?</p>
- <p>A: One, who hands it to 127 Londoners, thus reducing it to an earlier joke.</p>
- <p></p>
- </div>
- <div class='slide'>
- <h1>A question:</h1>
- <p>Q: How do mathematicians categorize non-linearly-separable data?</p>
- <p></p>
- </div>
- <div class='slide'>
- <h1>A question:</h1>
- <p>Q: How do mathematicians categorize non-linearly-separable data?</p>
- <p>A: Munge the data until it's linearly separable, thus reducing it to an earlier slide.</p>
- <p></p>
- </div>
- <div class='slide'>
- <h1>A question:</h1>
- <p>Q: How do mathematicians categorize non-linearly-separable data?</p>
- <p>A: Munge the data until it's linearly separable, thus reducing it to an earlier slide.</p>
- <p>Seriously. The munging is done using what are known as "kernel methods".</p>
- </div>
- <div class='slide'>
- <h1>Kernel Methods</h1>
- <p><ul>
- <li>Functions that munge data</li>
- <li>Very faintly magical (because i have no idea how they were derived)</li>
- <li>Require some skill to choose the right one for the problem</li>
- <ul></p>
- </div>
- <div class='slide'>
- <h1>Kernel Methods + Support Vectors = Support Vector Machines</h1>
- </div>
- <div class='slide'>
- <h1>In Perl:</h1>
- <p>Algorithm::SVM - bindings to libsvm</p>
- <p>(Also wrapped by AI::Categorizer)</p>
- </div>
- </body></html>
|