数据分析---常见分类算法

2023-11-18

分类问题是监督学习的一个核心问题。在监督学习中,当输出变量取有限个离散值时,预测问题便成为分类问题。

监督学习从数据中学习一个分类决策函数或分类模型,称为分类器(classifier)。分类器对新的输入进行输出的预测,这个过程称为分类。

 

KNN算法(k-NearestNeighbor):

如果一个样本在特征空间中的k个最相邻的样本中的大多数属于某一个类别,则该样本也属于这个类别。

所选择的邻居都是已经正确分类的对象。

对于类域的交叉或重叠较多的待分样本集来说,KNN方法较其他方法更为适合。

        现在有电器,水果,书籍3个种类的点,分布在第一象限(x表示价格,y表示销量),现在已知一个点m,我们需要找出离它最近的点(欧氏距离),根据这几个点的特征去分析,如果k=4,找4个点,其中3个 点属于水果类,那么,我们就断定这个点m也是水果。

KNN算法不仅可以用于分类,还可用于回归。通过找出一个样本的k个最近邻居,将这些邻居的属性的平均值赋给该样本,就可以得到该样本的属性。更有用的方法是将不同距离的邻居对该样本产生的影响给予不同的权值(weight),如权值与距离成反比。

缺点:样本分布不均衡(有的类样本很少,有的超多),就会影响最后判断的结果。

 

朴素贝叶斯算法:

公式:                                  P(B|A) = P(A|B)*P(B) / P(A)

即:                                      P(类别|特征) = P(特征|类别)*P(类别) / P(特征)

           这个等式成立的条件需要特征之间相互独立,所以各属性之间相关性较小时,朴素贝叶斯性能比较好

即要满足这样:                   P(A)=P(A1*A2*A3...) = P(A1)*P(A2)*P(A3)...

上面的公式可以改成:       P(B|A) = P(A1|B)*P(A2|B)*P(A3|B)...  / P(A1)*P(A2)*P(A3)...

优点:分类过程中时空开销小(假设特征相互独立,只会涉及到二维存储)

 

决策树:

                        https://mp.csdn.net/postedit/85130080

 

人工神经网络:

目前,已有近40种神经网络模型,其中有反传网络、感知器自组织映射、Hopfield网络、波耳兹曼机、适应谐振理论等

数学定义:

                     

来自其他处理单元(神经元)i的信息为Xi,每一条突触的权重(作用强度)是Wi,

                          左边:   数学模型2

                           右边:数学模型3                 

 θ(threshold)表示隐含层神经节点的阈值(大于这个值一种结果,小于这个值又一种结果,例如:买东西,价格小于10就买,大于10不买),f 称为激活函数

激活函数:

      由于上一层的输出是下一层的输入,导致上层到下层是一个线性过程,而线性模型的表达能力不够,所以引入非线性函数。

      常用的有:

              1)tanh(双切正切函数):tanh在特征相差明显时的效果会很好,在循环过程中会不断扩大特征效果

                                                      

              2)sigmoid(s型函数): 它可以将一个实数映射到(0,1)的区间,可以用来做二分类

                                                    

              3)ReLU (简单,大于0的留下,否则为0) 用于隐层神经元输出

 

从输入输出的结果中进行学习:

                            神经元权值和阈值的不断调整

学习规则:

 1) 误差修正型规则:属于有监督的学习方法,根据实际输出和期望输出的误差进行网络连接权值的修正,

                                         δ学习规则、Widrow-Hoff学习规则、感知器学习规则和误差反向传播的BP(Back Propagation)学习规则

  2)竞争型规则:属于无监督学习,没有期望输出,学习(训练)阶段与应用(工作)阶段成为一体

  3)Hebb型规则:利用神经元之间的活化值(激活值)来反映它们之间联接性的变化,根据活化值(激活值)来修正其权值

  4)随机型规则:根据目标函数(即网络输出均方差)的变化调整网络的参数,最终使网络目标函数达到收敛值

神经网络的运作:

                             

最困难的部分就是确定权重(w)和阈值(θ)。目前为止,这两个值都是自己主观给出的,但现实中很难估计它们的值,一般采用试错法,即微小的调整,得到效果最好的那一次调整。

支持向量机(Support Vector Machine, SVM):

SVM是用来解决二分类问题的有监督学习算法

支持向量机方法是建立在统计学习理论的VC 维理论和结构风险最小原理基础上的,根据有限的样本信息在模型的复杂性(即对特定训练样本的学习精度,Accuracy)和学习能力(即无错误地识别任意样本的能力)之间寻求最佳折衷,以期获得最好的推广能力(或称泛化能力)。

泛化误差界的公式为:

                                     R(w)≤Remp(w)+Ф(n/h)

公式中R(w)就是真实风险,Remp(w)就是经验风险,Ф(n/h)就是置信风险。统计学习的目标从经验风险最小化变为了寻求经验风险与置信风险的和最小,即结构风险最小。

SVM正是这样一种努力最小化结构风险的算法。

非线性,是指SVM擅长应付样本数据线性不可分的情况,主要通过松弛变量(也有人叫惩罚变量)和核函数技术来实现

维数高可以降维处理

线性分类器:

                                              

C1和C2是要区分的两个类别,中间的直线就是一个分类函数,如果存在一个线性函数能够将样本完全正确的分开,就称这些数据是线性可分的,否则称为非线性可分的。

线性函数:一维是一个点,二维是线,三维是面,高于三维称为超平面。一个线性函数是一个实值函数(即函数的值是连续的实数),通过分类函数执行时得到的值大于还是小于这个阈值来确定类别归属。

要将两类分开,就要找到一个超平面,使得超平面到两类的 margin 达到最大,margin就是超平面与离它最近一点的距离

算法方面:https://blog.csdn.net/liugan528/article/details/79448379

                                               

 

 

 

 

 

 

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

数据分析---常见分类算法 的相关文章

  • Java GUI编程——在线聊天室

    引言 综合应用Java的GUI编程和网络编程 实现一个能够支持多组用户同时使用的聊天室软件 该聊天室具有比较友好的GUI界面 并使用C S模式 支持多个用户同时使用 用户可以自己选择加入或者创建房间 和房间内的其他用户互发信息 文字和图片
  • Web前端的优点有什么?为什么前端可以这么火?

    今天小编要跟大家分享的文章是关于web前端的优点有哪些 为什么Web前端可以这么火 相信小伙伴们对Web前端并不陌生 那么你知道Web前端的有点都有哪些吗 下面就让我们一起来看一看吧 HTML5是唯一一个通吃PC Mac iPhone iP

随机推荐

  • oracle两个日期的月份间隔,Oracle 计算两个日期间隔的天数、月数和年数

    在Oracle中计算两个日期间隔的天数 月数和年数 一 天数 在Oracle中 两个日期直接相减 便可以得到天数 1 select to date 08 06 2015 mm dd yyyy to date 07 01 2015 mm dd
  • 三招搞定你的ubuntu安全问题

    本篇主要介绍以下三个部分 反病毒引擎clamav的安装和使用 ubuntu ufw限制访问地址 ubuntu用户连接失败锁定指定时间 反病毒引擎clamav的安装和使用 简介 ClamAV是一款开源的反病毒引擎 用于检测病毒 特洛伊木马 恶
  • IT行业里的热门技术和项目分享

    随着科技的发展 IT行业中涌现出了很多热门技术 其中最具代表性的包括人工智能和机器学习 云计算和云原生技术 大数据和数据分析 容器化技术和Kubernetes 前端框架和组件库等 此外 也有一些热门IT技术项目备受关注 比如Apache K
  • jdk报错

    Syntax error annotations are only available if source level is 1 5 or greater解决方法 原创 2016年07月18日 14 13 39 ul class artic
  • Java内存分配全面浅析

    本文将由浅入深详细介绍Java内存分配的原理 以帮助新手更轻松的学习Java 这类文章网上有很多 但大多比较零碎 本文从认知过程角度出发 将带给读者一个系统的介绍 进入正题前首先要知道的是Java程序运行在JVM Java VirtualM
  • 多维随机变量及其分布(四):

    一 二维随机变量及其分布函数 1 二维随机变量 设随机变量 Z X Y 则有 Z X Y 一个随机变量是有两个随机变量决定的 2 联合分布函数的基本性质 单调性 F x y 分别对x 或y是单调不减的 即 对任意固定的y 当 x1 lt x
  • 【SPI】STM32 SPI 双机通信,SPI从机模式使用

    文章目录 一 SPI主机配置 二 SPI从机配置 三 双机通信 1 轮询 中断 低速 2 轮询 DMA 低速 3 DMA DMA 高速 4 开启CRC校验 自选 四 遇到的问题 1 高速使用时 程序卡死 或者数据出错 已解决 2 数据莫名其
  • html制作日程安排,在线日程安排怎样做?日程表在线制作工具

    在线日程安排怎样做 日程表在线制作工具 在线日程安排怎样做 每日仅有二十四小时 可在一天我们要做的事却太多 每日忙的晕头转向 身心俱疲 这可咋办啊 戴尔 麦康基说过 计划的订制比计划本身更为重要 因此可见 订制好每日的行程安排是不可或缺的
  • 详述String类的equals方法

    详述String类的equals方法 1 两个String类的对象采取直接赋值 ublic class Test public static void main String args String name1 Tom String nam
  • java基础语法之面向对象

    面向对象 面向对象是一种编程思想 与之对应的是面向过程 区别 面向过程 POP 强调的是功能 面向对象 OOP 强调的是带有具体功能的对象 面向对象的优点 提高代码复用性 降低代码间的耦合度 提升代码维护性 三大特征 封装 继承 多态 一
  • 六种黑客入侵手机的常见方式

    六种黑客入侵手机的常见方式 在移动网络科技高速发展的今天 我们每个人的手机都有可能成为黑客攻击的对象 下面为大家介绍6种黑客入侵手机的常见方式 希望能够帮助大家避免手机被不对象攻击 1 网络钓鱼攻击 网络钓鱼攻击非常普遍 那是因为它们非常有
  • 磁盘空间重分配

    root localhost df h Filesystem Size Used Avail Use Mounted on dev mapper VolGroup lv root 50G 47G 16M 100 lv root满了 tmpf
  • pageHelper的使用与源码分析

    文章目录 一 使用步骤 二 分页原理 1 统计总数 2 源码分析 三 总结 pageHelper作为Mybatis最好用的分页插件 自然受到极大多数人的追捧 而这里想要尽量阐述清楚pageHelper的具体使用步骤 实现的背后原理 以及与原
  • WebGL 实践篇(五)三维图形的绘制及矩阵变换、正射投影

    一 三维 F 的绘制 1 着色器 按照上一篇提到的矩阵变换 我们可以直接在顶点着色器中加入相应的矩阵变换 这样就可以简化着色器代码 通过变量传入矩阵的值也便于之后矩阵变换的修改 三维图形的绘制相比于二维图形只在参数类型上有一些变化 注意ve
  • Dynamically inflates UI in Android App

    Dynamically inflates UI in Android App There is a fascinating idea that inflates UI according to an android layout xml d
  • Spring Cloud OAuth2 + JWT 实现

    Spring Cloud OAuth2介绍 Spring Cloud OAuth2 是 Spring Cloud 体系对OAuth2协议的实现 可以 来做多个微服务的统 认证 验证身份合法性 授权 验证权限 通过向OAuth2服务 统 认证
  • 信息学奥赛一本通 1175:除以13

    题目链接 http ybt ssoier cn 8088 problem show php pid 1175 思路 直接复用 高精度除低精度 的代码即可 include
  • 简洁又快速地处理集合——Java8 Stream(上)

    Java 8 发布至今也已经好几年过去 如今 Java 也已经向 11 迈去 但是 Java 8 作出的改变可以说是革命性的 影响足够深远 学习 Java 8 应该是 Java 开发者的必修课 今天给大家带来 Java 8 Stream 讲
  • signature=8b42938f09e2cf752303c59298e18eae,yarn.lock

    THIS IS AN AUTOGENERATED FILE DO NOT EDIT THIS FILE DIRECTLY yarn lockfile v1 babel code frame 7 0 0 beta 40 babel code
  • 数据分析---常见分类算法

    分类问题是监督学习的一个核心问题 在监督学习中 当输出变量取有限个离散值时 预测问题便成为分类问题 监督学习从数据中学习一个分类决策函数或分类模型 称为分类器 classifier 分类器对新的输入进行输出的预测 这个过程称为分类 KNN算