别人的算法链接

第一题

试编程实现Relief算法,并考察其在西瓜数据集3.0上的效果。
image.png
解:

  1. %{
  2. Relief算法实现西瓜数据集的分类,西瓜数据集:第1列是密度,第2列是含糖率,第3列是瓜
  3. 的属性(1为好瓜,-1为坏瓜)
  4. %}
  5. %密度为连续型,这里的西瓜数据集在0-1之间,不需要规范化
  6. load dataset.mat
  7. data = watermelon;
  8. delta_matrix = nearHit_Miss(data);
  9. for i = 1:size(data,1)
  10. delta = -delta_matrix(i,1)+delta_matrix(i,2);
  11. delta_result(i) = delta;
  12. end
  13. delta_result = sum(delta_result);
  1. function matrix = nearHit_Miss(X)
  2. %猜中近邻
  3. cmp = 1;%因为已经规范化到[0,1],所以最大为1
  4. for i = 1:size(X,1)
  5. for j = 1:size(X,1)
  6. if i ~= j
  7. if X(i,3) == X(j,3)
  8. cmp = min(abs(X(i,2)-X(j,2)),cmp);
  9. end
  10. end
  11. end
  12. hit_matrix(i) = cmp;
  13. end
  14. %猜错近邻
  15. cmp = 1;
  16. for i = 1:size(X,1)
  17. for j = 1:size(X,1)
  18. if i ~= j
  19. if X(i,3) ~= X(j,3)
  20. cmp = min(abs(X(i,2)-X(j,2)),cmp);
  21. end
  22. end
  23. end
  24. miss_matrix(i) = cmp;
  25. end
  26. matrix = [hit_matrix' miss_matrix'];
  27. end

这单独计算一个属性的结果,Relief算法的更新权重怎么选择?在这里,最后直接使用的权重的相加。

第二题

试写出Relief-F的算法描述。
解:
相比Relief增加了多分类的样本所占的比例,很奇怪为什么相同的分类不需要乘上对应的比例。

  1. ------------------------------------------------
  2. 输入:
  3. 数据集D
  4. 过程:
  5. 将数据集连续属性参数用Min-max归一化
  6. 计算数据集各样本分类的概率p
  7. 计算数据集各样本两两距离dist
  8. for x in D
  9. 根据dist找出各分类离x最近的样本集合xmin
  10. for xm in xmin
  11. if(x分类与xm相同)
  12. for i=1:k
  13. θ_i_i-diff(x_i,xm_i)^2
  14. end for
  15. else
  16. for i=1:k
  17. θ_i_i+p_i*diff(x_i,xm_i)^2
  18. end for
  19. end if
  20. end for
  21. end for
  22. 输出:
  23. 各属性相关统计量θ
  24. ------------------------------------------------

第三题

Relief算法是分别考察每个属性的重要性。试设计一个能考虑每一对属性重要性改进的算法。
解:
由于过滤式的算法都是很老的算法了,并没有去想太多。
一个简单的方法,将单一属性的相关统计量计算出来后,两两相加得到每对属性的相关统计量。不过这样并没有什么用,所有属性还是认为互不相关。

第四题

试为LVW设计一个改进算法,即便有运行时间限制,该算法也一定能给出解。
解:
LVW结束循环的条件是连续T次随即出来的特征都比当前最优特征集合差。当T和特征集合A很大时,LVW需要的迭代时间很长。
如果有运行时间限制,可以再给一个结束条件,设最多迭代次数t,当总迭代次数达到t的时候,结束迭代并返回当前最优的特征集合。t的值根据限定的时间来估计。

第六题

试析岭回归与支持向量机的联系。
解:
相同点:

  • 目标函数中都有参数项第十一章  课后习题 - 图2项。

不同点:

  • 岭回归中的第十一章  课后习题 - 图3是作为罚项,防止过拟合和病态矩阵的产生,而支持向量机中第十一章  课后习题 - 图4是优化目标。
  • 岭回归主要优化目标是累积平方误差。而线性支持向量机不以平方误差作为参考,而是将误差作为约束,来保证样本必须被求出的直线分隔,即第十一章  课后习题 - 图5,所以要求样本线性可分。

    第七题

    试述直接求解L范数正则化会遇到的困难。
    解:
    由于L范数不连续,非凸,无法用解析法很好的表示,只能通过遍历来寻求最优解,这导致L范数的最优化为题是个NP难问题。

    第八题

    试给出求解L范数最小化问题中的闭式解(11.14)的详细推到过程
    解:
    第十一章  课后习题 - 图6

    第九题

    试述字典学习与压缩感知对稀疏性利用的异同。
    解:
    字典学习通过学习出的字典使属性适度稀疏,使得文本数据在字频上线性可分,从而提升如SVM获得更好的性能。
    压缩感知则是希望原始信号本身虽然不稀疏,但是他内部是高度相关的,这样可以通过第十一章  课后习题 - 图7使得第十一章  课后习题 - 图8是一个稀疏的向量。此时通过采样信号第十一章  课后习题 - 图9来还原第十一章  课后习题 - 图10时可以得到足够接近的结果,从而更好的还原原始信号第十一章  课后习题 - 图11

    第十题

    一般字典学习:第十一章  课后习题 - 图12
    假设字典学习具有分组结构,即同一个分组内的变量同为非0或者同为0.

    输入:分组属性第十一章  课后习题 - 图13 输出:参数属性第十一章  课后习题 - 图14,要学习的字典第十一章  课后习题 - 图15 参数学习: 对于每个第十一章  课后习题 - 图16 求出第十一章  课后习题 - 图17 其中第十一章  课后习题 - 图18 其中第十一章  课后习题 - 图19是组成第十一章  课后习题 - 图20的向量 字典学习: 求出第十一章  课后习题 - 图21 其中第十一章  课后习题 - 图22