经典机器学习算法总结

简介: 经典机器学习算法总结

KNN 算法

K 近邻算法(KNN)是一种基本分类和回归方法。KNN 算法的核心思想是如果一个样本在特征空间中的 k 个最相邻的样本中的大多数属于一个类别,那该样本也属于这个类别,并具有这个类别上样本的特性。该方法在确定分类决策上只依据最邻近的一个或者几个样本的类别来决定待分类样本所属的类别。 如下图:

网络异常,图片无法展示
|


KNN 中,通过计算对象间距离来作为各个对象之间的非相似性指标,避免了对象之间的匹配问题,在这里距离一般使用欧氏距离或曼哈顿距离,公式如下:

网络异常,图片无法展示
|


同时,KNN通过依据 k 个对象中占优的类别进行决策,而不是单一的对象类别决策,这两点就是KNN算法的优势。

k 值的选取

  • k 值较小,模型会变得复杂,容易发生过拟合
  • k 值较大,模型比较简单,容易欠拟合

所以 k 值得选取也是一种调参?

KNN 算法思路

KNN 思想就是在训练集中数据和标签已知的情况下,输入测试数据,将测试数据的特征与训练集中对应的特征进行相互比较,找到训练集中与之最为相似的前 K 个数据,则该测试数据对应的类别就是K个数据中出现次数最多的那个分类,其算法的描述为:

  1. 计算测试数据与各个训练数据之间的距离;
  2. 按照距离的递增关系进行排序;
  3. 选取距离最小的 K 个点;
  4. 确定前 K 个点所在类别的出现频率;
  5. 返回前 K 个点中出现频率最高的类别作为测试数据的预测分类。


支持向量机算法

机器学习中的算法(2)-支持向量机(SVM)基础

支持向量机简述

  • 支持向量机(Support Vector Machines, SVM)是一种二分类模型。它的基本模型是定义在特征空间上的间隔最大的线性分类器,间隔最大使它有别于感知机;支持向量机还包括核技巧,这使其成为实质上的非线性分类器。
  • SVM 的学习策略是找到最大间隔(两个异类支持向量到超平面的距离之和 γ=2∣∣w\gamma = \frac{2}{||w}γ=w2 称为“间隔”),可形式化为一个求解凸二次规划的问题,也等价于正则化的合页损失函数的最小化问题。
  • SVM 的最优化算法是求解凸二次规划的最优化算法。


SVM 基本型

min12∣∣w∣∣2min \frac{1}{2}||w||^2min21w2s.t.yi(wTxi+b)≥1,i=1,2,...,ms.t. y_{i}(w^Tx_i + b) \geq 1, i = 1,2,...,ms.t.yi(wTxi+b)1,i=1,2,...,m

SVM 的最优化算法是一个凸二次规划(convex quadratic programming)问题,对上式使用拉格朗日乘子法可转化为对偶问题,并优化求解。

对偶问题求解

SVM 基本型公式的每条约束添加拉格朗日乘子 αi≥0\alpha_i \geq 0αi0,则式子的拉格朗日函数如下:

L(w,b,a)=12∣∣w∣∣2−∑i=1nαi(yi(wTxi+b)−1)L(w,b,a) = \frac 1 2||w||^2 - \sum{i=1}{n} \alpha_i (y_i(w^Tx_i+b) - 1)L(w,b,a)=21w2i=1nαi(yi(wTxi+b)1)


经过推导(参考机器学习西瓜书),可得 SVM 基本型的对偶问题:

max⁡α∑i=1m−12∑i=1m∑j=1mαiαjyiyjxT_ixj\max\limits_{\alpha} \sum_{i=1}^{m}-\frac{1}{2} \sum_{i=1}^{m} \sum_{j=1}^{m}\alpha_i \alpha_j y_i y_j x^{T}\_{i} x_jαmaxi=1m21i=1mj=1mαiαjyiyjxT_ixj

s.t.∑i=1m=αiyi=0s.t. \sum_{i=1}^{m} = \alpha_{i}y_{i} = 0s.t.i=1m=αiyi=0

αi≥0,i=1,2,...,m\alpha_{i}\geq 0, i=1,2,...,mαi0,i=1,2,...,m

继续优化该问题,有 SMO 方法,SMO 的基本思路是先固定 αi\alpha_iαi 之外的的所有参数,然后求 αi\alpha_iαi 上的极值。


K-means 聚类算法

分类与聚类算法

  • 分类简单来说,就是根据文本的特征或属性,划分到已有的类别中。也就是说,这些类别是已知的,通过对已知分类的数据进行训练和学习,找到这些不同类的特征,再对未分类的数据进行分类。
  • 聚类,就是你压根不知道数据会分为几类,通过聚类分析将数据或者说用户聚合成几个群体,那就是聚类了。聚类不需要对数据进行训练和学习。
  • 分类属于监督学习,聚类属于无监督学习。常见的分类比如决策树分类算法、贝叶斯分类算法等聚类的算法最基本的有系统聚类,K-means 均值聚类。

K-means 聚类算法

聚类的目的是找到每个样本 xxx 潜在的类别 yyy,并将同类别 yyy 的样本 xxx 放在一起。在聚类问题中,假定训练样本是 x1,...,xm{x^1,...,x^m}x1,...,xm,每个 xi∈Rnx^i \in R^nxiRn,没有 yyyK-means 算法是将样本聚类成 kkk 个簇(cluster),算法过程如下:

  1. 随机选取 kkk 个聚类中心(cluster centroids)为 μ1,μ1,...,μk∈Rn\mu_1, \mu_1,...,\mu_k \in R^nμ1,μ1,...,μkRn
  2. 重复下面过程,直到质心不变或者变化很小:
  • 对于每一个样例 iii ,计算其所属类别:ci=argminj∣∣xi−μj∣∣2c^i = \underset{j}{argmin}||x^i - \mu_j||^2ci=jargminxiμj2
  • 对于每一个类 jjj,重新计算该类的质心:μj=∑i=1m1ci=jxi∑i=1m1ci=j\mu_j = \frac {\sum_{i=1}^{m} 1{c^i} = jx^{i}} { \sum_{i=1}^{m}1 c^{i} = j}μj=i=1m1ci=ji=1m1ci=jxi

KKK 是我们事先给定的聚类数,cic^ici 代表样例 iiikkk 个类中距离最近的那个类,cic^ici 的值是 111kkk 中的一个。质心 μj\mu_jμj 代表我们对属于同一个类的样本中心点的猜测。

参考资料

K-means聚类算法


相关文章
|
21天前
|
机器学习/深度学习 算法 数据挖掘
K-means聚类算法是机器学习中常用的一种聚类方法,通过将数据集划分为K个簇来简化数据结构
K-means聚类算法是机器学习中常用的一种聚类方法,通过将数据集划分为K个簇来简化数据结构。本文介绍了K-means算法的基本原理,包括初始化、数据点分配与簇中心更新等步骤,以及如何在Python中实现该算法,最后讨论了其优缺点及应用场景。
65 4
|
18天前
|
机器学习/深度学习 算法 数据挖掘
C语言在机器学习中的应用及其重要性。C语言以其高效性、灵活性和可移植性,适合开发高性能的机器学习算法,尤其在底层算法实现、嵌入式系统和高性能计算中表现突出
本文探讨了C语言在机器学习中的应用及其重要性。C语言以其高效性、灵活性和可移植性,适合开发高性能的机器学习算法,尤其在底层算法实现、嵌入式系统和高性能计算中表现突出。文章还介绍了C语言在知名机器学习库中的作用,以及与Python等语言结合使用的案例,展望了其未来发展的挑战与机遇。
37 1
|
26天前
|
机器学习/深度学习 自然语言处理 算法
深入理解机器学习算法:从线性回归到神经网络
深入理解机器学习算法:从线性回归到神经网络
|
1月前
|
机器学习/深度学习 人工智能 算法
【手写数字识别】Python+深度学习+机器学习+人工智能+TensorFlow+算法模型
手写数字识别系统,使用Python作为主要开发语言,基于深度学习TensorFlow框架,搭建卷积神经网络算法。并通过对数据集进行训练,最后得到一个识别精度较高的模型。并基于Flask框架,开发网页端操作平台,实现用户上传一张图片识别其名称。
77 0
【手写数字识别】Python+深度学习+机器学习+人工智能+TensorFlow+算法模型
|
27天前
|
机器学习/深度学习 算法
深入探索机器学习中的决策树算法
深入探索机器学习中的决策树算法
35 0
|
28天前
|
机器学习/深度学习 算法 Python
机器学习入门:理解并实现K-近邻算法
机器学习入门:理解并实现K-近邻算法
33 0
|
2月前
|
机器学习/深度学习 算法 Java
机器学习、基础算法、python常见面试题必知必答系列大全:(面试问题持续更新)
机器学习、基础算法、python常见面试题必知必答系列大全:(面试问题持续更新)
|
2月前
|
机器学习/深度学习 人工智能 算法
【玉米病害识别】Python+卷积神经网络算法+人工智能+深度学习+计算机课设项目+TensorFlow+模型训练
玉米病害识别系统,本系统使用Python作为主要开发语言,通过收集了8种常见的玉米叶部病害图片数据集('矮花叶病', '健康', '灰斑病一般', '灰斑病严重', '锈病一般', '锈病严重', '叶斑病一般', '叶斑病严重'),然后基于TensorFlow搭建卷积神经网络算法模型,通过对数据集进行多轮迭代训练,最后得到一个识别精度较高的模型文件。再使用Django搭建Web网页操作平台,实现用户上传一张玉米病害图片识别其名称。
72 0
【玉米病害识别】Python+卷积神经网络算法+人工智能+深度学习+计算机课设项目+TensorFlow+模型训练
|
2月前
|
机器学习/深度学习 算法 Python
探索机器学习中的决策树算法:从理论到实践
【10月更文挑战第5天】本文旨在通过浅显易懂的语言,带领读者了解并实现一个基础的决策树模型。我们将从决策树的基本概念出发,逐步深入其构建过程,包括特征选择、树的生成与剪枝等关键技术点,并以一个简单的例子演示如何用Python代码实现一个决策树分类器。文章不仅注重理论阐述,更侧重于实际操作,以期帮助初学者快速入门并在真实数据上应用这一算法。
|
1月前
|
机器学习/深度学习 人工智能 算法
探索机器学习中的决策树算法
【10月更文挑战第29天】本文将深入浅出地介绍决策树算法,一种在机器学习中广泛使用的分类和回归方法。我们将从基础概念出发,逐步深入到算法的实际应用,最后通过一个代码示例来直观展示如何利用决策树解决实际问题。无论你是机器学习的初学者还是希望深化理解的开发者,这篇文章都将为你提供有价值的见解和指导。