感知器算法
一、原理
引例:感知器就像一个老师在训一个学生,学生一件事做错了,就纠正他一下,如果下一次另一个事再做错了,就再
纠正一下,而对的就不管他,这样一直纠正,最后那个学生做什么事都是“完美的”。
感知器任务:通过已知的实例调节权重,使其能够预测出未知实例的结果。
符号表示:
if (w1*x1+w2*x2+…….>b) return true
else return false
由于b是常数,我们可以将b表示为-w0×X0,则可以表示为
if (w1*x1+w2*x2+…….+w0×x0>0) return true
else return false
训练方法:
当预测值等于我们期待的结果时: 什么也不用做
但当其小于的时候,说明我们增加的权值小了,赢补上一个正数数 例如所有xi××2的和数学表达推导如下:
w1*x1+a*x1*x1+w2*x2+a*x2*x2+…… 住:a为学习速率因子,会影响学习速率
w的更新值相当于wi=wi+a×xi
当其大于时候应改为减号,归结起来应为如下表达式:
wi=wi+a*(y-h(x))*xi
二、代码实现
function[w,b]=perceptionLearning(trainData,trainLabel,studyRate)
%trainData 训练数据
%trainLabel 训练数据的标签,取值为1和-1
%studyRate 感知器的学习率(0,1];
[nums,demens]=size(trainData);
%初始化w 和 b
w=zeros(1,demens);
b=0;
%训练过程
for i=1:nums
flag=(trainData(i,:)*w'+b)*trainLabel(