Upload
others
View
2
Download
0
Embed Size (px)
Citation preview
FILTROWANIE SPAMU Z UŻYCIEM MASZYNY WEKTORÓW WSPIERAJĄCYCH
Plan referatu:
1. Wstęp.
2. Maszyny uczące.
3. Ogólnie o SVM.
4. Online SVM.
5. Mapowanie tekstu na wektory wspierające.
6. Historia.
7. Podsumowanie.
8. Bibliografia.
WSTĘP
Elektroniczna komunikacja jest zasypywana dziś milionami niechcianej i mogącej zaszkodzić
treści zwanej potocznie spamem. Najbardziej znaną formą spamu są niepożądane maile,
zaśmiecające nasze wirtualne skrzynki pocztowe. Eskalacja zjawiska jest tak wysoka, że
wiele firm, środowisk akademickich i ośrodków badawczych jest wielce zainteresowana
walką z tą plagą naszych czasów. Dlatego też istnieje wiele pomysłów jak zapobiegać temu
problemowi. Do chwili obecnej badania nad detekcją spamu były skupione na takich
technikach jak: niestacjonarność źródeł danych, proste próbkowanie dyskryminujące w
danych treningowych, niejednostajność w kosztach dekompozycji, tworzenie czarnych list
spamerów, wykrywanie błędów w adresacji źródła wiadomości. Takie i podobne podejścia
nie biorą pod uwagę faktu ewolucji spamu w przeciągu dłuższego okresu czasu, z tego
względu powinniśmy obrać efektywniejszą strategię sprzężoną z procesem uczenia.
Inne, alternatywne podejście to analiza treści wiadomości. Jest to pomysł bardzo
atrakcyjny i obiecujący w zwalczaniu spamu, który daje się łatwo generalizować. W tej
technice wiadomość tekstowa jest analizowana przy użyciu automatycznych technik uczenia
stosowanych do sklasyfikowania treści. Dzięki czemu uzyskujemy informacje czy dana
wiadomość jest pożądana.
Z kolei w dziedzinie doboru najlepszej techniki automatycznego uczenia badacze są
podzieleni na kilka frontów. Wyróżniamy takie mechanizmy jak:
model porównawczy;
logistyczna regresja;
drzewa decyzyjne;
naiwny Bayes;
sieci Bayes’a;
maszyna wektorów wspierających (SVM).
Biorąc pod uwagę czas działania i skuteczność metod wiadomo, że mamy dwa przeciwległe
bieguny. Z jednej strony model porównawczy jest najszybszy ale najmniej skuteczny przy
długoterminowym działaniu, a na drugim końcu mamy skuteczną ale wolną technikę SVM.
Czas wytrenowania tego systemu jest niestety kwadratowy względem liczby przykładów
treningowych, co czyni go mało praktycznym. Ale badacze zajmujący się ogólnym
problemem klasyfikacji zaczęli optymalizować tą metodę, co zaowocowało
najskuteczniejszymi odmianami, które przynoszą praktyczne korzyści, także w dziedzinie
walki ze spamem.
plan referatu
MASZYNY UCZĄCE
Zjawisko uczenia się można w ogólnej postaci sprowadzić do estymacji funkcji na podstawie
danych empirycznych. Do rozwiązania tego problemu używano różnych metod indukcyjnych.
Inna forma procesu uczenia się jest zawarta w takim sformułowaniu:
Przyjmujemy w sposób ciągły dane treningowe (pary ( x i , y i )) oraz dane testowe (wektory x j¿) i
celem jest określenie przez maszynę uczącą, posiadającą zbiór funkcji: f ( x , α ) , αϵ Λ
wartości y j¿ dla danych testowych. Innymi słowy chcemy rozwiązać problem estymacji
wartości dla nieznanej funkcji dla danych argumentów. Maszyna Wektorów wspierających
jest jednym z kilku sposobów na rozwiązanie tego problemu.
plan referatu
OGÓLNIE O SVM
Maszyna Wektorów Wspierających ( z ang. Support Vector Machine) to system efektywnego
uczenia liniowych klasyfikatorów w wielowymiarowych przestrzeniach atrybutów
generowanych przez funkcję jądra ( z ang. kernel function).
Inaczej: SVM jest matematycznym modelem samonadzorującego i samouczącego się
algorytmu, zdolnym do predykcji.
Aby nie przestraszyć czytelnika, sformalizujmy problem, jaki rozwiązuje SVM w
najprostszym ujęciu, a potem pokażmy w jaki sposób dochodzi do pożądanych rezultatów.
Dane:
S – zbiór N punktów x i ϵ Rd, dla i=1 , 2 ,…, N .
Każdy z x i należy do jednej z dwóch klas: -1 albo 1.
Dla każdego x i przyporządkowane jest więc y i ϵ {−1 , 1}, tzw. etykieta.
Cele:
Wyznaczyć optymalną hiperpłaszczyznę dzielącą S, tak aby punkty jednej klasy były po tej
samej stronie wyznaczonej hiperpłaszczyzny.
Rozwiązanie:
Najprostszym rozwiązaniem tego
problemu jest odnalezienie liniowego
separatora, o ile S jest liniowo
separowalny.
Niezbędne definicje:
Zbiór S jest liniowo separowany jeśli istnieje hiperpłaszczyzna w ϵ Rdoraz wektor
przesunięcia b ϵ Rtakie że:
x i ∙ w+b ≥+1 dla yi=+1, (1)
x i ∙w+b≤−1 dla y i=−1, (2)czyli
y i(w ⋅ x i+b)≥1, (3)
dla i=1 , 2 ,…, N .
Para (w, b) definiuje hiperpłaszczyznę o równaniu: w ∙ x i+b=0, (4)która oddziela obydwie klasy punktów dla
i=1 , 2 ,…, N .
Pytania:
1. Która hiperpłaszczyzna najlepiej separuje
dwie klasy zbiorów i dlaczego?
2. Jak odnaleźć żądaną hiperpłaszczyznę „w” z maksymalnym marginesem dla zbiorów
liniowo separowanych?
3. Jaką strategię będzie trzeba przyjąć gdy zbiór S nie będzie liniowo separowany?
4. Jakie do tej pory wymyślono istotne optymalizacje aby SVM mógł rozwiązywać
realne problemy?
Odp. do 1.
Dla algorytmu SVM przyjmuje się, iż hiperpłaszczyzna o największym marginesie najlepiej
oddziela dwie klasy zbiorów. Margines jest to odległość hiperpłaszczyzny separującej od
wektorów wspierających. Wektory wspierające są to hiperpłaszczyzny oddzielające dwie
klasy punktów, wspierające się na obu z nich. Na rysunku widać, iż w dwuwymiarowej
przestrzeni wektorami wspierającymi są proste H 1 i H 2, a hiperpłaszczyzną separującą
prosta H. Określmy odległość od H 1 do H 2 w kategorii w i b.
Niech:
x−¿¿będzie punktem w półpłaszczyźnie H 1,
x+¿¿ punktem w półpłaszczyźnie H 2, najbliższym punktem dla x−¿¿ z obszaru
dodatniego.
NiechH 1iH 2przyjmą postać kanoniczną:
o H 1: w ⋅ xi+b=−1 , (5)
o H 2: w ⋅ xi+b=1. (6)
Skoro „ w ” jest wektorem prostopadłym do obu hiperpłaszczyzn H 1 i H 2 to:
x+¿= x−¿+λw¿ ¿. (7)
Długość marginesu określamy wzorem:
M=¿ x+¿−x−¿∨¿ ¿¿. (8)
Obliczamy:
w ∙¿
w ∙ x−¿+b+ λw ∙ w=1=¿ ¿
−1+λw ∙ w=1=¿
λ= 2w ∙ w (9)
Zatem:
M=¿ (10)
Aby uzyskać maksymalny margines chcemy zminimalizować √w ⋅w.
Odp. do 2.
Algorytm Optymalnej Hiperpłaszczyzny
Aby skonstruować optymalną hiperpłaszczyznę:
w0 ∙ x+b0=0 ,(11)
separującą zbiór danych treningowych:
( y1 , x1 ) , …, ( y l , x l ) ,
należy zminimalizować funkcjonał:
Φ=w ∙ w, (12)
tak aby spełniona była nierówność:
y i ( xi ∙ w+b ) ≥1 , i=1 ,…, l . (13)
Oby to osiągnąć używamy standardowej techniki optymalizacji.
Konstruujemy Lagrangian:
L (w ,b , Λ )=12
w ∙ w−∑i=1
l
α i [ y i ( x i ∙ w+b )−1 ] , (14)
gdzie ΛT=(α 1 , …, α l) jest wektorem nieujemnych mnożników Lagrange’a, spełniających nierówność (2). Wiadomo, że rozwiązaniem tego problemu optymalizacyjnego jest punkt siodłowy Lagrangian’u w 2 l+1 - wymiarowej przestrzeni, gdzie minimum jest uwzględnione dla parametrów w i b, a
maksimum dla mnożników Lagrange’a Λ.
W punkcie siodła parametry w0 ,b0i Λ powinny spełniać następujące warunki:
[ ∂ L (w ,b , Λ )∂ w ]
w=w0
=(w0−∑i=1
l
αi y i x i)=0 , (15)
[ ∂ L (w ,b , Λ )∂ b ]
b=b0
=∑i=1
l
α i y i=0. (16)
Z równości (15) uzyskuje się równość:
w0=∑i=1
l
αi y i x i , (17)
która wyraża fakt, iż optymalna hiperpłaszczyzna będąca rozwiązaniem naszego problemu
może być zapisana jako liniowa kombinacja danych treningowych.
Panowie Kühn i Tucker wymyślili warunek konieczny i wystarczający aby dana
hiperpłaszczyzna stanowiła optymalne rozwiązanie, a mianowicie hiperpł. separująca musi
spełniać warunek:
α i {[ ( x i ∙ w0 )−b0 ] y i−1}=0 , i=1 , …,l . (18)
Podstawiając (16) i (17) do (14) oraz biorąc pod uwagę warunek Kühn’a-Tucker’a
uzyskujemy:
W ( Λ )=∑i=1
l
α i−12∑i=1
l
∑j=1
l
α i α j yi y j xi x j . (19)
Pozostaje zmaksymalizować ten funkcjonał przy spełnionych warunkach:
α i≥ 0 , i=1 , …,l, (20)
oraz:
∑i=1
l
αi y i=0. (21)
W nawiązaniu do (17) mnożniki Lagrange’a i wektory wspierające tworzą optymalną
hiperpłaszczyznę. Dlatego aby ją skonstruować należy rozwiązać prosty problem z
programowania kwadratowego: zmaksymalizować formę kwadratową (19) pod warunkami
(20) i (21).
Trzeba zaznaczyć, iż danymi na wyjściu dla SVM są niewiadome α i i (i=1 , …,l – ilość
wektorów wspierających) oraz b.
W notacji wektorowej może być to przedstawione jak poniżej:
W ( Λ )=ΛT 1−12
ΛT DΛ (22)
przy spełnionych warunkach:
ΛT Y =0 , gdzie Y T=( y1 ,…, y l) oraz Λ ≥ 0 , (23)
natomiast 1 jest l- wymiarowym wektorem jednostkowym, a D jest macierzą symetryczną
l ×l o elementach:
Dij=x i x j y i y j . (24)
Odp. do 3.
Przypadek kiedy dane nie są liniowo separowalne.
Kiedy powyższą procedurę będziemy chcieli zastosować do danych liniowo
nieseparowalnych, uznamy za niemożliwe osiągnięcie rozwiązania: Lagrangian będzie mocno
rósł. Jak możemy rozszerzyć nasz algorytm na dane nieseparowalne liniowo. Można rozluźnić
ograniczenie (13), oczywiście tylko wtedy kiedy to konieczne, tak aby określić dodatkowe
parametry dla danych trudno separowanych. Dlatego wprowadzamy luźną zmienną
ξ i ,i=1 , …, l w
ograniczeniu (13) otrzymując:
x i ∙w+b ≥+1−ξ i dla y i=+1, (25) x i ∙w+b≤−1+ξ i dla y i=−1, (26)ξ i>0 , i (27)
Dlatego aby pojawił się błąd, odpowiednie ξ i musi przekroczyć jedność, więc ∑i
ξi jest górną
granicą liczby błędów treningowych. Stąd naturalnym sposobem by uwzględnić dodatkowe
koszty poniesione za błędy jest zmiana funkcji celu z||w||2/2 na:
||w||2/2+C (∑i
ξ i)k , (28)
gdzie C jest parametrem wybranym przez użytkownika. Im większy jest ten parametr tym
większe znaczenie przypisuje się współczynnikom błędu. Stoimy w sytuacji gdzie staje się to
problemem programowania na zbiorach wypukłych dla dowolnego dodatniego k ; dla k = 1
albo k = 2 jest to standardowy problem programowania kwadratowego.
Zdefiniujmy problem jaki mamy rozwiązać:
Chcemy zmaksymalizować:
W ( Λ )=∑i=1
l
α i−12∑i=1
l
∑j=1
l
α i α j yi y j xi x j . (29)
dla warunków:
0 ≤ αi ≤ C , (30)
∑i=1
l
αi y i=0. (31)
Rozwiązaniem jest ponownie:
w0=∑i=1
l
αi y i x i (32)
gdzie l liczbą wektorów wspierających. Dlatego jedyną różnicą w porównaniu z poprzednim
problemem (klasyfikacja danych na zbiorze liniowo separowalny) jest taka, iż α imoją teraz
górne ograniczenie w postaci C .
Nieliniowa Maszyna Wektorów Wspierających
Jak powyższe metody mogą zostać uogólnione do przypadku kiedy funkcja decyzyjna nie jest
liniową funkcją danych wejściowych? Boser, Guyon i Vapnik (1992) pokazali, iż w tym celu
może być użyta stara sztuczka (Aizerman 1964). Po pierwsze zauważono, że dane w
problemie liniowej separacji zbioru liniowo separowalnego pojawiają się w formie produktu
x i ∙ x j. Więc najpierw załóżmy, że rzutujemy dane wejściowe do innej (możliwe, iż nawet
nieskończenie wymiarowej) przestrzeni Euklidesowej H , używając danej funkcji Φ:
Φ : Rd↦ H . (33)
Wówczas oczywiście algorytm trenowania SVM zależałby wyłącznie od danych wejściowych
poprzez ich produkt w przestrzeni H i przyjmował następującą postać: Φ (xi)∙ Φ (x j). Teraz
gdyby to była funkcja jądra K taka, iż K (x i , x j)=Φ (x i) ∙ Φ(x j) . Potrzebowalibyśmy tej
funkcji K do treningu SVM, bez jakiej kol wiek wiedzy o funkcji Φ. Ważnym przykładem
fun. jądra jest:
K (xi , x j)=e−||x i – x j||
2
2σ 2 (34)
tzw. promieniowa funkcja bazowa. W tym szczególnym przypadku gdy H jest
nieskończonego wymiaru, praca bezpośrednio z Φ nie byłaby prostą sprawą. Jednakże kiedy
zastąpimy produkt x i ∙ x j przez K (x i , x j) w procesie treningu maszyny uczącej, otrzymamy
SVM w przestrzeni nieskończonej, w dodatku w czasie w jakim trening byłby prowadzony na
danych niezmapowanych. Jedyną różnicą co do poprzednich metod klasyfikacji jest faza
testów, w której poprzez SVM obliczamy produkt x i w , a bardziej precyzyjnie znak fun.:
f ( x )=∑i=1
l
αi y iΦ ( xi ) ∙ Φ ( x j )+b=∑i=1
l
αi y i K (x i , x j)+b (35)
gdzie si są wektorami wspierającymi. Podsumowując: Możemy uniknąć bezpośredniego
obliczenia Φ (x) i użyć:
K (si , x)=Φ (si ) ∙Φ ( x ). (36)
Czyli nie mogąc ustalić liniowej separacji w danej przestrzeni, przechodzimy do przestrzeni o
większym wymiarze i tam szukamy hiperpłaszczyzny separującej. Przy tym nie musimy
określać operacji przekształcającej cechy z niższego wymiaru w wyższy. Wystarczy znać
funkcję jądra.
plan referatu
ONLINE SVM
Uczenie w trybie bieżącym (a ang. on-line learning) jest ważną dziedziną badań nad
maszynami uczącymi ze względu na teoretyczny i praktyczny wymiar tego zagadnienia.
Proces nauki dokonuje się w kilku próbach. W próbie t algorytm ma na wejściu daną x t ϵ Rn i
musi ustalić dla niej etykietę. Następnie wyznaczona etykieta jest porównywana z prawdziwą
i algorytm płaci karę jeżeli predykcja się nie powiodła. Ostatecznym celem algorytmu jest
zminimalizowanie błędów jakie się dokonują podczas jego działania. Aby to osiągnąć
algorytm mógłby uaktualniać swój mechanizm przewidywania po każdej próbie, by w
kolejnych być już bardziej dokładnym.
Częstokroć rozwiązanie przy użyciu klasyfikatora SVM ma niewiele współczynników α i≠ 0 ,
które odpowiadają x i (wektorom wspierającym) i y i (zdefiniowanej funkcji decyzyjnej).
Dlatego zbiór wektorów wspierających dobrze określa charakterystykę całego zbioru
treningowego. Proces trenowania SVM jest kosztowny gdyż wymaga rozwiązania problemu
kwadratowego (QP), lecz jeżeli ograniczymy nasz SVM do wektorów wspierających
(SVs - z ang. support vectors), czas trenowania zostanie znacząco zredukowany przy
jednoczesnej małej stracie precyzji. I to jest właśnie główna idea jaka kryje się za algorytmem
Online SVM.
Wiedza o tym, że niewiele z danych treningowych ostatecznie zostaje wektorami
wspierającymi może się przyczynić do znacznego zmniejszenia tych danych przy ponownym
treningu. Wszystkie pozostałe wektory nie są brane pod uwagę przy kolejnych treningach.
Nazwijmy nasz zbiór wiadomości treningowych dla filtru spamu jako TD. Następnie
wybieramy spośród nich wektory wspierające SV1 i klasyfikujemy nową wiadomość x0. Po
sprawdzeniu prawdziwej etykiety dla wiadomości x0, jeżeli była ona niepoprawna, musimy
przetrenować nasz system dla zbioru SV1 + x0. Teraz ustalamy wektory wspierające ze z SV1
+ x0, nazwane SV2. I znów trenujemy i testujemy filtr. Cała inkrementacja kończy się gdy na
wejściu nie ma żadnych próbek do zbadania.
Online SVM spam filter:
1) Inicjalizacja:
Na wejściu SVM daj kilka przykładów ze spamu i dobrych wiadomości.
Przetrenuj SVM.
2) Nauka:
Zaklasyfikuj x i.
Spytaj o prawdziwą etykietę x i.
Jeżeli predykcja była zła, przetrenuj SVM dla S V i+ xi.
3) Koniec:
Powtarzaj cały proces aż próbka xn zostanie przetworzona.
plan referatu
MAPOWANIE TEKSTU NA WEKTORY WSPIERAJĄCE
Parametryzacja tekstu maili na wejściu dla maszyny uczącej może być zrealizowane na wiele
sposobów, zwłaszcza gdy tekst zawiera hipertreść z metadanymi tak jak format HTML, czy
informacje nagłówkowe wiadomości. Wiele badań wykazało, iż porządek słów w tekstach lub
ich formy gramatyczne, mają małe znaczenie dla problemów kategoryzacji. Istotniejszy jest
natomiast współczynnik występowania słów w badanych treściach. Skoro jest to podejście
proste i wydajne traktujmy dokument tekstowy jako zbiór słów, który może być
reprezentowany jako wektor w przestrzeni wielowymiarowej, gdzie każda współrzędna to
ilość wystąpień jednego wybranego tematu słowa występującego w treści wiadomości, czyli:
¿¿ s(1) ,¿ s(2) ,¿s (3),¿ s(4) ,... ,¿ s (n)>¿ (37)
jest reprezentantem treści mail’a, gdzie n – jest liczbą wyszczególnionych tematów słów,
ułożonych leksykograficznie, s(i) – i-ty tematem słowa, a # - prostą funkcją zliczająca ilość
wystąpień danego tematu. Ze względu na możliwość wysokiej wielowymiarowej przestrzeni
cech trzeba dla efektywności zastosować różne metody wyboru najbardziej pożądanych treści
z jednoczesnym wyłączeniem cech niepożądanych. Pierwszą rzeczą jest redukcja wymiarów
poprzez usunięcie słów najczęściej pojawiających się w tekstach („i”, „albo”, „że”) i tych
pojawiających się najrzadziej. Następną możliwością jest wybór słów najlepiej opisujących
kategorię niepożądanych treści (100-300 słów), czy treści pożądanych. Często aby uprościć
późniejsze rachunki można zastosować normę euklidesową dla współrzędnych wektorowych
oraz ograniczyć ilość analizowanego tekstu do pewnej liczby pierwszych znaków (np. 3000
znaków).
Sposób dający lepsze rezultaty uwzględnia współczynnik występowania tematów słów dla
całego zbioru dokumentów na wejściu, a mianowicie.
Niech wektor:
d⃗=(d1 , …, d|F|) (38)
będzie reprezentował dokument d . Wtedy waga d i jest ustalana poprzez wzór:
d i=TF (wi , d ) ∙ IDF ( wi ), (39)
gdzie
TF (wi , d ) - (z ang. term frequency – człon częstotliwości) – ilość wystąpień tematu słowa w i
w dokumencie d;
IDF(wi) - (z ang. inverse document frequency- odwrócona częstotliwość dla dokumentów ) –
wyrażona jest wzorem:
IDF(wi)= log¿. (40)
Tu:
¿ D∨¿ - ilość dokumentów;
DF (wi , d) - (z ang. document frequency – częstotliwości w dokumentach) – ilość
dokumentów, w których pojawia się słowo o temacie w i .
Mówiąc w uproszczeniu wzór (39) mówi, iż d i dla tematu w i będzie ważnym
współczynnikiem dla dokumentu d jeżeli występuje w nim często, natomiast jeżeli temat w i
będzie się pojawiał w wielu dokumentach, wówczas IDF będzie malał a temat w i będzie tracił
na znaczeniu jako dana treningowa.
plan referatu
HISTORIA
Historia wektorów wspierających w pigułce:
Wczesne lata sześćdziesiąte – została opracowana metoda “support vectors” w celu
konstruowania hiperpłaszczyzn do rozpoznawania obrazu ( Vapnik i Lerner 1963,
Vapnik i Czervonenkis 1964) – liniowa SVM.
Początek lat 90-siątych XX wieku: uogólnienie metody pozwalającej na
konstruowanie nieliniowych funkcji separujących (Boser 1992, Cortes i Vapnik 1995).
1995: dalsze rozszerzenie pozwalające otrzymać estymację funkcji ciągłej na wyjściu
– regresja (Vapnik 1995).
plan referatu
PODSUMOWANIE
Ten referat jest zaledwie wierzchołkiem góry lodowej w dziedzinie badań nad maszynami
uczącymi z wykorzystaniem wektorów wspierających oraz wykorzystania tego mechanizmu do
tworzenia filtrów spamu. Wiele zagadnień i pojęć znacznie poszerzyłoby stronnice tegoż
opracowania, jak np. twierdzenia ze statystycznych teorii estymacji funkcji przez maszyny
uczące Vapnika i Chervonenkisa (VC-wymiar, pokrycie , entropia), ograniczenia na funkcje jądra,
optymalizacje problemu trenowania SVM, rozwiązania problemu QP i ich optymalizacje, wiele
heurystyk na przygotowanie danych do treningu, i na koniec dostrajanie parametrów filtrów dla
uzyskania najwyższego stopnia efektywności.
Natomiast niniejsze opracowanie może być dobrą zachętą do dalszych badań w tej dziedzinie lub
testowania wydajnego oprogramowania, w którym zaszyte są kwestie poruszane tutaj, a które
jest wolno-dostępne w serwisach internetowych.
plan referatu
BIBLIOGRAFIA
Vapnik V. (1995-2000). “The Nature of Statistical Learning Theory”-2nd ed. New York, NY: Springer-Verlag.
Burges Ch. J. C. (1998)Artykuł: “A tutorial on Supprot Vector Machines for Pattern Recognition”Microsoft Research
Cortes C.,Vapnik V. (1995)Artykuł: “Support-Vector Networks”AT&T Bell Labs
Thorsten Joachims (2005)Artykuł: “A Probabilistic Analysis of the Rocchio Algorithm with TFIDF for Text Catego-rization”Universität Dortmund Germany
Sculley D., Wachman G. M. (2006)Artykuł: “Relaxed Online SVMs for Spam Filtering”Tufts University USA
Qiang Wang, Yi Guan, Xiaolong Wang (2006)Artykuł: “SVM-Based Spam Filter with Active and Online Learning”Harbin Institute of Technology China
Cybar P., Kluczyński M. (2005)Artykuł: “Support Vector Machines for Text Categorization and Face Detection”Uniwersytet Wrocławski
prof. Greg GrudicWykłady: “Machin Learning”Computer Science Colorado Institute USA
prof. Andrew W. Moore (2003)Wykłady: “Support Vectors Machines”Carnegie Mellon University USA
plan referatu