那些可以预测未来的方法们(未完,不必看)

这里所说的预测未来,并不是真的看到未来,而是根据现有的数据,推测未来的可能值。

1. K最近邻(k-nearest neighbours, KNN)算法

(来源于机器学习)

1.1 基本原理

存在一个样本数据集合,也称作训练样本集,并且样本集中每个数据都存在标签,即我们知道样本集中每一数据与所属分类的对应关系。输入没有标签的新数据后,将新数据的每个特征与样本集中数据对应的特征进行比较,然后算法提取样本集中特征最相似数据(最近邻)的分类标签。

1.2 应用实例

假设你要给餐具分类,根据餐具的直径和高度分出是碗还是碟子。
该算法的前提条件是已经有包含标签的训练样本集,即有足够的数据,包含明确的特征已经将它们分好了类,如下图所示,红蓝原点表示已经分好类的样本集:
在这里插入图片描述

那此时,你需要判断的绿色圆点,它是属于碗还是碟子呢?

那就可以采用KNN算法,其步骤为:
(1) 计算已知类别数据集中的点与当前点之间的距离;
(2) 按照距离递增次序排序;
(3) 选取与当前点距离最小的k个点;
(4) 确定前k个点所在类别的出现频率;
(5) 返回前k个点出现频率最高的类别作为当前点的预测分类。
在这里插入图片描述

由上方步骤说明以及图示,可以判断绿色圆点的餐具属于碗。

  • 如果物品的特征比较多,比如还要考虑餐具的花色位置等问题,可以将特征量化,采用向量表示,计算欧氏距离
  • 如果特征是同等重要的,作为等权重的特征,需要采用归一化的方式,将数字特征值转化为0到1的区间。归一化的方式为new_value = (oldValue -min)/(max - min),其中min和max分别是数据集中的最小特征值和最大特征值。(归一化的方式还有待考量,是个体描述特征值时的标准不一样,还是相互独立的特征值需要归一化,还是在解决不同问题时选不选择归一化)

1.3 预测未来 - 回归

在这里例举一个卖奶茶的例子。每天卖奶茶的杯数与当天的天气(1表示天气很糟,5表示天气非常好)与是否是周末(1表示周末,0表示工作日)有关。
现在有这样几组数据:

组号与信息卖出奶茶杯数
A(5, 1)30
B(3, 1)22
C(1,1)7
D(4, 0)20
E(2, 0)5
如果明天的天气是4,是周末1,那可能卖出多少杯奶茶?
应用最近邻算法计算出明天与当前已知组号的欧式距离:
组号距离
-------------
A1
B2
C3
D1
E根号5
选出距离最小的三组,分别是A,B,D,再计算售出奶茶数的平均值(30+22+20)/3 = 24杯。

1.4 遗留问题

  • k值的选取。在推测餐具的例子中,我选用了k = 3,如果k取4,那么碗和碟出现的频率是相等的,根据“步骤”中所写的内容,将无法推测出是哪个餐具,这时候应该怎么处理,减少k的值?
  • 什么时候归一化。

2. 最小二乘(Least Square, LS)

(来源于现代数字信号处理)
用尺子测量盘子的直径,y1-y5分别是5次测量到的值,用最小二乘的方法计算盘子的直径。
在这里插入图片描述

2.1 线性最小二乘

2.1.1 普通

在这里插入图片描述

2.1.2 矢量

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2.1.2 矢量应用

在这里插入图片描述
在这里插入图片描述
来源于:邹乐强.最小二乘法原理及其简单应用[J].科技信息,2010(23):282-283.

2.2 预测未来

在这里还是例举卖奶茶的例子,对前几天的天气情况与奶茶杯数进行一个统计,现在有这样几组数据:

天气情况卖出奶茶杯数
1030
722
27
824
48

画成图形结果为:
在这里插入图片描述
明天的天气状态是6,那应该准备多少杯奶茶最合适?
用最小二乘的方法在原图中画出回归曲线:
在这里插入图片描述
从图中可以看出天气状况为6时,大约需要准备18杯奶茶。
matlab代码

% 显示数据
plot(VarName1, VarName2, '*b');
% 显示坐标轴范围
axis([0 12 0 35]);
% 横纵轴标签信息
xlabel('天气'); 
ylabel('杯数');
grid on
hold on
% 应用最小二乘做回归曲线 polyfit,p返回时的是多项式前面的系数
[p, s] = polyfit(VarName1, VarName2, 1);
% 选定横轴的范围,用polyval求得各个点上的值并画出
x1 = 0:0.01:12;
y1 = polyval(p,x1);
plot(x1, y1, 'r-');

参考资料

1. 如何理解最小二乘法?.
2. 向量最小二乘的证明,很久之前我在b站看到的,找不到链接了
3. matlab 如何画图时将数据点的值在图中显示出来.
4. matlab中polyfit与polyval的功能?.
5. matlab 画图plot 标记符大小调整和填充.
6.什么是最小二乘法回归分析?.

3. 泊松分布

(来源于概率论)

4. 卡尔曼滤波器

python Kalman滤波跟踪(链接整理+理解)

  • 1
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

橙橙小狸猫

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

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

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

打赏作者

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

抵扣说明:

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

余额充值