机器学习实战教程(第二章 机器学习基本理论)

简单分类

训练数据样本包含输入向量以及对应的目标向量的应用被称作有监督学习,例如MNIST手写识别。如果训练样本仅有输入向量,而没有目标向量,则称为是无监督学习。

若一个输入样本的目标是将其映射到有限个离散标签中的一个,则称其为分类问题;若一个样本的目标是将其映射到一个连续区间,则称其为回归问题。

增强学习关注的是在给定条件下,找到合适的动作,使得获得的奖励达到最大值。所以这种学习没有给定最优目标,而Agent需要在一系列试验中寻找最优解。

多项式拟合

通过多项式拟合,我们来看看什么叫欠拟合和过拟合。
设N个样本构成的矩阵为 x=(x1,x2,...,xN)T ,对应的观测值为 t=(t1,t2,...,tN)T 。对应的拟合值为 y=y(x,W)=w0+w1x+w2x2+...+wMxM , 由此构成的代价函数为:

E(W)=12n=1N{y(xn,w)tn}
,所以目标就是最小化代价函数,使得整体上y与t最接近。
示例:
设要拟合的函数为 sin(2πx)

# -*- coding: utf-8 -*-
"""
Created on Tue Mar 15 09:02:46 2016

@author: thesby
"""

import numpy as np
import matplotlib.pylab as plt

x = range(10);
x = np.asarray(x, dtype=np.float32)
x = x / 10
#x = np.transpose(x)
t = np.sin(x*2*np.pi)
y = t + 0.1 * np.random.rand(10)

M = 1
p = np.polyfit(x, y,deg=M)
predict = np.polyval(p,x)
cost = np.sum(np.square(predict-y))
plt.figure()
plt.plot(x, y, '*')
x_show = range(100)
x_show = np.asarray(x_show, dtype=np.float32) / 100
t_show = np.sin(2 * np.pi * x_show)
predict_show = np.polyval(p, x_show)
plt.plot(x_show, t_show)
plt.plot(x_show, predict_show)
plt.show()

通过改变M,可以看到不同的拟合线。
这里写图片描述

这里写图片描述

这里写图片描述

这里写图片描述

可以看到在M=1,2时,明显曲线无法跟踪样本点,这是欠拟合现象,到了M=3,拟合曲线表现变好,这个拟合还算可以,但是到了M=10,虽然每个样本点都基本在拟合曲线上,但是最后那个翘脚表明了它后面肯定不是 sin(2πx) 的样子,这就是过拟合。

Excercise: 把M从0取到15,看看cost的变化,并用plt画出来。

未完待续(贝叶斯理论)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值