机器学习经典算法总结

news2024/11/28 18:50:26

一,KNN 算法

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

KNN算法可视化

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

欧几里得和曼哈顿距离计算公式

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

1.1,k 值的选取

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

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

1.2,KNN 算法思路

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

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

二,支持向量机算法

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

2.1,支持向量机简述

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

2.2,SVM 基本型

m i n 1 2 ∣ ∣ w ∣ ∣ 2 s . t . y i ( w T x i + b ) ≥ 1 , i = 1 , 2 , . . . , m min \frac{1}{2}||w||^2 \\ s.t. y_{i}(w^Tx_i + b) \geq 1, i = 1,2,...,m min21∣∣w2s.t.yi(wTxi+b)1,i=1,2,...,m

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

2.3,对偶问题求解

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

L ( w , b , a ) = 1 2 ∣ ∣ w ∣ ∣ 2 − ∑ i = 1 n α i ( y i ( w T x i + 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)=21∣∣w2i=1nαi(yi(wTxi+b)1)

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

max ⁡ α ∑ i = 1 m − 1 2 ∑ i = 1 m ∑ j = 1 m α i α j y i y j x T _ i x j \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 = 1 m = α i y i = 0 s.t. \sum_{i=1}^{m} = \alpha_{i}y_{i} = 0 s.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 聚类算法

3.1,分类与聚类算法

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

3.2,K-means 聚类算法

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

  1. 随机选取 k k k 个聚类中心(cluster centroids)为 μ 1 , μ 1 , . . . , μ k ∈ R n \mu_1, \mu_1,...,\mu_k \in R^n μ1,μ1,...,μkRn
  2. 重复下面过程,直到质心不变或者变化很小:
    • 对于每一个样例 i i i ,计算其所属类别: c i = a r g m i n j ∣ ∣ x i − μ j ∣ ∣ 2 c^i = \underset{j}{argmin}||x^i - \mu_j||^2 ci=jargmin∣∣xiμj2
    • 对于每一个类 j j j,重新计算该类的质心: μ j = ∑ i = 1 m 1 c i = j x i ∑ i = 1 m 1 c i = 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

K K K 是我们事先给定的聚类数, c i c^i ci 代表样例 i i i k k k 个类中距离最近的那个类, c i c^i ci 的值是 1 1 1 k k k 中的一个。质心 μ j \mu_j μj 代表我们对属于同一个类的样本中心点的猜测。

参考资料

K-means聚类算法

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/345026.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

知识图谱表示

知识图谱表示 用某种语言对知识图谱进行建模,从而方便知识运算。 符号知识表示 :以符号逻辑为基础的知识表示方法。 特点:易于刻画显示、离散的知识。具有内生的可解释性。 不足:部分隐性知识不易符号化表示,故知识表…

Pr LOGO片头动画

哈喽,各位小伙伴!今天我们来学习一下如何制作简约文字LOGO片头动画? 新建序列 新建一个1920*1080的序列,在字幕上打上我们的文字(例:Ultraman) 调出基本面板,调整文字的位置&…

全栈项目【尚医通】预约挂号系统项目介绍

🐼个人主页:爪哇斗罗 🐼博主介绍:一名打工人 🐼签名:圣人之道,为而不争。 🐼一起交流,一起进步,一起互动。 ​ 目录 一.项目介绍 二.技术架构 2.1 架构选…

SpringBoot集成Swagger3(powernode document)(内含源代码)

SpringBoot集成Swagger3(powernode document)(内含源代码) 源代码下载链接地址:https://download.csdn.net/download/weixin_46411355/87449720 目录SpringBoot集成Swagger3(powernode document&#xff0…

数据库锁的12连问,你顶得了嘛?

前言 金三银四很快就要来啦,准备了数据库锁的12连问,相信大家看完肯定会有帮助的。 1. 为什么需要加锁 在日常生活中,如果你心情不好想静静,不想被比别人打扰,你就可以把自己关进房间里,并且反锁。这就是…

Simulink自动代码生成:如何标准化的建模?以MAB,MISRA C 2012建模规范为例

目录 为什么要规范建模 MAB,MISRA C2012建模规范步骤 常用的规范总结 生成代码配置 总结 为什么要规范建模 MathWorks 咨询委员会 (MAB) 规范规定了在 Simulink 和 Stateflow 中建模的重要基本规则。这些建模规范的总体目的是让控制系统模型的建模者和使用方能…

自定义ESLint规则和修复功能

这是接上一篇自定义ESLint规则开发与使用的后续扩展,之前文章中详细讲述了怎么创建一个自定义的规则,这篇文章讲述怎么实现ESLint在检测出有问题的代码时,怎么自动fix问题。 比如我们要检测项目中所有http的协议,将其替换为https协…

Power BI 存储模式介绍(导入、DirectQuery、双)

本系列的文章: 《Power BI windows下载安装流程)》《Power BI 11个必学官方示例数据案例(附下载链接)》《Power BI 数据导入(SQL Server、MySQL、网页数据)》 一、背景原因 一般情况下,我们是…

测试开发面试基础题

1.对测试开发的理解 测试开发首先离不开测试,而软件测试是指,在规定的条件下对程序进行操作,以发现程序错误,衡量软件质量,并对其是否能满足设计要求进行评估的过程。 而且,现在不仅仅是通过手工测试来发…

安装less-loader5出现webpack版本不兼容

今天遇到一个问题: 安装less-loader5之后其它包提示peerDependencies WARNING,意思是包版本不兼容。 【难题】 虽然NPM已经很自动化了,但依赖问题真的是一个难题,无法自动解决,需要人工干预调整。 【解决办法】 去查…

用户选择好用的投票小程序最有用的投票小程序微信推送里投票制作教程

“夏日非遗传承活动”网络评选投票_用户选择好用的投票小程序_最有用的投票小程序用户在使用微信投票的时候,需要功能齐全,又快捷方便的投票小程序。而“活动星投票”这款软件使用非常的方便,用户可以随时使用手机微信小程序获得线上投票服务…

医学生考研考博太卷,一篇文章轻松助力上岸——生物信息学及R语言基础知识之向量的生成(一)

考研考博太卷了,卷不过,想没想过本科发一篇文章呢? 330分考研人淘汰390分考研人这个故事,大家应该都知道吧。 本专栏带你六个月内,搞定一篇文章,本科生发文章也很容易。 在卷考研的同时,再卷一篇SCI,你就是新一任卷王。 本专栏教你不用花钱发一篇生信文章,从三个方…

带你了解软件测试是做什么的

软件测试是互联网技术中一门重要的学科,它是软件生命周期中不可或缺的一个环节,担负着把控、监督软件的质量的重任。 人才稀缺,对于求职者来说就意味着机会。但是很多想学习软件测试的人对这个学科并不了解,也不知道该如何学习&a…

Vue3的新特性

文章目录1 生命周期的变化2 使用proxy代替defineProperty2.1 Object.defineProperty()语法2.2 Proxy的语法3 Diff算法的提升3.1 以往的渲染策略3.2 Vue3的突破4 TypeScript的支持5 优化打包体积6 新的响应性 API6.1 reactive()6.2 <script setup>6.3 nextTick()6.4 react…

【半监督医学图像分割 2022 MICCAI】CLLE 论文翻译

文章目录【半监督医学图像分割 2022 MICCAI】CLLE 论文翻译摘要1. 简介2. 方法2.1 半监督框架概述2.2 监督局部对比学习2.3 下采样和块划分3. 实验4. 结论【半监督医学图像分割 2022 MICCAI】CLLE 论文翻译 论文题目&#xff1a;Semi-supervised Contrastive Learning for Labe…

Kafka 消息队列

目录主流的消息队列消息队列的应用场景缓存/肖锋解耦异步处理KafkaKafka的定义Kafka的底层基础架构Kafka分区如何保证Leader选举Kafka分区如何保证Leader和Follower数据的一致性Kafka 中消费者的消费方式Kafka 高效读写数据的原因&#xff08;高性能吞吐的原因&#xff09;&…

chatGPT爆火让我们反思——人工智能是新的加密货币吗?

核冬天技术末日到来了&#xff0c;只有人工智能幸免于难。峰值 AI 指标无处不在。它能保持加密失去的信念吗&#xff1f;作者&#xff1a;John Luttig 翻译: Chainwise核冬天技术末日到来了&#xff1a;软件、SPAC、金融科技和加密货币都进入了深度冻结状态。AI 可能是唯一穿着…

JavaWeb_RequestResponse

目录 一、概述 二、Request对象 1.Request继承体系 2.Request获取请求数据 ①获取请求行数据 ②获取请求头数据 ③获取请求体数据 ④获取请求参数 3.Request请求转发 三、Response 1.Response设置响应数据功能 ①响应行 ②响应头 ③响应体 2.请求重定向 3.路径问…

原生开发 之 微信小程序

目录 一、前期预备 1. 预备知识 ​2. 注册账号 - 申请AppID 3. 下载小程序开发工具 4. 小程序项目结构 ​5. 小程序的MVVM架构 二、创建小程序项目 1. 查看注册的appId ​2. 创建项目 ​3. 新建页面 01 - 创建text页面文件夹 ​02 - 新建text的page ​03 - 在app.json中配置 ​…

Python Paramiko stdout 多进程 阻塞 卡住 问题解决

使用paramiko进程远程操作时&#xff0c;如果缓冲区满了&#xff0c;exec_command在写入该缓冲区时会产生阻塞并一直保持阻塞状态&#xff0c;直到缓冲区被清空为止。 使用multiprocessing无疑会加重这种情况&#xff0c;其中一种解决办法是设置exec_command的get_pty参数为Tru…