机器学习(第八周)--无监督学习聚类算法

聚类

聚类算法 kmeans原理:

1、随机选取k个中心点;

2、在第i次迭代中,对于每个样本点,选取最近的中心点,归为该类;
3、更新中心点为每类的均值;

4、i<-i+1 ,重复(2)(3)迭代更新,直至误差小到某个值或者到达一定的迭代步数,误差不变.

在每次迭代之后,误差变小过程就是趋于收敛的过程;达到一定程度,误差不变,已经完成分类



K-means优化函数



不同的初始化中心点对聚类结果影响较大,如下图

1、一般建议随机选取训练集中的样本进行聚类

2、在K值较小的情况下,多次随机选取中心点

对比不同的聚类结果,之后一般就可以得到对应的类别



聚类算法是一种无监督算法,因此没有明确的具体的确定类别K的方法,一般可以采用如下两种方法:

1、肘部法:我们分别计算K值确定(K=1,2,3,4….)条件下,所有样本的CostFunction J的值,然后我们将这些值连成一条曲线如上图(左)所示,随着聚类数目的增多,畸变(代价)函数的值是如何下降的,你会发现其畸变函数值会随着  K值增多极速下降,当到达K=3时,畸变值就会下降的很慢,K=3正好也是曲线的”肘”点

有时间你画出的曲线并没有明显的肘点,(右上图)此时肘部法则选择聚类数目将变得较为困难


2、用K均值聚类方法是为了得到聚类结果后用于后面的一些用途,根据后续的目的进行分类;


降维

降维的作用

  1. 节省了提取不必要特征的开销
  2. 去掉数据集中夹杂的噪
  3. 当数据能有较少的特征进行解释,我们可以更好的解释数据,使得我们可以提取知识。
  4. 实现数据可视化

主成因分析

1、主成分第一步要进行变量归一化(如下图),保证所有的特征向量均值均为0


2、计算样本协方差矩阵的特征向量, 按照特征值由大到小进行排列,这将给出成分的重要性级别,选择前1到k项列组成的矩阵,

3、对每个样本根据新得的特征值ureduce进行转换,输出新的样本集



主成因分析可以把一个高纬度的数据压缩为低纬度的数据,我们同样可以根据转换矩阵,把压缩之后的数据,近似的还原成高维数据


主成分分析中如何选择k?

主成分分析压缩数据的过程是基于最小投影距离,如果我们要求损失的信息不能超过原始数据的0.01,如下图


计算可转化为在调用计算协方差函数中的特征值的变量的选取:



PCA使用方法注意:

1、减少内存数据量

2、加速算法性能

3、可视化

PCA容易误用的地方:

1、开始算法设计就直接使用PCA降维,没有考虑原始数据在算法上的表现

            应该先考虑原始数据在算法上的表现,之后再考虑是否PCA,PCA能够在算法中实现哪些目的

2、使用PCA方法,降低过度拟合

            正则化的方法降低过度拟合是个更好的方式,PCA在降维的过程中会损失掉一部分信息,使用PCA降低过度拟合不是一个号的方法

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 好的,以下是一个简单的 DBSCAN 聚类算法实例: 假设我们有以下 10 个数据点: ``` data = [(2, 3), (2, 4), (2, 5), (3, 4), (3, 5), (4, 4), (4, 5), (6, 6), (7, 7), (8, 8)] ``` 我们要使用 DBSCAN 算对这些数据点进行聚类。首先,我们需要选择两个参数:半径 `eps` 和最小数据点数 `min_samples`。这里我们选取 `eps=1.5` 和 `min_samples=3`。 接下来,我们按照以下步骤进行聚类: 1. 随机选择一个未被访问过的数据点 p。 2. 找出以 p 为中心,半径为 eps 的圆内的所有数据点。 3. 如果圆内的数据点数目大于等于 min_samples,则将这些数据点标记为核心点,并创建一个新的簇。 4. 如果圆内的数据点数目小于 min_samples,则将 p 标记为噪声点。 5. 从圆内的所有数据点开始,递归地找出所有密度可达的数据点,并将它们加入到当前簇中。 6. 重复以上步骤,直到所有数据点都被访问过。 根据以上步骤,我们可以得到以下聚类结果: ``` data_labels = [-1, 0, 0, 0, 0, 0, 0, -1, 1, 2] ``` 其中,-1 表示噪声点,0 表示第一个簇,1 表示第二个簇,2 表示第三个簇。 具体实现可以使用 Python 的 Scikit-learn 库,代码如下: ```python from sklearn.cluster import DBSCAN data = [(2, 3), (2, 4), (2, 5), (3, 4), (3, 5), (4, 4), (4, 5), (6, 6), (7, 7), (8, 8)] dbscan = DBSCAN(eps=1.5, min_samples=3) data_labels = dbscan.fit_predict(data) print(data_labels) ``` 输出结果为: ``` [-1 0 0 0 0 0 0 -1 1 2] ``` ### 回答2: DBSCAN(Density-Based Spatial Clustering of Applications with Noise)是一种密度聚类算法,可以用来发现具有相似特征的数据点群集,并且可以识别数据中的噪声。 下面是一个使用DBSCAN算的实例: 假设我们有一组二维数据点,要对其进行聚类操作。数据点的分布如下: (1, 2), (2, 3), (3, 3), (8, 9), (9, 10), (10, 8), (4, 5), (7, 7), (8, 7), (9, 6) 在执行DBSCAN算之前,我们需要指定两个参数:邻域半径(ε)和最小点数(MinPts)。假设我们将ε设为2.5,MinPts设为3。 首先,选择一个未被访问的数据点(例如,(1, 2)),以这个点为中心,找到其ε领域内的所有点。如图所示,与(1, 2)距离小于2.5的点有(2, 3)和(3, 3)。 然后,对于每个邻域内的点,再次找到其ε领域内的所有点。我们发现(2, 3)和(3, 3)的ε领域内没有其他点。 由于(2, 3)满足最小点数的要求(MinPts≤2),所以将它标记为核心点,并为其创建一个新的簇。然后,将(3, 3)标记为已访问。 对于下一个未被访问的点(4, 5),重复上述过程。发现与(4, 5)距离小于2.5的点有(7, 7)和(8, 7),(7, 7)又与(8, 7)距离小于2.5。 (4, 5)、(7, 7)和(8, 7)满足最小点数的要求,所以它们都被标记为核心点,并为它们创建一个新的簇。 然后,按照相同的过程,依次处理所有未被访问的数据点。 最后,剩余的无满足最小点数要求的点都被标记为噪声,它们不属于任何一个簇。 根据以上的操作,我们可以得到两个聚类簇,分别包含点(1, 2)、(2, 3)、(3, 3)和(4, 5)、(7, 7)、(8, 7),并且有三个噪声点(8, 9)、(9, 10)、(10, 8)。 DBSCAN算通过基于密度的定义来进行聚类,可以发现任意形状的簇,并且相对于K-means等算对噪声更加鲁棒。 ### 回答3: DBSCAN是一种基于密度的聚类算法,可以自动发现具有相似密度的数据点。它的主要优势是可以处理任意形状的聚类,并且不需要事先指定聚类数目。 下面是一个关于DBSCAN聚类算法的实例: 我们假设有一个二维数据集,包含一些分布不规则的数据点。我们希望使用DBSCAN算将数据点聚类成若干个簇。 首先,我们选择一个适当的半径r和一个最小的密度阈值minPts作为DBSCAN算的参数。然后从数据集中选择一个未访问的数据点作为起始点。接下来,我们计算起始点的ε-邻域,即与起始点距离不超过r的所有数据点。如果ε-邻域中的数据点数目大于等于minPts,说明起始点是一个核心点。 然后,我们将这个核心点及其ε-邻域中的所有数据点标记为一个簇,并继续对这个簇中的每个未访问点进行进一步的密度可达判断。如果某个点也是核心点,则将其ε-邻域中的所有未访问点添加到当前簇中。 如果一个数据点不是核心点,但是在其他簇的ε-邻域中,我们将其标记为边界点。边界点不会形成新的簇,但是会被分配到相应的簇中。 最后,如果一个数据点既不是核心点也不是边界点,则将其标记为噪声点。 通过这样的过程,我们可以将数据点划分为若干个簇,每个簇代表一个聚类。而噪声点则表示无归类的数据。 DBSCAN算不仅适用于二维数据,也可以用于高维数据。它的聚类结果不仅能够处理不同形状的簇,还能够自动确定簇的个数。因此,在实际应用中,DBSCAN算具有较高的灵活性和可靠性,并且被广泛应用于数据挖掘和机器学习领域。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值