机器学习篇01:在线学习的支持向量机算法学习笔记

在线学习的支持向量机算法学习笔记

oisvm算法实现说明

% 本程序是用于实现基于在线学习的调制信号识别的程序

% % % 第一步:调制信号的生成
% 首先是7个信号:2ASK,2FSK,2PSK,4ASK,4FSK,4PSK,16QAM的实现,完全基于公式
% 问题1与解答:
% 而至于为什么要设置0.02MHz这么高的载波频率,完全是为了我们生成的信号点足够密集,

% % % 第二步:
% 信号预处理,对生成的7个信号进行预处理
% ①加噪声
% ②计算功率值,用于下一步的特征值的计算

% % % 第三步:特征提取
% E.E.Azzouz和A.K.Nandi发表多篇调制信号识别的类似文章,利用他们提出的五个参数 ,
% 采用判决数的方法对数字信号集(2ASK、4ASK、2FSK、4FSK、2PSK、4PSK)进行识别分类,
% 在信噪比10dB时,识别率高于90%,在信噪比为20dB时,识别率高于96%。

% 本次实验使用SNR=5来进行测试。
% 对于文献中提及的5个特征值进行计算,这个计算也是完全基于公式
% 要点1:公式和上一步中的公式都是直接列在笔记本上的
% 要点2:重要的关键点都写在每一行的注释上了。

% % % 第四步:特征向量的排放
% 特征向量为5*100的矩阵
% Rmax零中心归一化瞬时幅度的谱密度的最大值 存入第一行
% deltaap零中心非弱信号段瞬时相位非线性分量绝对值的标准偏差 存入第二行
% deltadp零中心非弱信号段瞬时相位非线性分量的标准偏差 存入第三行
% deltaaa零中心归一化瞬时幅度绝对值的标准偏差 存入第四行
% deltaaf零中心归一化非弱信号段瞬时频率绝对值的标准偏差 存入第五行

% % % 第五步:将提取出的特征输入oisvm模型进行训练
% 说明使用到的函数:
% model_init:用于生成空模型:model_bak,并根据输入的数据进行不断更新,最终得到训练好的model_bak
% k_oisvm_train(在线独立支持向量机训练算法): 用于进行oisvm训练,也是一个基于数学模型的仿真,
%
% 该算法来源于文献References:
% Orabona, F., Castellini, C., Caputo, B., Jie, L., & Sandini, G. (2009).
% Online Independent Support Vector Machines.
% Pattern Recognition, In Press.

% 该文献中给出一个范例,进行仿写即可。
% MODEL = K_OISVM_TRAIN(X,Y,MODEL) trains an classifier according to the
% Online Independent SVM algorithm, using kernels.
% 告知我们该函数使用一个核函数进行OISVM训练,得到一个分类器。

% model_predict:
% [PREDICTED_LABEL,MARGINS] = MODEL_PREDICT(X,MODEL,AVERAGE) predicts
% the label of the instances X, using the trained MODEL.
% 该函数是根据模型进行预测,使用训练后的model_bak模型,生成输入的数据X的标签,根据标签的匹配度来判别准确率。
% 根据下列范例进行仿写即可。
% Example:
% % Define a Gaussian kernel, with scale = 2
% hp.type=‘rbf’;
% hp.gamma=1;
% % Initialize an empy model
% model=model_init(@compute_kernel,hp);
% % Trains a kernel oisvm on the first 5000 samples
% K = k_oisvm_train(p(:,1:5000),t(1:5000),hp);
% % Test the last hypothesis on the next 5000 samples
% preds_last=model_predict(p(:,5001:10000),model);
% numel(find(preds_lastt(5001:10000)))/numel(preds_last)
% % Test the average hypothesis on the next 5000 samples
% preds=model_predict(p(:,5001:10000),model,1);
% numel(find(preds_av
t(5001:10000)))/numel(preds_av)
% 说明整体的oisvm算法流程:
% 1.将特征集Pi进行划分,前一半用于训练,后一半用于测试,训练集x_tr,测试集x_te,训练集标签y_tr,测试集标签y_te
% 2.根据model_init生成一个空模型model_bak
% 3.利用k_oisvm_train,输入x_tr,和model_bak,不断的进行改进,逐步得到训练完成的model_bak.
% 4.利用model_predict,输入x_te,和训练完成的model_bak,从而得到x_te的预测标签集y_pre,
% 5.计算y_pre与y_te的匹配率,即为训练模型的正确率。也就是对调制信号的识别率
% 6.如此计算得到的SNR=5db的时候的正确率都可以达到87%以上,最好识别率为100%,最差识别率为87%,根据型号的不同呢而不同。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

IMMUNIZE

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值