zoukankan      html  css  js  c++  java
  • 【机器学习】HK算法(LMSE算法) LMS算法改进保证线性可分时均方误差标准能够找到线性可分的超平面

    1.其实HK算法思想很朴实,就是在最小均方误差准则下求得权矢量。

    他相对于感知器算法的优点在于,他适用于线性可分和非线性可分得情况,对于线性可分的情况,给出最优权矢量,对于非线性可分得情况,能够判别出来,以退出迭代过程。

    2.在程序编制过程中,我所受的最大困扰是:关于收敛条件的判决。

    对于误差矢量:e=x*w-b

    若e>0 则继续迭代

    若e=0 则停止迭代,得到权矢量

    若e〈0 则停止迭代,样本是非线性可分得,

    若e有的分量大于0,有的分量小于0 ,则在各分量都变成零,或者停止由负值转变成正值时,停机。

    3.在程序编制中的注意点:

    1)关于0的判断,由于计算机的精度原因,严格等于零是很不容易的,而且在很多情况下也没有必要,则只要在0的一个可以接受的delta域内就可接受为零

    2)关于判断,迭代前后,变量是否发生变化

    在判断时,显然也不能直接判断a(i)==a(i+1)

    而应该|a(i)-a(i+1)|〈err

     

    4. HK详细代码如下:

    unction [w,flag]=HK(data)
    Iteration=20;
    flag=0;
    % [n,p]=size(data);
    n=size(data,1);
    b=ones(n,1)./10;
    c=0.6;
    xx=inv(data'*data)*data';
    w=xx*b;
    e=data*w-b;
    t=0;
    while (1)
        temp=min(e);
        temp1=max(e);
        if temp>-1e-4 && temp<0
            temp=0;
        end
        if temp>1e-3      
            deltab=e+abs(e);
            b=b+c.*deltab;
            w=w+c.*xx*deltab;
            e=data*w-b;
        else
            if temp>=0 && temp1<1e-4
                break;
            else
                if temp1<0
                    flag=1;
                    break;
                else
                    deltab=e+abs(e);
                    b=b+c.*deltab;
                    w=w+c.*xx*deltab;
                    e=data*w-b;
                    t=t+1;
                    if t>=Iteration
                        break;
            

  • 相关阅读:
    显示文件本地文件夹
    Select Dependencies选择依赖项
    搜索小技巧
    783. Minimum Distance Between BST Nodes BST节点之间的最小距离
    5. Longest Palindromic Substring 最长的回文子串
    12. Integer to Roman 整数转罗马数字
    3. Longest Substring Without Repeating Characters 最长的子串不重复字符
    539. Minimum Time Difference 最小时差
    43. Multiply Strings 字符串相乘
    445. Add Two Numbers II 两个数字相加2
  • 原文地址:https://www.cnblogs.com/huty/p/8518348.html
Copyright © 2011-2022 走看看