購入したのはいいんだが、
どうにも数式ばかりで、
なかなか読む気にならない。
ってか、
理屈はもう諦めて、
libsvmに逃げてしまったほうがいい気がする。
phpでLIBSVM
で、
ところでサポートベクターマシンって何なの?
実はここにSVMのサンプルがJavaのソースで公開されていて、
殆ど変更するところはなかったのですが、
なんとなくロジカルなところをPHPで書き直してみたのだけど、
(インデントがしっちゃかめっちゃか)
どうも速度がね。。。
[php]
= $c)) {
continue;
}
if ($lastchange) {
$e_cache = array();
}
$lastchange = false;
$t2 = $patterns[$j][‘k’];
$fx2 = calc_e($j);
$r2 = $fx2 * $t2;
if(!(($alpha2 < $c && $r2 < (-1 * $tol)) || ($alpha2 > 0 && $r2 > $tol))){
continue;
}
$i = 0;
$offset = mt_rand(0, count($patterns) – 1);
$max = -1;
for ($ll=0;$ll= $lambda[$l] || $c <= $lambda[$l]) {
continue;
}
$dif = abs(calc_e($l) - $fx2);
if ($dif > $max) {
$max = $dif;
$i = $l;
}
}
if($max >= 0){
if(step($i, $j)){
$changed = true;
$lastchange = true;
continue 2;
}
}
$offset = mt_rand(0, count($patterns) – 1);
for($l=0;$l= $lambda[$i] || $c <= $lambda[$i]) {
continue;
}
if(step($i, $j)){
$changed = true;
$lastchange = true;
continue 2;
}
}
$offset = mt_rand(0, count($patterns) - 1);
for($l=0;$l 0 ) ? 1 : -1;
}
function calc_e($i) {
global $patterns, $lambda, $b, $w, $e_cache;
if (isset($e_cache[$i])) {
return $e_cache[$i];
}
$e = $b – $patterns[$i][‘k’];
for ($j=0;$j (($x * 4 / 400) % 2 + ($y * 3 / 300) % 2 + 1) % 2 * 2 – 1,
‘x’ => $x, ‘y’ => $y
);
}
learn();[/php]