【22-23春学期】AI作业4-无监督学习

1、K均值聚类

        K均值聚类是一种常用的无监督机器学习算法,是基于样本集合划分的聚类算法,用于将数据点分为K个簇。K均值聚类的基本思想是将数据点分为K个簇,每个簇内的数据点的距离最近,而簇间的距离最远。

2、K均值聚类是生成式还是判别式?

        K均值聚类是一种无监督学习算法,属于生成式方法。

3、KNN VS K-means

        KNN算法是一种监督学习算法,解决的是分类问题,它通过对测试数据进行学习来识别新的数据点是否应该被归类为它们所在的类别。在KNN算法中,我们需要已知需要预测的数据点的标签,而且每个数据点都有一个与其相关的类别标签。KNN中的K是距离数据点最近的点的数量。它可以在训练数据集的基础上进行预测,而且在大多数情况下,它可以比其他聚类算法更快地完成聚类。但是,KNN算法也有一些缺点,比如对内存要求较高,容易受到噪声干扰等等。

        K-means算法是一种无监督学习算法,它通过将数据点分为K个簇来聚类数据点。K-means算法的基本思想是将数据点分为K个簇,每个簇内的数据点的距离最近,而簇间的距离最远。K-Means中的K是聚类的数量。它可以自动确定初始聚类中心,并且可以在运行时进行参数调整,从而更好地适应数据集。同时,K-means也有缺点,比如选择的K值不好把握,并且因为是采取迭代的方法,很容易得到的是局部最优解。

4、主成分分析

        主成分分析是一种统计方法,可以将多个相关变量转换为线性不相关的变量。它的目标是通过某种线性投影,将高维的数据映射到低维的空间中,并期望在所投影的维度上数据的信息量最大(方差最大),以此使用较少的数据维度,同时保留住较多的原数据点的特性。具体来说,假设有m个原始变量,每个变量都有n个观测值,则经过PCA后,保留的变量数为m-n,这些变量的系数组成了原始变量的线性组合。

5、LDA VS PCA

        两者均可以对数据进行降维;两者在降维时均使用了矩阵特征分解的思想;两者都假设数据符合高斯分布。

        PCA是无监督学习算法,不需要预先标记数据,适用于数据点比较少的情况,用于降低数据的维度,去掉原始数据中的冗余信息,同时保留数据的主要特征,PCA是将原始数据投影到一个新的空间中,选择样本点投影具有最大方差的方向

        LDA是有监督学习算法,需要在数据集上先进行标记处理,适用于数据点比较多的情况,用于选择一个最佳的投影方向,使得投影后相同类别的数据分布紧凑,不同类别的数据尽量相互远离。LDA是在原始数据的空间中选择分类性能最好的投影方向。同时,LDA除了可以用于降维,还可以用于分类。

6、奇异值分解(SVD)

        奇异值分解(SVD)是一种矩阵分解方法,可以将一个非零的矩阵  表示为两个正交矩阵和一个与原矩阵互质的矩阵的乘积 。这种分解方法可以用于将矩阵映射到一个高维空间中,并尽可能地保留原始矩阵的特征。奇异值分解是唯一的。在任意矩阵上进行奇异值分解都必须得到唯一的结果。奇异值分解是一种方阵对角化的推广。奇异值分解可以用于数据压缩。通过将矩阵进行奇异值分解,可以将表示为一个上三角矩阵和一个下三角矩阵的乘积,从而将矩阵压缩到一个三维空间中,并且可以保留原始矩阵的大部分特征。

7、特征人脸方法(Eigenface)

        特征人脸方法(Eigenface)是指用于机器视觉领域中的人脸识别问题的一组特征向量。特征脸(Eigenface)是指用于机器视觉领域中的人脸识别问题的一组特征向量。

8、潜在语义分析(LSA)

        潜在语义分析是一种基于统计学的机器学习技术,用于从大型文本数据集中发现模式和规律,进行文本挖掘、自然语言处理和数据挖掘等任务。LSA的主要任务是从文本中提取出潜在的语义信息,即文本中不明显的、但是可能包含有用信息的部分。

9、期望最大化算法(EM)

        期望最大化算法是一种基于概率的优化算法,用于求解非线性函数的最大值或最小值。它的基本思想是,从当前状态出发,通过不断地更新状态,使得状态向着目标函数的值最大或最小的方向发展,直到达到目标函数的最大值或最小值为止。

10、K-means是最简单的EM算法?

        是的,K-means 算法是最简单的 EM 算法。K-means 算法的基本思想是将数据集分为 k 个类别,每个类别都有一个中心点。然后,通过不断更新每个数据点到各个类别的中心点的距离,使得每个数据点都最终落在它所属的类别的中心点上。这个过程重复进行,直到达到收敛条件或达到预设的最大迭代次数。

        K-means 算法的实现过程非常简单,但是它的性能往往比较好。EM 算法的主要缺点是收敛速度较慢,对初始值的敏感性较高,因此在实际应用中,需要根据具体问题选择合适的算法,并进行适当的参数调整以获得更好的性能。

11、编程实现EM算法

import numpy as np  
  
def em_algorithm(data, k, max_iters=100):  
    # 初始化随机种子  
    # data:数据集;k:类别数量;max_iters 最大迭代次数
    np.random.seed(0)  
  
    # 初始化状态向量  
    state = np.zeros((data.shape[0], 1))  
  
    # 迭代更新状态  
    for i in range(max_iters):  
        # 计算每个数据点到各个类别的中心点的距离  
        distances = np.linalg.norm(data[:, np.newaxis, :] - data[np.newaxis, :, :], axis=2)  
  
        # 将每个数据点分配到距离最近的类别中  
        labels = np.argmin(distances, axis=1)  
  
        # 更新状态向量  
        for j in range(k):  
            if labels[j] != j:  
                new_state = np.zeros((data.shape[0], 1))  
                new_state[np.argmin(distances[j], axis=1)] = 1  
                state = np.vstack((state, new_state))  
  
    return state, labels


  
 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值