作业二


机器学习概述、 感知机模型、 KNN

截止时间: 2020 年 11 月 4 日 23:59

参考答案

内容

一、机器学习 – 极大似然估计

证明:模型是条件概率分布,当损失函数是对数损失函数时,经验风险最小化等价于极大似然估计.

对数损失函数: $ L(Y, P(Y|X)) = - \log P(Y|X)$

ETA: 0.5-1h

二、感知机

(二选一)用感知机模型对以下数据进行分类/拟合并绘制结果:

  1. 用感知机模型对dummy_data进行分类,打印并绘制结果 (ETA: 1-2h)
1
2
%matlab读取数据
[X, Y] = dummy_data(200);

dummy_data MATLAB代码

  1. (奖励分1)用感知机模型对Boston房价数据进行拟合,打印并绘制结果 (ETA: 1-4h)
1
2
%matlab读取数据
[X, Y] = house_price();

房价数据 MATLAB代码

Python 下可以使用 sklearn.datasets.load_boston

注: 完美的划分是不可能实现的,因此一般会根据分类结果构造误差,然后使误差最小化。

三、最近邻KNN

以下两个任选一个完成即可:

  • (Python/Matlab 或者 手写计算过程) 利用例题3.2构造的KD树求点x=(3, 4.5)的最近邻点, 给出推导或者计算过程 (ETA: 1-2h)
  • (Python/Matlab) 使用两两比较的方式实现KNN算法, 并绘制分类边界 (ETA: 1-2h)

四、 Fibonacci 数列的构造

Fibonacci 数的定义为: fib(n) = fib(n-1) + fib(n-2), fib(1) == fib(2) == 1, 定义并实现一个函数, 使得 fib_sequences(n) == [fib(1), fib(2), ..., fib(n-1), fib(n)]

有两种实现思路:

  1. 先实现 fib(n),然后 fib_sequence(n) = list(map(fib, range(1, n+1))) 即可
  2. 构造 fib_sequence(n, L=None) 然后在递归过程中不断更新并传递L

第一种实现每一次计算fib(n)的时候都需要重新计算fib(n-1)的值,第二种思路则把之前所有的值都记录下来,因此不需要重复计算。

  • 使用Python完成
  • 不计算分数
  • ETA: 5-15min

提交

提交内容

  • 机器学习 – 极大似然估计
    • 提供pdf(可以拍照截图)
  • 感知机最近邻KNN
    • 可运行的代码(Matlab或Python)
      • 格式:.m, .mlx, .py, .ipynb
    • [Optional] 补充材料 – 避免代码不可运行导致的扣分
      • 运行结果
      • 说明文档
      • Python代码以课程指定工具箱及其版本为准,若不然需要附带环境配置说明
  • Fibonacci 数列的构造
    • .py.ipynb

提交方式

  1. 将所有文件打包成zip并以你的学号命名,例如51160601160.zip
  2. 提交到FTP服务器的AI_homework/Graduate/HW2文件夹下
  3. (可选)你可以多次上传,以最后一次上传的结果为准

具体提交方式见作业提交系统

评分

总分 5 = 机器学习 1 + 感知机 2 + 最近邻 2

  • 代码不可运行时参考补充材料的内容酌情处理
  • 多个代码版本(不超过两个)以正确的为准
  • 奖励分1记录到总的平时成绩中
  • 对于多选一的题目,即使你全部做了也不会得到更多的分,只以最高得分计算。

参考结果

最近邻 KNN