系列文章目录
第一章 【机器学习】初识机器学习
第二章 【机器学习】【监督学习】- 逻辑回归算法 (Logistic Regression)
第三章 【机器学习】【监督学习】- 支持向量机 (SVM)
第四章【机器学习】【监督学习】- K-近邻算法 (K-NN)
第五章【机器学习】【监督学习】- 决策树 (Decision Trees)
第六章【机器学习】【监督学习】- 梯度提升机 (Gradient Boosting Machine, GBM)
第七章 【机器学习】【监督学习】-神经网络 (Neural Networks)
第八章【机器学习】【监督学习】-卷积神经网络 (CNN)
第九章【机器学习】【监督学习】-循环神经网络 (RNN)
第十章【机器学习】【监督学习】-线性回归
第十一章【机器学习】【监督学习】-局部加权线性回归 (Locally Weighted Linear Regression, LWLR)
第十二章【机器学习】【监督学习】- 岭回归 (Ridge Regression)
十三、【机器学习】【监督学习】- Lasso回归 (Least Absolute Shrinkage and Selection Operator)
十四、【机器学习】【监督学习】- 弹性网回归 (Elastic Net Regression)
十五、【机器学习】【监督学习】- 神经网络回归
十六、【机器学习】【监督学习】- 支持向量回归 (SVR)
目录
系列文章目录
一、非监督学习
(一)、定义
(二)、训练流程
(三)、基本算法分类
二、K-均值 (K-Means)
(一)、定义
(二)、基本概念
(三)、训练过程
(四)、特点
(五)、适用场景
(六)、扩展
三、总结
一、非监督学习
(一)、定义
非监督学习是一种机器学习方法,它处理的是没有标签的数据集。与监督学习不同,非监督学习算法不需要知道数据的正确分类或目标值。它的目标是通过数据内部的结构和模式来推断出有意义的信息,如数据的分布、聚类、降维或异常检测等。
(二)、训练流程
非监督学习的训练流程通常包含以下几个步骤:
-
数据准备:收集和预处理数据,可能包括数据清洗、缺失值处理、数据标准化或归一化等。
-
模型选择:根据问题的性质选择合适的非监督学习算法。
-
参数初始化:初始化模型的参数,这一步对于某些算法至关重要,如K-means聚类。
-
模型训练:使用无标签数据训练模型,寻找数据中的结构或模式。这一过程可能涉及到迭代优化,直到满足某个停止准则,如收敛或达到预定的迭代次数。
-
结果评估:评估模型的结果,这通常比监督学习更具有挑战性,因为没有明确的“正确答案”。评估可能基于内在指标(如聚类的紧凑度和分离度)或外在指标(如与已知分类的比较)。
-
应用模型:使用训练好的模型对新数据进行分析或预测,如对新数据进行聚类或降维。
(三)、基本算法分类
非监督学习算法可以大致分为以下几类:
-
聚类算法:用于将数据点分组到不同的簇中,常见的算法有K-means、层次聚类、DBSCAN、Gaussian Mixture Models等。
-
降维算法:用于减少数据的维度,同时尽可能保留数据的结构信息,常见的算法有PCA(主成分分析)、t-SNE(t-分布随机邻域嵌入)、自编码器等。
-
关联规则学习:用于发现数据集中项之间的关系,如Apriori算法和Eclat算法。
-
异常检测算法:用于识别数据集中的异常点或离群点,如Isolation Forest、Local Outlier Factor等。
-
自组织映射(SOM):一种神经网络模型,用于数据可视化和聚类,可以将高维数据映射到低维空间中。
-
生成模型:如变分自编码器(VAE)和生成对抗网络(GAN),它们可以生成类似训练数据的新样本。
非监督学习在很多场景中都有广泛应用,如客户细分、图像识别、自然语言处理、生物信息学和推荐系统等。由于其灵活性和在处理大量未标注数据时的优势,非监督学习是数据科学和人工智能领域的重要组成部分。
二、K-均值 (K-Means)
(一)、定义
K-Means是一种无监督学习的聚类算法,主要用于将数据集分割成K个互不相交的子集(或簇),每个子集中的数据点彼此相似,而不同子集间的数据点差异较大。K-Means算法通过最小化簇内数据点到簇中心(均值)的平方距离之和来达到聚类的目的。
(二)、基本概念
- 簇 (Cluster):数据集中形成的每个分组称为一个簇,算法的目标是创建K个这样的簇。
- 质心 (Centroid):每个簇的中心点,通常定义为该簇中所有数据点的平均位置。
- 距离度量:K-Means通常使用欧几里得距离来衡量数据点之间的相似性或差异性。
- 初始化:K-Means开始时需要随机选择K个数据点作为初始质心。
- 收敛条件:算法在质心不再发生显著变化或达到预定的迭代次数时停止。
(三)、训练过程
K-Means算法是一种迭代型的聚类算法,其训练过程主要包括以下几个关键步骤:
1. 初始化
- 选择K个初始质心:随机选取数据集中的K个点作为初始质心。这些点可以是随机选择的数据点,也可以是数据集中的随机位置。选择的方式会影响到后续迭代的速度和最终聚类的结果。
2. 分配数据点
- 计算距离:对于数据集中的每一个点,计算其到所有K个质心的距离。通常采用欧几里得距离,但也可以使用其他距离度量,如曼哈顿距离。
- 分配簇:将每个数据点分配给距离最近的质心所代表的簇。这意味着数据点将加入到与其最近的质心相同的簇中。
3. 更新质心
- 计算新质心:对于每个簇,计算其所有数据点的平均值,这个平均值将成为新的质心。如果簇为空,则可能需要采取某种策略来处理,比如将其保持不变或重新初始化。
4. 判断收敛
- 检查质心变化:比较新旧质心的位置,如果质心的位置变化小于某个阈值或者达到预设的最大迭代次数,则认为算法已经收敛,可以停止迭代。
- 迭代:如果质心仍在显著变化,回到步骤2,重复分配数据点和更新质心的过程。
5. 结果输出
- 输出聚类结果:一旦算法收敛,输出最终的K个质心以及每个数据点所属的簇。这构成了K-Means算法的最终输出。
扩展:处理特定情况
- 空簇处理:在某些迭代中,可能会出现某个簇没有数据点的情况,这时需要决定如何处理,常见的做法是将最近的未分配数据点分配给该簇,或者重新随机选择一个新的质心。
- 随机初始化的影响:由于K-Means对初始质心的选择很敏感,可以使用多次随机初始化和运行算法,然后选择最佳的聚类结果。例如,使用K-Means++初始化方法可以改善算法的性能。
性能考虑
- 优化算法:在大数据集上,可以使用近似算法或优化技巧来加速K-Means,如Mini-Batch K-Means,它每次只使用数据集的一小部分来更新质心,从而减少计算成本。
K-Means算法的训练过程是迭代和渐进的,直到满足收敛条件为止。在整个过程中,算法试图最小化每个数据点到其所属簇质心的距离平方和,以此来优化聚类结果。
(四)、特点
- 简单快速:算法实现简单,计算效率高。
- 局部最优:容易陷入局部最优解,结果受初始质心选择影响。
- K值选择:需要事先确定K的值,这可能需要领域知识或试错。
- 球形簇假设:假设簇是球形的,且大小相似,对于其他形状的簇效果不佳。
- 敏感性:对异常值敏感,异常值可能显著影响质心的位置。
(五)、适用场景
- 市场细分:在市场营销中对客户进行分类。
- 图像压缩:用于颜色量化,减少图像中颜色的数量。
- 文档分类:基于词频将文档分成不同主题的类别。
- 推荐系统:通过对用户行为进行聚类,为用户推荐相似兴趣的内容。
- 基因表达分析:在生物信息学中,对基因表达数据进行聚类分析。
(六)、扩展
K-Means存在一些限制,因此有许多变种和扩展,例如:
- K-Medoids:使用簇中实际的数据点作为质心,而不是平均值,更健壮于异常值。
- Gaussian Mixture Models (GMM):使用概率模型,可以处理不同大小和形状的簇。
- Fuzzy C-Means (FCM):允许数据点属于多个簇,具有隶属度的概念。
- Mini-Batch K-Means:在大数据集上使用随机样本批次来更新质心,提高效率。
- Bisecting K-Means:通过递归地将簇一分为二来寻找最优聚类。
三、总结
K-Means及其变种在数据科学和机器学习中占据重要地位,广泛应用于各种数据聚类问题。