感知机算法:
1、首先找到点,使得sign(wt * xt) != yt,
那么如果yt = 1,说明wt和xt呈负角度,wt+1 = wt + xt能令wt偏向正角度。
如果yt = -1, 说明xt和wt呈正角度,wt+1 = wt - xt 能令wt偏向负角度。
总之,参数更新为wt+1 = wt + yt * xt
2、直到分好为止。数据需要线性可分。
算法证明:
1、假设wf是正确的,证明wn和wf越来越接近,内积越来越大
wf * wt+1 = wf*wt + wf*yt*xt > wf * wt, 原因是对任何t,wf分类正确,那么sign(wf * xt) = yt,那么wf * yt * xt > 0
2、wt增长的不太快
||wt+1|| = ||wt|| + ||xt|| - 2wt * yt * xt < ||wt|| + ||xt||
3、角度变化
内积增长量级是n, 长度增长量级是sqrt(n),所以会收敛。
优缺点:
优点:简单、易实现、高维也可以。
缺点:线性可分、停止时间(由wf决定)
线性不可分怎么办
1、Min犯错误的点, np-hard问题。
pocket 贪心算法
2、就瞎跑
时间: 2024-12-28 21:04:52