从零开始编写AI程序

数据与赋权

如果你是一个十分了解旅游业行情的人,并且想选择跟团游,要让机器学会选择符合自己经济条件的目的地,你会怎样构思?

首先,肯定是建立数据集

你会收集旅行社提供的的报价、出发地与目的地之间的距离、游玩的天数、服务的配置、淡季旺季等等。然后你会考虑到,发达国家的景点普遍要比发展中国家的贵,它们的报价可以归纳为两个计算体系。这样,你便可以制作成一个可供参考的集合。

按照传统编程,你这时候或许会根据这个数据集算出不同因素的权重,然后运用乘法等等手段,算出一个估价,并利用估价筛选合适的目的地。

但我们都知道,汇率在变化,机票酒店均有涨有跌,这样一来,每一次小的变动,权重都需要重新计算,才能较为准确地估计出价格

这时候,最好的办法就是让机器学会自主分配权重。

有一个很好的方法可以应用到其中:你可以将权重全部设为“1”,然后将每个影响参数都带入公式,算出一个初始值。当然,这个值有极大的概率和实际值相差千里,那么怎么减少误差呢?我们可以运用最小二乘法等手段,寻找数据的最佳函数匹配。

那么如果你是一个旅游行业方面的小白,并不知道什么因素影响着旅游价格呢?你也同样可以运用AI选择适合自己经济条件的旅游目的地。

这时候,你的数据集可能就会变成一个由目的地、不同时间的价格、区域组成的集合。通过机器学习,计算机同样也会为这几个大的影响因素赋予权重,从而估算出大体的价格。

最精确的权重

当然,在你只想去热门旅游地的情况下,上面的做法就是可靠的。如果你想将全球的可旅游地点纳入你的考虑范畴,用最小二乘法寻找最佳权重显然有些不切实际。

这时候该怎么做呢?

如果将时间数据和价格间所有可能权重得出价格与实际价格的误差可视化,我们会得到一个碗状的图像。而最低点就是最佳的权重。

那么要如何到达最低点?我们看到这一函数图像呈现网格状,沿着其中一条线,斜率越靠近0,那么权重也就越优。这一运用斜率“指路”的做法叫批梯度下降。如果你对此感兴趣,不要害怕,来了解了解更多细节吧。

那么,找到让斜率等于“0”的点就可以得出最优解了吗?其实不然。

由于权重过于贴合数据集里的数据,过拟合的问题便会出现。

要解释所谓过拟合问题,让我们打个恰当的比方。如果你开了一家酸辣粉店,你的第一个顾客喜欢又酸又辣,粉多菜少,你一条条都做到了,你会发现这个顾客很喜欢你的产品。但是第二个顾客却只需要一碗酸一点的粉,那么给第一位顾客的粉将不适合第二位顾客。这便是过拟合。

也就是说,往往我们得出的最佳权重只是对数据集本身来说的,对于数据集以外的别的旅游目的地,却并不适用。

而这些问题,可以用正则化或者交叉验证数据来解决。即你可以利用这个权重,到不在数据集里的冷门景点试试看,又或许可以减少影响因素的考虑。

猜你喜欢

转载自www.cnblogs.com/xlzp/p/12161425.html
今日推荐