AI作业4-无监督学习

1.K均值聚类

K均值聚类是一种判别式方法,它通过将数据分为K个簇来进行聚类。它并不试图对数据的分布进行建模,而是直接将数据分为不同的簇。

2.K均值聚类是生成式还是判别式方法?

KNN和K均值聚类是两种不同的算法。KNN是一种分类算法,它基于距离度量来确定一个测试样本最近的K个训练样本,并根据它们的类别进行分类。K均值聚类则是一种聚类算法,它将数据分为K个簇,使得每个数据点都属于离它最近的簇。

3.KNN VS. K-means

KNN和K-means是两种完全不同的机器学习算法。KNN是一种有监督学习算法,常用于分类和回归问题。K-means是一种无监督学习算法,常用于聚类分析。

4.主成分分析

主成分分析(PCA)和线性判别分析(LDA)都是降维技术,但是它们的目标不同。PCA的目标是将数据投影到一个新的坐标系中,使得投影后的数据方差最大。LDA则是一种有监督的降维方法,其目标是将数据投影到一个新的坐标系中,使得不同类别之间的距离最大,同类别之间的距离最小。

5.LDA VS. PCA

LDA和PCA都是常用的数据降维技术,但它们有不同的应用和目标。

PCA旨在通过线性变换将高维数据投影到低维空间,以保留最多的数据方差信息。PCA是一种无监督方法,它不考虑类别标签信息。

LDA也是一种线性变换方法,但它是有监督的。与PCA不同,LDA的目标是找到可以最大化不同类别之间的差异性(类别间散度)和最小化同一类别内部的差异性(类别内散度)的投影。

6.奇异值分解(SVD)

奇异值分解是一种矩阵分解技术,可以将一个矩阵分解为三个矩阵的乘积,其中中间的矩阵是对角矩阵,其对角线上的元素为奇异值。SVD在很多应用中都有重要的作用,如图像压缩、推荐系统等。

7.特征人脸方法(Eigenface)

特征人脸方法是一种基于PCA的人脸识别方法,它将人脸图像投影到一个低维空间中,并使用投影后的特征向量进行人脸识别。

8.潜在语义分析 (LSA)

潜在语义分析是一种基于SVD的文本分析方法,它将文本表示为一个矩阵,并使用SVD将其分解为三个矩阵的乘积。LSA可以用于文本分类、信息检索等任务。

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

期望最大化算法是一种迭代算法,用于估计包含隐变量的概率模型参数。K均值聚类可以看作是EM算法在高斯混合模型中的特例。

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

K均值聚类可以看作是最简单的EM算法之一。K均值聚类假设每个簇都是由一个高斯分布生成的,并且每个数据点只属于一个簇。

11.编程实现EM算法

def EM_algorithm(samples, n_components, max_iter=100, tol=1e-4):
    # 初始化均值和方差
    mu = np.random.uniform(samples.min(), samples.max(), size=n_components)
    sigma = np.random.uniform(0, 1, size=n_components)

    # 初始化混合系数
    alpha = np.ones(n_components) / n_components

    # 定义E步骤
    def E_step(samples, mu, sigma, alpha):
        p = np.zeros((len(samples), n_components))
        for i in range(n_components):
            p[:, i] = alpha[i] * norm.pdf(samples, mu[i], sigma[i])
        return p / p.sum(axis=1)[:, None]

    # 定义M步骤
    def M_step(samples, p):
        mu_new = np.sum(p * samples[:, None], axis=0) / np.sum(p, axis=0)
        sigma_new = np.sqrt(np.sum(p * (samples[:, None] - mu_new) ** 2, axis=0) / np.sum(p, axis=0))
        alpha_new = np.mean(p, axis=0)
        return mu_new, sigma_new, alpha_new

    # 迭代EM算法
    for i in range(max_iter):
        # E步骤:计算隐变量的期望
        p = E_step(samples, mu, sigma, alpha)

        # M步骤:最大化对数似然函数更新参数
        mu_new, sigma_new, alpha_new = M_step(samples, p)

        # 计算对数似然函数并判断是否收敛
        log_likelihood = np.sum(np.log(np.sum(p, axis=1)))
        if i > 0 and log_likelihood - log_likelihood_old < tol:
            break
        log_likelihood_old = log_likelihood

        # 更新参数
        mu, sigma, alpha = mu_new, sigma_new, alpha_new

    return mu, sigma, alpha, p

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值