本 科 实 验 报 告
实验名称:
H-K 算法
学 员: 曹务绅
学 号: 200604015014
培养类型: 技术类
年 级:
大三
专 业: 信息工程
所属学院:电子科学与工程学院
指导教员: 刘雨
职 称:
高工
实 验 室:
实验日期:
国防科学技术大学训练部制
一、实验目的
通过 H-K 算法的编写,掌握线性分类器的训练与设计方法。
二、实验内容和原理
1.内容:
分析 H-K 算法,用 matlab 仿真。
2.实验原理:
基本思想
将准则函数视作矢量 w 和 b 的函数,在迭代过程中修正 w 的同时,也对 b 进
行调整,运用最优化技术求得使准则函数取极小值的和 w*和 b*.
算法及步骤
1. b(k)的迭代公式为: (
b
k
1)
( )
k
b
J
( )
b
k
(
b
)
( )
k
β
1
误差矢量为 (
e
k
)
Xw
(
k
)
(
b ,调整矢量 (
β
k
)
k
)
e
(
k
)
e
(
k
)
,由广义逆
法知
T
w X X
(
)
1 T
X b X b ;
X b
1)
w 的迭代公式为 (
w
k
2. 算法流程图:
(
k
1)
X b
(
k
)
X β
(
k
)
算法评价
感知器算法和 W-H 法中,若只调整 w,余量矢量 b 是取定的常矢量,显然,
使用那些算法所得到的 w 受 b 影响。如果 b 的某些分量取得不当,所求得的 w 可
能不稳健,并且,b 选择不恰当还会影响收敛速度。H-K 算法是针对这种问题的一
种改进。虽然伪逆 X 计算量较大,但是 H-K 中只要求计算一次,因此复杂度代价
的增加是可以接受的。
三、实验说明
1.实验平台:
PC 系列计算机,WINDOW 操作系统,Matlab7.0
2.样本获取:
3.参数定义:
使用 matlab 的随机数发生器 rand 或 randn 函数。
在程序代码中有详细的注释。
四、实验步骤
1. 将原理中算法用 matlab 语言实现,其中,对于 H-K 的收敛终止条件,出于
编程水平有限和计算机的截断误差的原因,作了一定的简化和修改。
a.若 e(k)所有分量为 0, 则停止,得 w*,这种情况下线性可分。由于截断误
差的存在,即使在理论线性可分的条件下,也收敛不到 e(k)所有分量为 0,可以考
虑设置一个门限,低于这个门限的值认为是 0.
b.若线性不可分的条件下,若 e(k)的负的分量停止变为正值或者各分量均为
负值时终止。对于 b,我将迭代终止条件简化为:若 e(k)的各分量全为负值时终止,
或者迭代次数超过设置的门限时终止。
2. 按照算法编程并调试。
3. 输出分类结果和分类界面。
五、实验结果与分析
1. 首先生成 100 个训练样本,用 H-K 分类后得到界面。如下图所示:
这是线性可分的情况。任意输入 100 个待分类的样本,分类输出如下:
对于线性不可分的情况,如下图所示,也能够顺利生成界面,但是会有误
判的情况:
当然,产生了界面后对输入的待分类样本仍能分类,但是准确性没有了保
证,这时应该改进方法,采用分段二次准则法或者二次判别函数可以改善。
2. 因为时间比较紧张,只做了 2 类问题,多类问题较复杂,主要体现在 w(k)
和 b(k)的调整上,要产生多个界面,以后可以扩展。
六.心得体会