统计学习方法之基础整理(一)

正则化

正则化是模型选择的典型方法,是结构风险最小化策略的实现。
作用是选择经验风险与模型复杂度同时较小的模型。
正则化项可以取不同的形式,如L1范数、L2范数。

L1范式和L2范式

L1范式

概念:参数向量中各个元素绝对值之和。

作用:可以实现稀疏(参数稀疏的好处:完成特征自动选择、模型更容易解释)

L2范式

概念:参数向量中各个元素的平方和然后求平方根。

作用:防止过拟合,提升模型的泛化能力(让L2范数的规则项 ∣ ∣ W ∣ ∣ 2 ||W||^2 W2 尽可能小,可以使得W每个元素都很小,接近于零,但是与L1不同的是,不会等于0;这样得到的模型抗干扰能力强,参数很小时,即使样本数据x发生很大的变化,模型预测值y的变化也会很有限)

L1范式与L2范式区别:

  • 下降速度
    L1是按绝对值函数的“坡”下降的,而L2是按二次函数的“坡”下降。在0附近,L1的下降速度比L2的下降速度要快。

  • 模型空间的限制
    如果将L1和L2的模型空间都表示在(W1,W2)空间上,则可以发现L1在和每个相交的位置都有角出现,L2则没有角出现,故L1的位置容易产生稀疏性,而L2相交的位置有稀性的概率非常低。

交叉验证

交叉验证用于模型选择方法

原因:数据不足
基本思想:重复的使用数据,把给定的数进行切分,将切分数据集组合为训练集与测试集,在此基础上反复进行训练、测试以及模型选择。

  • 简单交叉验证
  • S折交叉验证
    随机地将已给数据切分成S个互不相交的大小相同的子集;然后利用S-1个子集的数据训练模型,利用余下的子集测试模型;将这一过程对可能的S种选择重复进行;最后选出S次评测中平均测试误差最小的模型。
  • 留一交叉验证
    当S=N(给定数据集的容量)时,称为留一交叉验证。

ROC曲线和AUC值

ROC

概念::接收者操作特征(receiveroperating characteristic),roc曲线上每个点反映着对同一信号刺激的感受性。

横轴:负正类率(false postive rate FPR)特异度,划分实例中所有负例占所有负例的比例;(1-Specificity)

纵轴:真正类率(true postive rate TPR)灵敏度,Sensitivity(正类覆盖率)

注:针对一个二分类问题,将实例分成正类(postive)或者负类(negative)。但是实际中分类时,会出现四种情况.

  1. 若一个实例是正类并且被预测为正类,即为真正类(True Postive TP)
  2. 若一个实例是正类,但是被预测成为负类,即为假负类(False Negative FN)
  3. 若一个实例是负类,但是被预测成为正类,即为假正类(False Postive FP)
  4. 若一个实例是负类,但是被预测成为负类,即为真负类(True Negative TN)
  • 真正类率(True Postive Rate)TPR: TP/(TP+FN),代表分类器预测的正类中实际正实例占所有正实例的比例。
  • 负正类率(False Postive Rate)FPR: FP/(FP+TN),代表分类器预测的正类中实际负实例占所有负实例的比例。
  • 真负类率(True Negative Rate)TNR: TN/(FP+TN),代表分类器预测的负类中实际负实例占所有负实例的比例,TNR=1-FPR。

当测试集中的正负样本的分布变换的时候,ROC曲线能够保持不变。在实际的数据集中经常会出现样本类不平衡,即正负样本比例差距较大,而且测试数据中的正负样本也可能随着时间变化。

AUC

概念: ROC曲线下的面积,介于0.1和1之间。AUC作为数值可以直观的评价分类器的好坏,值越大越好。
物理意义:任取一对(正、负)样本,正样本的score大于负样本的score的概率。

生成模型与判别模型

监督学习是对给定的输入预测相应的输出。
一般形式为:

  • 决策函数:Y=f(X)
  • 条件概率分布:P(Y|X)

监督学习方法分为生成方法和判别方法、

生成模型

由数据学习联合概率P(X,Y),然后求条件概率分布P(Y|X)作为预测的模型。即,给定输入X产生输出Y的生成关系。
常见的生成模型:朴素贝叶斯、隐马尔可夫模型

特点:生成方法可以还原出联合概率分布P(X,Y),而判别方法则不能。生成方法学习收敛速度快,即当样本容量增加时,学到的模型可以更快地收敛于真实模型,当存在隐变量时能让可以用生成方法,此时判别方法则不能用。

判别模型

由数据直接学习决策函数f(X)或者条件概率分布P(X|Y)作为预测模型。判别方法关心的是给定的输入X,应该预测什么样的输出。
典型模型:感知机、 决策树、逻辑斯蒂回归模型、最大熵模型、支持向量机、提升方法和条件随机场。

特点:判别方法直接学习的是条件概率P(X|Y)和决策函数f(X)。直接面对预测,往往学习的准确率更高,由于直接学习P(X|Y)或f(X)。可以对数据进行各种程度上的抽象,定义特征并使用特征,因此可以简化学习问题。

PS:仅为学习使用,如有错误,希望大家指出!

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Go语言(也称为Golang)是由Google开发的一种静态强类型、编译型的编程语言。它旨在成为一门简单、高效、安全和并发的编程语言,特别适用于构建高性能的服务器和分布式系统。以下是Go语言的一些主要特点和优势: 简洁性:Go语言的语法简单直观,易于学习和使用。它避免了复杂的语法特性,如继承、重载等,转而采用组合和接口来实现代码的复用和扩展。 高性能:Go语言具有出色的性能,可以媲美C和C++。它使用静态类型系统和编译型语言的优势,能够生成高效的机器码。 并发性:Go语言内置了对并发的支持,通过轻量级的goroutine和channel机制,可以轻松实现并发编程。这使得Go语言在构建高性能的服务器和分布式系统时具有天然的优势。 安全性:Go语言具有强大的类型系统和内存管理机制,能够减少运行时错误和内存泄漏等问题。它还支持编译时检查,可以在编译阶段就发现潜在的问题。 标准库:Go语言的标准库非常丰富,包含了大量的实用功能和工具,如网络编程、文件操作、加密解密等。这使得开发者可以更加专注于业务逻辑的实现,而无需花费太多时间在底层功能的实现上。 跨平台:Go语言支持多种操作系统和平台,包括Windows、Linux、macOS等。它使用统一的构建系统(如Go Modules),可以轻松地跨平台编译和运行代码。 开源和社区支持:Go语言是开源的,具有庞大的社区支持和丰富的资源。开发者可以通过社区获取帮助、分享经验和学习资料。 总之,Go语言是一种简单、高效、安全、并发的编程语言,特别适用于构建高性能的服务器和分布式系统。如果你正在寻找一种易于学习和使用的编程语言,并且需要处理大量的并发请求和数据,那么Go语言可能是一个不错的选择。
Go语言(也称为Golang)是由Google开发的一种静态强类型、编译型的编程语言。它旨在成为一门简单、高效、安全和并发的编程语言,特别适用于构建高性能的服务器和分布式系统。以下是Go语言的一些主要特点和优势: 简洁性:Go语言的语法简单直观,易于学习和使用。它避免了复杂的语法特性,如继承、重载等,转而采用组合和接口来实现代码的复用和扩展。 高性能:Go语言具有出色的性能,可以媲美C和C++。它使用静态类型系统和编译型语言的优势,能够生成高效的机器码。 并发性:Go语言内置了对并发的支持,通过轻量级的goroutine和channel机制,可以轻松实现并发编程。这使得Go语言在构建高性能的服务器和分布式系统时具有天然的优势。 安全性:Go语言具有强大的类型系统和内存管理机制,能够减少运行时错误和内存泄漏等问题。它还支持编译时检查,可以在编译阶段就发现潜在的问题。 标准库:Go语言的标准库非常丰富,包含了大量的实用功能和工具,如网络编程、文件操作、加密解密等。这使得开发者可以更加专注于业务逻辑的实现,而无需花费太多时间在底层功能的实现上。 跨平台:Go语言支持多种操作系统和平台,包括Windows、Linux、macOS等。它使用统一的构建系统(如Go Modules),可以轻松地跨平台编译和运行代码。 开源和社区支持:Go语言是开源的,具有庞大的社区支持和丰富的资源。开发者可以通过社区获取帮助、分享经验和学习资料。 总之,Go语言是一种简单、高效、安全、并发的编程语言,特别适用于构建高性能的服务器和分布式系统。如果你正在寻找一种易于学习和使用的编程语言,并且需要处理大量的并发请求和数据,那么Go语言可能是一个不错的选择。
Go语言(也称为Golang)是由Google开发的一种静态强类型、编译型的编程语言。它旨在成为一门简单、高效、安全和并发的编程语言,特别适用于构建高性能的服务器和分布式系统。以下是Go语言的一些主要特点和优势: 简洁性:Go语言的语法简单直观,易于学习和使用。它避免了复杂的语法特性,如继承、重载等,转而采用组合和接口来实现代码的复用和扩展。 高性能:Go语言具有出色的性能,可以媲美C和C++。它使用静态类型系统和编译型语言的优势,能够生成高效的机器码。 并发性:Go语言内置了对并发的支持,通过轻量级的goroutine和channel机制,可以轻松实现并发编程。这使得Go语言在构建高性能的服务器和分布式系统时具有天然的优势。 安全性:Go语言具有强大的类型系统和内存管理机制,能够减少运行时错误和内存泄漏等问题。它还支持编译时检查,可以在编译阶段就发现潜在的问题。 标准库:Go语言的标准库非常丰富,包含了大量的实用功能和工具,如网络编程、文件操作、加密解密等。这使得开发者可以更加专注于业务逻辑的实现,而无需花费太多时间在底层功能的实现上。 跨平台:Go语言支持多种操作系统和平台,包括Windows、Linux、macOS等。它使用统一的构建系统(如Go Modules),可以轻松地跨平台编译和运行代码。 开源和社区支持:Go语言是开源的,具有庞大的社区支持和丰富的资源。开发者可以通过社区获取帮助、分享经验和学习资料。 总之,Go语言是一种简单、高效、安全、并发的编程语言,特别适用于构建高性能的服务器和分布式系统。如果你正在寻找一种易于学习和使用的编程语言,并且需要处理大量的并发请求和数据,那么Go语言可能是一个不错的选择。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值