(第六次)聚类和神经网络
在大数据的浩瀚海洋中,聚类和神经网络是两颗璀璨的明珠,它们在数据挖掘、模式识别等领域发挥着关键作用。今天,我们就来深入探索聚类与神经网络的奥秘。
一、聚类:给数据 “找圈子”
聚类,简单来说就是把相似的数据点归到同一类,让数据 “物以类聚”。
(一)K - Means
K - Means 是最经典的聚类算法之一,就像给一群人分小组,先指定要分 K 个组。
- 选初始中心:随机选 K 个数据点作为初始的 “小组中心”,比如要把学生分成 3 组,就先选 3 个学生当各组的 “组长”。
- 分配数据点:计算每个数据点到这 K 个中心的距离,把数据点分到距离最近的中心所在的组。好比学生们根据离各个 “组长” 的远近,选择加入对应的小组。
- 更新中心:每个组内的所有数据点计算平均值,作为新的组中心。就像小组里的成员一起算出平均水平,换一个更能代表小组的 “组长”。
重复步骤:不断重复分配数据点和更新中心的过程,直到组中心不再有明显变化,此时数据就被较好地分成了 K 类。
(二)层次聚类(补充)
层次聚类则是从另一种思路来聚类,它会构建一个数据的层次结构。
- 凝聚式:从每个数据点都是一个单独的类开始,然后每次把最相似的两个类合并,逐渐形成更大的类,直到所有数据点都合并成一个类或者达到停止条件。可以想象成一开始每个同学都是一个小团体,然后慢慢找最合得来的同学合并小团体,最后形成几个大团体。
- 分裂式:和凝聚式相反,从所有数据点都在一个类开始,然后每次把一个类分裂成两个更细的类,直到每个数据点都是一个类或者满足停止条件。就像一开始是一个大班级,然后逐渐分成几个小班,再分成更小的小组。
二、神经网络:模仿大脑的 “数据处理器”
神经网络的灵感来源于人类的大脑,它通过构建多层的神经元结构,来学习数据中的复杂模式。
(一)核心组成部分
- 神经元结构
神经元是神经网络的基本单元,就像大脑中的神经细胞。一个神经元会接收多个输入,然后对这些输入进行处理,再输出结果。
可以把神经元想象成一个小工厂,输入是原材料,工厂会对原材料进行加工(加权求和,再加上偏置),然后根据加工结果决定输出多少产品(通过激活函数得到最终输出)。 - 常见激活函数
激活函数的作用是给神经元的输出加入非线性因素,让神经网络能学习更复杂的关系。
- Sigmoid 函数:它的输出在 0 到 1 之间,形状像一个 S 曲线。可以把它看作是一个开关,当输入达到一定程度时,输出接近 1(开关打开),否则接近 0(开关关闭)。不过它在输入很大或很小时,梯度会变得很小,容易出现 “梯度消失” 的问题,影响网络训练。
- ReLU 函数(修正线性单元):它的计算很简单,输入大于 0 时,输出就是输入本身;输入小于等于 0 时,输出为 0。就像一个单向的阀门,只允许正的信号通过。ReLU 函数能缓解梯度消失问题,让神经网络的训练更高效,所以在很多神经网络中被广泛使用。
- Tanh 函数:输出在 - 1 到 1 之间,也是 S 形曲线,不过是关于原点对称的。它比 Sigmoid 函数更 “激进” 一些,能让输出有正有负,在一些场景下效果更好,但同样存在梯度消失的问题。
(二)模型训练
神经网络的训练过程,就是让网络通过数据学习到合适的参数(权重和偏置),从而能对新数据做出准确预测。
- 前向传播:把输入数据输入到神经网络中,从输入层开始,依次经过隐藏层,最后到输出层,得到网络的预测结果。这就像数据在神经网络中 “走了一遍流程”,得到一个初步的输出。
- 计算损失:把网络的预测结果和实际的真实结果进行比较,计算出损失值,这个损失值反映了预测的误差有多大。比如预测房价是 100 万,实际是 120 万,损失值就体现了这 20 万的差距。
- 反向传播:根据损失值,从输出层往回走,计算每个参数对损失的影响(梯度),然后按照一定的规则(比如梯度下降法)调整参数,使得损失值尽可能减小。这一步就像根据考试成绩,往回分析每个知识点的掌握情况,然后针对性地复习改进,让下次考试成绩更好。
- 迭代优化:不断重复前向传播、计算损失、反向传播的过程,直到损失值足够小或者达到预定的训练次数,此时神经网络就学到了能较好拟合数据的参数。
(三)张量基础
在神经网络中,数据是以张量的形式存在的。张量可以理解为多维数组,比如标量是 0 维张量,向量是 1 维张量,矩阵是 2 维张量,而更高维的数组就是更高维的张量。
神经网络处理数据时,就是对这些张量进行各种运算,比如矩阵乘法等,从而实现对数据的处理和学习。可以把张量想象成不同维度的 “数据容器”,神经网络在这些容器之间进行数据的传递和加工。
三、聚类与神经网络的交融
聚类和神经网络并非孤立存在,它们可以相互结合,发挥更大的作用。
用聚类给神经网络的训练数据分组,让神经网络在训练时能更有针对性地学习不同组数据的特征。比如先把用户根据消费习惯聚类,然后用神经网络分别学习不同消费习惯用户的行为模式。
也可以用神经网络来优化聚类的过程,让聚类的结果更准确。比如用神经网络学习数据的表示,再基于这些表示进行聚类。
总之,聚类能帮我们发现数据的内在结构,神经网络则能深入学习数据的复杂模式,二者结合,为大数据分析与计算打开了更广阔的天地,让我们能从海量数据中挖掘出更多有价值的信息。