聚类
聚类是典型的非监督式机器学习方法,他们不需要训练数据,当然也不能做预测,但是他们可以对已有数据集进行分类。
这里介绍分集聚类和k-均值聚类(k-means)
分集聚类
她的工作过程就是先把最近的两个点(A and D)合并为A‘,再将A'与C进行合并,以及B和E进行合并,最终形成两个不能合并的点’,而已经合并的点是一种树状图关系。
最常见的应用就是不同性质文章的分类,最后比如两会类的文章和亲子类的文章肯定是两个分类。
k-均值分类(k-means)
与分集聚类最大的不同是可以在一开始指定需要输出的群组数量,而且过程是:如需要3个群组,那么首先会随机的在平面上“撒”3个点,接着这3个点会像磁铁一样,“吸”周围的点,而由于作用力与反作用力,她在吸别人的同时也会移动,最终会形成一个稳定的状态,输出3个群组。
在实际情况中,常常是两者混用:先用k-means分几个组后,再用分集聚类对这几个组分类。
在物联网中的应用
当今比较火爆的工业4.0中,有一个重要的改进就是从以前死板的传统工业进化到可用户可定制产品,那么,来自用户的单子当然是千奇百怪,然而,使用聚类就可知道用户的需求大概分为哪几类,然后再生产少量的几种“个性”产品就能满足大部分用户的需求。
多维缩放
上面的聚类看来容易,但是仔细看发现都是二维平面的数据,最多到三维,如果数据是多维的(大于4)怎么办?多维缩放就是来解决这个问题的。一般是缩放至2为。过程是:比如一组事件有多个特征,那么我们根据计算欧氏距离的方法,得到这些特征的相对距离,再把他们随即的投射到二维平面上,通过迭代的方法调整这些时间点之间的距离,最终得到一个稳定的状态,之后就可以用聚类的方法对这些点进行处理了。
非负矩阵因式分解
也是一种非监督方法。因为他的主要作用是找到数据集的特征,而不是预测。方法是将源数据矩阵变化为两个矩阵的乘积,一个是特征对源数据对象们的权重矩阵,另一个是对象观测值对特征的权重。
比如我们采集了工厂在一年内的生产数据作为源数据集(横轴产品,纵轴时间:天),之后找出特征矩阵后,就会发现某个特征对某个产品的权重非常大,再找到对这个特征权重非常大的那天,回忆一下,突然发现那天正好有个XX事件,才知道原来XX事件对这个产品的影响是非常大的呢!
优化
优化的本质是要设计成本函数,并找到最小成本的方法。假设一个成本函数的可视化如下:
最笨的办法当然是计算每个点的高度,并找出最小的成本。但是在大量数据的应用中,这种方法是不现实的。
那么进化一下,假设我先随机降落在这个平面的任意点上,之后环顾四周,找到最小的方向,走过去,再环顾四周找最小的方法,直到四周都比现在所处的点大。但是可以发现平面上其实是有许多的局部最小点,这种方法是不科学的。
那么再进化一下:
退火法
这时由金属的冷却得来的灵感。具体来讲,在算法开始时会规定一个温度,并会慢慢下降直到0。与上面类似,一开始也是随机降落到平面上的一点,但是之后不是找最小的方向,而是随机一个方向,如果比当前值小,那么就会“走”过去,如果比当前值大,那么会再引入温度值进行判断是否可以走过去。直到温度降为0,就会寻找到最小值的点。显然,在一开始温度较高时,算法容忍向高处走的可能性就越大,随着温度下降,就越来越小。
遗传算法
分为变异和交配。
当上述的优化算法得到一组成本最小的参数后,我们可以将其中表现最好的几个解该个参数,得到一组变异的解,再通过计算他们的成本,看是否可以继续变异。而交配则是对最优的解集中两个解各取一部分,然后得到一组新的解集。结束条件一般是后代不再进化了,或是规定的代数达到了。
物联网的应用
这个和工业生产的结合应该是最紧密的了。如果工厂有一组不同原料配比出来的,不同生产工艺,不同流程产出的相同的产品,当然会有不同的成本,那么,怎么做才可以做到成本最低就是一个非常有价值的事情了。
好了,暂时先说这么多吧,最近要赶一个paper的deadline了。下次更新的时候,我会介绍具体怎么使用,如用python的机器学习库来解决不同的实际问题。