机器学习与数据挖掘知识点总结(二)之常用的分类算法

目录

1、什么是数据挖掘

2、为什么要有数据挖掘

3、数据挖掘用在分类任务中的算法

朴素贝叶斯算法

svm支持向量机算法

PCA主成分分析算法

k-means算法

决策树


1、什么是数据挖掘

数据挖掘是从大量数据中发现隐藏在其中的模式、关系和规律的过程。它利用统计学、机器学习和数据库技术等工具和方法来分析大规模数据集,以发现其中的信息,并将其转化为可用的知识或决策支持。数据挖掘常用于预测、分类、聚类和关联规则发现等任务。

2、为什么要有数据挖掘

数据挖掘的出现是为了解决大规模数据中存在的隐含信息和规律,并将其转化为可用的知识或决策支持。

3、数据挖掘用在分类任务中的算法

  • 朴素贝叶斯算法

朴素贝叶斯是一组基于贝叶斯定理的监督学习算法, 

先验概率:基于统计规律,基于以往的历史经验和分析得到的结果,不依赖于当前发生的条件。

后验概率:由条件概率推理而来,由因推果,是计算在发生某事之后的概率,依赖于当前发生的条件。

条件概率:记事件A发生的概率为P(A),事件B发生的概率为P(B),则在事件B发生的条件下事件A发生的概率为P(A|B),

P(A|B)=\frac{P(AB)}{P(B)}

贝叶斯公式就是基于条件概率,通过P(B|A)求解P(A|B) ,如下:

P(A|B)=\frac{P(AB)}{P(B)}=\frac{P(B|A)\cdot P(A)}{P(B)}

 由联合公式可以推导如下,

P(A,B)=P(A|B)\cdot P(B)=P(B|A)\cdot P(A) 

P(A)和P(B)分别为先验概率,P(A|B)和P(B|A)分别为后验概率,P(A,B)则称为联合概率。  

全概率公式:表示若事件{A_1},{A_2}, \cdots ,{A_n}构成一个完备事件组且都有正概率,则对任意一个事件B都有公式成立,故有:P(B)=\sum_{i=1}^{n}P(B|A_{i})\cdot P(A_{i})

机器学习的最终目标就是回归或者是分类,都可以看为是预测,分类则是预测属于某一类的概率是多大,因此可以把上述贝叶斯表达式中的A看成是属于某类的规律,把B看成是具有某种特征的现象,那么贝叶斯公式又可以表示为:

P(规律|现象)=\frac{P(现象|规律)\cdot P(规律)}{P(现象)}

 朴素贝叶斯算法的原理:

特征条件假设:若假设各个特征之间没有联系,给定训练数据集后,每个样本都是n维特征,x=(x_{1},x_{2},...,x_{n}),类别标记中有m种类别,y=(y_{1},y_{1},...,x_{m})

朴素贝叶斯算法对条件概率分布做出了独立性的假设,即个人维度上的特征x_{1},x_{2},...,x_{n}相互独立,那么在此假设前提下,条件概率可转化为:

P(x|y_{m})=P(x_{1},x_{2},...,x_{n}|y_{m})=\prod_{i=1}^{n}P(x_{i}|y_{m})

朴素贝叶斯算法是一组基于贝叶斯定理的监督学习算法,朴素贝叶斯算法通过预测指定样本属于特定类别的概率P(y_{i}|x)来预测该样本的所属类别,即:

P(y_{i}|x)可以写为, 

 其中,x=(x_{1},x_{2},...,x_{n})对应为样本的特征向量,p(x)为样本的先验概率,对于特定样本x和任意类别yi,P(x)的取值均相同,并不会影响P(yi|x)取值的相对大小,因此在计算中可以被忽略(求解P(yi|x)就相当于求解P(x|yi)P(yi))。“朴素”特别之处就在于假设了特征x_{1},x_{2},...,x_{n}相互独立,由此可以得到:

 上述等式的右边即为连乘,将等式右边的概率称为判定函数。它的结果值不仅仅是代表概率,代表着判定值,P(x_{1}|y_{i}),P(x_{2}|y_{i}),...,P(x_{n}|y_{i}),以及P(y_{i})均可以通过训练样本统计得到,最后的目标函数如下,

但是由于概率值为[0,1]的数,作连乘运算时,容易让最后的结果越来越趋近于0(数据下溢),故对其取log是一个常用的手段,并根据log(xy)=log(x)+log(y)将其转换为相加的形式,

 这样仅能预测出最后对应的最大的判定值,将上式中的max更改为argmax即可求出最大判定值所对应的类别。

argmax[\sum_{x\epsilon y_{i}}log(P(y_{i}))+\sum_{x\epsilon y_{i}}\sum_{j=1}^{n}log(P(x_{j}|y_{j}))]

 总结一下,朴素贝叶斯算法进行预测的过程,

输入:样本
输出:所属的类别
  • svm支持向量机算法

支持向量机(Support Vector Machine,SVM)本身是一个二分类算法,是对感知器算法模型的一种扩展,现在的SVM算法支持线性分类和非线性分类的应用,并且也能通过将SVM应用于回归应用中,在不考虑集成学习算法,不考虑特定数据集时,分类算法SVM是非常优秀的。

支持向量:离分割超平面最近的那些点。

间隔:数据点到分割超平面的间距。

首先介绍一下感知器模型,感知器的思想就是在数据是线性可分(能找到一个平面将两组数据给分开)的前提下任意空间中,感知器需要寻找一个超平面,能够把所有的二分类别分割开。

感知器模型如下,目标是找到一个\theta x为0的超平面,然后分别根据神经元的加权求和的结果判断,大于0的为一个类别,小于0的为一个类别,因此,期望分类错误的样本离超平面的距离之和最小,从而让分类错误的样本更快地朝着正确的方向进行更新,从而让训练成功

 然后就是SVM算法,为什么感知器算法缺陷呢,下图中两条直线分别为感知器算法的超平面,它比较关注的是让所有的点离超平面尽可能的远,但实际上离超平面足够远的点基本都是被正确分类的,所以这个是没有意义的,反而应该关注那些离超平面很近的点,这些点才容易出错。如果测试时来了一个新的数据点(样本),并位于这两条蓝色直线之间,那么就不能很好的处理这个新的数据,由此引入了SVM支持向量机算法。

也就是说,如下图所示,希望 找到一个最好的w和b固定一个超平面,使得这个超平面在能够完美的区分正负例(分类)的基础上,找到距离最近的点间隔最大。(后面的证明过程先不叙述,涉及到拉格朗日优化目标函数过程)

 

  • PCA主成分分析算法

PCA是一种线性降维方法,他的思想主要是依靠将数据从高维空间映射到低维空间,同时在低维空间里的数据的方差被最大化。

图1

算法步骤:

  • 建立数据的协方差矩阵
  • 计算矩阵的多个特征向量
  • 对应有最大几个特征值的特征向量被应用于重新建立数据,这样就会使新建的数据包含有大量原本数据的方差(信息量)。

主要包含最大投影方差和最小投影距离两种方法证明PCA的有效性,下面用最大投影方差的方法证明一下。

最大投影方差(证明)

数据的离散性越大,代表数据在所投影的维度具有更高的区分度,这个区分度(方差)就是信息量,我们希望降维之后还能更多的保留原来的信息量,而且降维后不同维度的相关性为0,这样即使是去掉某些相对不重要的维度也不会干扰到剩余的维度信息。

图2

如图2所示,使用PCA主成分分析,并不会改变原始数据的分布,只是换个角度解决问题,本质上相当于是重新定义坐标系,找到一个更好的角度去审视数据。如图2,举个例子,对于同一数据分布,原坐标系横轴纵轴比例为(5:5)1:1,采用等长的横纵坐标,但经过重新找定坐标系(图2中紫色),新的坐标系横纵轴比例可能为7:3,那这样的话,采用主成分分析PCA,选取占比70%这条轴线进行降维,这就可以在降维的同时保留较大的信息量。

图3

 既然希望用样本点投影的方式希望投影之后的数据点会有更大的方差,那么不妨把投影之后的数值表达出来,如图3中的一个数据点A(x1,y1),将原点O与其的连线构成的向量A投影到向量B所在的方向上,得:

 那既然这样的话,单位向量不也能表示方向吗,让B为单位向量,\therefore|B|=1,可由上式推出,

 投影之后的新坐标系,每个轴用单位向量表示,新坐标系W=(w_{1},w_{2},...,w_{p})设置为标准正交基;即既保证了每个主成分向量wi的模为1,即||w_{i}||^{2}=1,又保证了各个主成分之间互不干扰(不叠加、不覆盖),w_{i}^{T}\cdot w _{j}=0

对于任意一个点xi投影到某个坐标轴w上,则投影后的值为x_{i}^{T} w

由上面的方差公式可以推出,

其中,mean表示投影后的均值。

 又因为PCA会对未投影前的原始数据进行标准归一化操作:

  • 均值归一化/中心化:经过如下证明得投影后的mean也为0.

  • 方差归一化:即为无量纲化,归一到某范围内,这样在投影之后方差不会受到某些维度的主导。

故将mean=0带入计算方差的式子中得,

 注意,在前面x_{i}^{T}w是两个向量的内积运算,在上述式子中,xi被看成为一个列向量,因此x_{i}x_{i}^{T}((m*n)*(n*m)=m*m),接着把上面的每个样本点运算求和转换为原始数据X(shape:d*n,d指原始数据维度,n代表原始数据的样本数),得

接着代入协方差(用来衡量两个随机变量之间关系的统计量,通过计算变量之间的协方差矩阵,可以找到数据中最具代表性和最重要的方向(主成分))公式中得,

 若将协方差矩阵用符号\sum_{}^{}表示,则优化目标最大化投影后方差等价于,

 然后按照L(x,\lambda )=f(x)+\lambda *g(x)构建拉格朗日函数,g(x)为约束条件,引入拉格朗日乘子lamda,这样就把具有约束条件的最优问题转化为无约束条件的最优化问题,对w求偏导得,

 这样就可以看出,w是 的特征向量,lamda是对应特征向量的特征值,最大化投影后的方差,等价于

 这样一来,要寻找的第一主成分就是使得投影方差最大的坐标轴就是最大特征值对应的特征向量。最终保留几个维度,就按照大小顺序选取前几个最大的特征值对应的特征向量,然后把原始数据进行投影即可,比如取出前k个大的特征值对应的特征向量w1,w2,...,wk,通过以下映射将d维样本降低到k维度,

 如此一来,新的x_{i}^{'}的第j维就是xi在第j个主成分wj方向上的投影,如果通过选取最大的k个特征值对应的特征向量,将方差小的特征抛弃,使得每个d维列向量xi被映射为k维列向量xi',\lambda _{i}\lambda _{j}为对应维度上的方差,那么定义降维后的信息占比如下,可以反过来通过\eta决定该选择保留下多少维度:

  • k-means算法

K-Means算法又称K均值算法,属于聚类算法的一种。聚类算法就是根据相似性原则,将具有较高相似度的数据对象划分至同一类簇,将具有较高相异度的数据对象划分至不同类簇,简而言之,就是把一些没有标签(label)的数据通过聚类算法打上标签分为不同的组/簇

聚类与分类的最大区别就是在于聚类属于无监督过程(处理事务无先验知识),而分类过程为有监督过程(存在有先验知识的训练数据集)。

最优的划分其实也就是最优的中心点的位置,未来的数据求出其与不同中心点的距离实现对其的预测。 

对于预测问题,大体流程如图1所示,

图1 预测算法

 对于聚类算法,大体的流程如图2所示,

图2 聚类算法

 为什么要叫KMeans?因为K代表着最终的簇数量,或者说目标簇数量,需要手动设置,是一个超参数。Means是因为算法过程中需要计算平均值,下面描述一下KMeans的流程,

随机初始化簇中心点个数K
输入:样本
输出:样本所属簇
// 当样本分配到K个簇不再变化时end
While(样本的分配发生改变)for i=1,2,...,N then do样本被分配到距离其最近的中心点根据当前每个簇中的样本更新K个簇中心点:采用平均值计算end
end

  • 决策树

决策树是一种有监督学习,有明确的标签用于划分树的分支,符合直觉且非常直观,非叶子节点均为决策节点,每个叶子节点对应的标签即为对应的样本的预测值。需要知道回归与分类问题的区别,回归针对于连续问题,分类针对于离散问题。

特点:

决策树可以处理非线性问题,可解释性强(无seta参数),模型简单且预测效率高;不容易显示的使用函数表达,不可微XGBoost。

对于一个好的模型对一个数据集进行分类,希望得到以下两种分割方式中的哪一种?当然是分割方式2,它可以保证分割后的两个类别中,分错的类别占比很低,下面介绍一下决策树的流程。

 递归解释:

算法描述(递归):

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

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

相关文章

Kafka监控系统efak的安装

下载地址Kafka Eaglehttp://download.kafka-eagle.org/下载地址连接不稳定,可以多次尝试直到成功连接下载 1.解压安装包并重命名 tar -zxvf kafka-eagle-bin-3.0.1.tar.gz 查看到解压后包含一个安装包,再解压 tar -zxvf efak-web-3.0.1-bin.tar.gz 移…

【Nacos 2.3.3支持Postgre SQL数据源配置】

Nacos 2.3.3支持Postgre SQL数据源配置 1、Nacos下载2、 插件下载:3、SQL脚本获取、nacos数据库创建、插件编译4、Nacos 集群搭建方式: 1、Nacos下载 下载地址: https://download.nacos.io/nacos-server/nacos-server-2.3.2.zip 或者自行在官…

1.Vue2使用ElementUI-初识及环境搭建

目录 1.下载nodejs v16.x 2.设置淘宝镜像源 3.安装脚手架 4.创建一个项目 5.项目修改 代码地址:source-code: 源码笔记 1.下载nodejs v16.x 下载地址:Node.js — Download Node.js 2.设置淘宝镜像源 npm config set registry https://registry.…

SpringCloud-OpenFeign拓展-连接池、最佳使用方法、日志输出

目录 1 OpenFeign连接池 1.1 常见连接类型 1.2 连接池使用方法 1.2.1 引入依赖 1.2.2 开启连接池功能 1.2.3 配置完成,重启实例即可,底层将更改设置。 2 OpenFeign最佳使用方法 2.1 每个微服务都是单独的project,内部有三个独立模块 …

Docker:认识镜像仓库及其命令

文章目录 Docker Registry什么是Docker Registry 镜像仓库工作机制使用流程实际使用方法仓库的拉取机制 常用的镜像仓库---DockerHub什么是DockerHub私有仓库 镜像仓库命令docker logindocker pulldocker pushdocker searchdocker logout Docker Registry 什么是Docker Regist…

编译遇到找不到pcap.so 问题

1.locate 定义pcap.so locate pcap.so 如果存在则打印所有路径 使用软连接将pcap.so 的实际位置连接到编译的lib 目录下 ln -s /usr/lib/x86_64-linux-gnu/libpcap.so /usr/lib/libpcap.so 编译 提示 说明程序中编译的目标程序需要的库与现有的不兼容,一般都是3…

Mysql使用中的性能优化——单次插入和批量插入的性能差异

一般Mysql的客户端和服务端不在一台机器上,所以它们之间的通信需要通过网络进行。我们本次实验,希望抛开网络的影响,测试不同SQL方案在Mysql服务器上的执行效率的对比。于是我们使用“存储过程”来辅助测试。 结论 先上结论: 批…

Servlet基础(续集)

Servlet原理 Servlet是由Web服务器调用&#xff0c;Web服务器在收到浏览器请求之后&#xff0c;会&#xff1a; Mapping问题 一个Servlet可以指定一个映射路径 <servlet-mapping><servlet-name>hello</servlet-name><url-pattern>/hello</url-pa…

vue3 实现自定义指令封装 --- 通俗易懂

1、局部自定义指令 1.1 在<script setup>定义组件内的指令&#xff0c;任何以v开头的驼峰式命名的变量都可以被用作一个自定义指令 <template><div><h3>使用自定义指令</h3><div>########################## start 局部自定义指令</d…

Docker大学生看了都会系列(八、Dokcerfile部署go项目)

系列文章目录 第一章 Docker介绍 第二章 2.1 Mac通过Homebrew安装Docker 第二章 2.2 CentOS安装Docker 第三章 Docker常用命令 第四章 常用命令实战 第五章 Docker镜像详解 第六章 Docker容器数据卷 第七章 Dockerfile详解 第八章 Dokcerfile部署go项目 文章目录 一、前言二、环…

解决Android Studio Iguana版本不显示原创的GradleTask问题

问题描述&#xff1a; 下面是我的AndroidStudio版本号&#xff0c;升级后我发现项目里面自定义的gradletask找不到了&#xff1f;&#xff1f;&#xff1f; 解决方案&#xff1a; 1、去setting里面把下面红框里面的选项勾选一下&#xff0c;缺点就是sync的时候会慢一些。 2、…

可以抛弃纸质礼金簿了,以后登记礼金可以用这款小程序

可以抛弃纸质礼金簿了&#xff0c;以后登记礼金可以用这款小程序 小程序介绍使用主要技术代码来源项目演示首页和我的关于和设置收礼功能送礼功能我的家庭和数据统计 总结 大家好&#xff0c;这里是程序猿代码之路&#xff0c;先说说为什么想搞这一个小程序呢&#xff0c;主要是…

linux部署运维3——centos7下导入导出mysql数据库的sql文件以及查询数据量最大的表信息

在实际项目开发或者项目运维过程中&#xff0c;数据库的导入导出操作比较频繁&#xff0c;如果可以借助第三方工具那当然算喜事一桩&#xff1b;但是如果不允许外部访问&#xff0c;那么就只能使用数据库自带的命令&#xff0c;也是相当方便的。 一.导入sql文件 1.在linux命令…

pxe自动装机与无人值守

一、pxe与无人值守 pxe&#xff1a;c/s 模式&#xff0c;允许客户端通过网络从远程服务器&#xff08;服务端&#xff09;下载引导镜像&#xff0c;加载安装文件&#xff0c;实现自动化安装操作系统。 pxe的优点&#xff1a; 1、规模化 同时装配多台服务器&#xff08;20多&…

zookeeper启动(一)

1.zookeeper启动入口 在zkServer.sh的启动命令中,我们可以找到zookeeper启动的关键类org.apache.zookeeper.server.quorum.QuorumPeerMain QuorumPeerMain#main 我们可以直接看org.apache.zookeeper.server.quorum.QuorumPeerMain中的main方法,从下面的main方法中,我们可以…

专为Mac设计的窗口管理Magnet 中文

Magnet是一款专为Mac设计的窗口管理工具软件。它具备强大的多窗口管理能力&#xff0c;支持用户通过简单的拖放操作&#xff0c;将应用程序窗口快速对齐、排列和分组。此外&#xff0c;Magnet还提供了预设的布局选项和自定义设置功能&#xff0c;帮助用户实现个性化的窗口布局。…

本地部署GLM-4-9B清华智谱开源大模型方法和对话效果体验

GLM-4-9B是清华大学和智谱AI推出的最新一代预训练模型GLM-4系列中的开源版本。在语义、数学、推理、代码和知识等多方面的数据集测评中&#xff0c;GLM-4-9B及其人类偏好对齐的版本GLM-4-9B-Chat均表现出较高的性能&#xff0c;其通用能力评测结果甚至超越了Llama-3-8B开源大模…

多样本上下文学习:开拓大模型的新领域

大模型&#xff08;LLMs&#xff09;在少量样本上下文学习&#xff08;ICL&#xff09;中展现出了卓越的能力&#xff0c;即通过在推理过程中提供少量输入输出示例来学习&#xff0c;而无需更新权重。随着上下文窗口的扩展&#xff0c;我们现在可以探索包含数百甚至数千个示例的…

pdf怎么编辑修改内容?3个实用软件!

在当今数字化时代&#xff0c;PDF文件因其跨平台、格式固定的特性&#xff0c;成为我们日常工作和生活中不可或缺的一部分。然而&#xff0c;PDF文件的修改和编辑往往成为许多人的难题。本文将为您详细介绍如何编辑修改PDF文件的内容&#xff0c;并推荐几款实用的编辑软件&…

搭建多平台比价系统需要了解的电商API接口?

搭建一个多平台比价系统涉及多个步骤&#xff0c;以下是一个大致的指南&#xff1a; 1. 确定需求和目标 平台选择&#xff1a;确定你想要比较价格的平台&#xff0c;例如电商网站、在线旅行社等。数据类型&#xff1a;明确你需要收集哪些数据&#xff0c;如产品价格、产品名称…