什么是机器学习

前言

机器学习(Machine Learning, ML)是一个总称,用于解决由各位程序员自己基于 if-else 等规则开发算法而导致成本过高的问题,想要通过帮助机器 「发现」 它们 「自己」 解决问题的算法来解决 ,而不需要程序员将所有规则都输入机器,明确告诉机器该怎么做。

机器学习概念

机器学习的核心是“使用算法解析数据,从中学习,然后对新数据做出决定或预测”。也就是说计算机利用以获取的数据得出某一模型,然后利用此模型进行预测的一种方法,这个过程跟人的学习过程有些类似,比如人获取一定的经验,可以对新问题进行预测。
在这里插入图片描述

可以看到,神经网络只是机器学习中的一部分,除了神经网络,机器学习还有着许多其他的算法。机器学习在多年的发展中逐步丰富,已经被人们开发出了许多中算法

  • K 近邻(KNN)
  • K 均值(K-Means)
  • 支持向量机(SVM
  • 随机森林(RandomForest)
  • 逻辑回归(Logistic Regression)
  • 神经网络(Neural Network)
  • 其它

机器学习的分类

机器学习按照学习的方式可以分为

  1. 有监督学习通常指的是所有数据都含有特征 X 和标签 Y,有标准答案指导机器进行学习;
  2. 无监督学习指的是只有特征 X,没有特定的标签 Y,设计一定的规则让机器进行学习;
  3. 半监督学习指的是所有数据都有特征 X,但一部分数据含有标签 Y,一部分没有,需要通过联合没有标签和有标签的数据进行学习;
  4. 强化学习指的是可以通过外界或人为规定的奖励来指导机器进行下一步的行为。

无监督学习:例如聚类的算法,即把特征值相同的归为一类,或者降维
半监督学习: 一般通过聚类算法把无标签特征值和有标签特征值相同归为一类,并打上标签.然后使用有监督的学习方式学习
强化学习: 某种意义上也可以理解为一定的有监督,但其又不是完全将奖励值作为学习目标,并且一般是实时的,基于概率去抽样下一步行为的,所以又有着一定的区别。,例如阿尔法围棋和无人驾驶

按照工作的方式可以分为

  • 批量学习(离线学习):Batch Learning,输入大量学习资料,机器学习算法学习训练出模型,将模型投入到生产中,模型不会发生变化;

    • 优点:简单,只需要学习一次算法就可以,在生产过程中不需要修改模型;
    • 缺点:无法随着环境变化而变化模型;
    • 解决方案:定时重新批量学习,但是每次重新批量学习时,运算量巨大;在某些环境变化非常快的情况下,甚至是不可能的;
  • 在线学习:Online Learning,机器学习算法的流程不变,只不过每次输入样例时,能够获取正确结果,并将此结果给到机器学习算法,改进模型,不断循环;在这里插入图片描述

    • 优点:及时反映新的环境变化;
    • 缺点:新的数据带来不好的变化;新的数据不准确、质量不高,带来不好的变化,错误的结果;解决方案:需要加强对数据进行监控,及时对异常数据进行检测;
    • 其他:也适用于数据量巨大,完全无法批量学习的环境。

对于算法模型本身分类

  • 参数学习:对数据概率分布进行建模,有一种最为直接的方法就是先假设这个分布是服从某个特定分布的,比如高斯分布,泊松分布等等,当然这些分布中有些未知参数需要我们求得,而这些参数也正是决定了这个分布的形状的.求解通常根据现有的样本数据集进行,这个参数集 Θ \Theta Θ是一个有限的集合.

    推出一个结论就是,在参数化模型的框架下,无论我接下来观察到多少数量的数据,哪怕是无限多个数据,我模型的参数量都只有固定数量多个,那便是 Θ \Theta Θ。也就是说,用有界的参数量(复杂度)对无界的(数据量)的数据分布进行了建模。

  • 非参数学习:和参数化模型截然相反的是,对数据分布不进行任何的假设,只是依赖于观察数据,对其进行拟合。换句话说,其认为数据分布不能通过有限的参数集 Θ \Theta Θ进行描述,但是可以通过无限维度的参数 Θ \Theta Θ进行描述,无限维度也就意味着其本质就是一个函数 f ( . ) ∈ R ∞ f(.) \in \R^\infty f(.)R.

    通常,实际中的模型是对这个无限维度参数集的近似,比如神经网络中的参数,虽然参数量通常很大,也有万有拟合理论保证其可以拟合函数,但是其只是对无限维度数据的近似而已。由于非参数化模型依赖于观察数据,因此参数集 Θ \Theta Θ能捕获到的信息量随着观察数据集的数量增加而增加,这个使得模型更加灵活。

机器学习的应用

机器学习的不同模型解决不同应用场景的问题
在这里插入图片描述

  • 分类是我们知道有哪些组,然后对数据进行判断,判断这些数据到底是预先知道的那些组。举个很简单的例子,比如我们在军训排队时要求男生一组,女生一组,这就是一种分类,我们提前知道要分那些组,然后通过一种算法对输入的数据判定,来分类到已知的类别下,这个就是分类,所以分类属于监督学习方法
  • 聚类是实现不知道这批数据有哪些类别或标签,然后通过算法的选择,分析数据参数的特征值,然后进行机器的数据划分,把相似的数据聚到一起,所以它是无监督学习;
  • 回归在统计学角度,指的是确定两种或两种以上变量间相互依赖的定量关系的一种统计分析方法。回归分析按照涉及的变量的多少,分为一元回归和多元回归分析;按照因变量的多少,可分为简单回归分析和多重回归分析;按照自变量和因变量之间的关系类型,可分为线性回归分析和非线性回归分析。它是对有监督的连续数据结果的预测,比如通过一个人过去年份工资收入相关的影响参数,建立回归模型,然后通过相关的参数的变更来预测他未来工资收入。
  • 降维就是去除冗余的特征,降低特征参数的维度降低,用更加少的维度来表示特征

学习环境

  • 语言:Python3
  • 框架:scikit-learn,基于 SciPy 构建的机器学习 Python 模块
  • IDE: jupyter Notebook 可以图形输出,文档编写
  • 其它: matolotlib 画图工具,numpy科学计算的基础库

K近邻

我们通过“ K近邻”算法,来了解机器学习的流程.

学习算法原理

K近邻算法,即是给定一个训练数据集,对新的输入实例,在训练数据集中找到与该实例最邻近的K个实例,这K个实例的多数属于某个类,就把该输入实例分类到这个类中。
在这里插入图片描述
如上图所示,有两类不同的样本数据,分别用蓝色的小正方形和红色的小三角形表示,而图正中间的那个绿色的圆所标示的数据则是待分类的数据。

如果K=3,绿色圆点的最邻近的3个点是2个红色小三角形和1个蓝色小正方形,少数从属于多数,基于统计的方法,判定绿色的这个待分类点属于红色的三角形一类。

距离的度量

定义中所说的最邻近是如何度量呢?我们怎么知道谁跟测试点最邻近。这里就会引出我们几种度量俩个点之间距离的标准。
在这里插入图片描述

特征归一化

首先举例如下,我用一个人身高(cm)与脚码(尺码)大小来作为特征值,类别为男性或者女性。我们现在如果有5个训练样本,分布如下:

A [(179,42),男]
B [(178,43),男]
C [(165,36)女]
D [(177,42),男]
E [(160,35),女]

很容易看到第一维身高特征是第二维脚码特征的4倍左右,那么在进行距离度量的时候,我们就会偏向于第一维特征。这样造成俩个特征并不是等价重要的,最终可能会导致距离计算错误,从而导致预测错误。

所以我们应该让每个特征都是同等重要的,归一化公式如下:

  1. 方法一:最小-最大规范化(0-1归一化)在这里插入图片描述
  2. 方法二:零-均值规范化(z-score标准化)在这里插入图片描述

对一个数值特征来说,很大可能它是服从正态分布的。标准化将这个正态分布调整为均值为0,方差为1的标准正态分布而已.更好保持了样本间距.当样本中有异常点时,归一化有可能将正常的样本“挤”到一起去。

超参数K

k如何选值,如果我们选取较小的k值,那么就会意味着我们的整体模型会变得复杂,容易发生过拟合!
在这里插入图片描述
上图中有俩类,一个是黑色的圆点,一个是蓝色的长方形,现在我们的待分类点是红色的五边形。很容易我们能够看出来五边形离黑色的圆点最近,k又等于1,那太好了,我们最终判定待分类点是黑色的圆点。

相反,如果我们选取较大的k值(k=15), 同样待分类点也是黑色

k值既不能过大,也不能过小.通常采取交叉验证法来选取最优的k值.k也被称为超参数

同相的距离公式中的p,也是要通过实验来验证,也是超参数
相对的还有模型参数,即算法运算过程中学习的参数

流程实施

## 导入库
import numpy as np
# 加载莺尾花数据集
from sklearn import datasets
# 导入KNN分类器
from sklearn.neighbors import KNeighborsClassifier
from sklearn.model_selection import train_test_split

## 数据导入
# 导入莺尾花数据集
iris = datasets.load_iris()

X = iris.data
y = iris.target

# 得到训练集合和验证集合, 8: 2
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2)

## 模型训练,参数的意思是使用欧式距离,k=5
clf = KNeighborsClassifier(n_neighbors=5, p=2, metric="minkowski") 
## 使用训练集合,训练数据
clf.fit(X_train, y_train)

## 模型预测,把测试集数据转入得到预测结果
X_pred = clf.predict(X_test)
## 预测结果传入得到准确率
acc = sum(X_pred == y_test) / X_pred.shape[0]
print("预测的准确率ACC: %.3f" % acc)
  1. 业务场景分析就是将我们的业务需求、使用场景转换成机器学习的需求语言,然后分析数据,选择算法的过程。这个是机器学习的准备阶段,主要包括以下3点:

    • 业务抽象:莺尾花图区分

    • 数据准备:提取莺尾花的特征在这里插入图片描述

    • 选择算法:使用KNN算法。

  2. 数据处理就是数据的选择和清洗的过程,数据准备好后,确定了算法,确定了需求,就需要对数据进行处理,数据处理的目的就是尽可能降低对算法的干扰。在数据处理中我们会经常用到

    • 去噪 : 将数据分成训练和测试集, 然后通过调节超参数,选出准确率是高的在这里插入图片描述

    • 归一: 将数据统一标准化在这里插入图片描述

  3. 特征工程就是对处理完成后的数据进行特征提取,转换成算法模型可以使用的数据。

主要参考

《如何入门机器学习?有哪些值得分享的学习心得?》
《Jupyter Notebook介绍、安装及使用教程》
《什么是机器学习》
《一文搞懂k近邻(k-NN)算法(一)》
《python/scikit-learn 机器学习实战 原理/代码:KNN (K近邻算法)》

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

影响语音芯片识别率的因素概述

语音芯片识别率是指芯片对人类语音信号的识别能力。在实际应用中,语音芯片识别率的高低直接影响了用户对芯片的体验和满意度。因此,提高语音芯片识别率是当前语音技术领域的重要任务之一。 1.、语音芯片的硬件设计:设计良好的芯片可以更好地…

竹云参编《公共数据授权运营平台技术要求》团体标准正式发布

2023年11月23日,第二届全球数字贸易博览会“数据要素治理与市场化论坛”于杭州成功召开,国家数据局党组书记、局长刘烈宏,浙江省委常委、常务副省长徐文光出席会议并致辞。会上,国家工业信息安全发展研究中心发布并解读了我国首部…

大厂前沿技术导航

百度Geek说 - 知乎 腾讯技术 - 知乎 美团技术团队

Java 项目中常用注解汇总!! (自整理)

Spring框架的注解 PostMapping("/getDetails") post请求 映射到接口 RequestBody 用来接收HTTP请求体中参数 GetMapping("/getDetails") get请求 映射到接口 RequestParam 用来接收URL中的查询参数 PutMappi…

Tomcat 配置

1: 打开 2:选择版本号,我这边是 1.7 3:添加 web 4: 添加jar包 5:添加 6:添加 Tomcat

逆矩阵相关性质与例题

1.方阵的行列式:就是将方阵中的每一个元素转换至行列式中。 1.性质一:转置方阵的行列式等于转置前的行列式。(对标性质:行列式与它的转置行列式相等) 2.性质二:|ka||a|*k的n次方,n为方阵阶数。 …

平台工程时代的 Kubernetes 揭秘:2023年生产状况报告深度剖析

Kubernetes 在生产环境中的复杂性已经成为常态,在2023年这个平台工程盛行的时代,容器管理的最大亮点可能在于其灵活性,然而在运维政策和治理等方面仍然存在诸多挑战。八年过去了,在生产环境中使用 Kubernetes 仍然需要面临许多挑战…

目前比较好用的护眼台灯,小学生适合的护眼台灯推荐

随着技术的发展,灯光早已成为每家每户都需要的东西。但是灯光不好可能会对眼睛造成伤害是很多人没有注意到的。现在随着护眼灯产品越来越多,市场上台灯的选择越来越多样化,如何选择一个对眼睛无伤害、无辐射的台灯成为许多家长首先要考虑的问…

mysql:修改密码的几种方式

背景 当我们 brew install mysql 新安装 mysql 的时候,是没有密码的,我们可以直接通过 mysql -u root 连接上。但是密码还是要设置的,一是为了安全,二是有些数据库软件如 Sequel 连接都是必须要密码的,接下来我们来看…

自监督LIGHTLY SSL教程

Lightly SSL 是一个用于自监督学习的计算机视觉框架。 github链接:GitHub - lightly-ai/lightly: A python library for self-supervised learning on images. Documentation:Documentation — lightly 1.4.20 documentation 以下内容主要来自Documen…

ElasticSearch 7 SQL 详解

平时使用Elasticsearch的时候,会在Kibana中使用Query DSL来查询数据.每次要用到Query DSL时都基本忘光了,需要重新在回顾一遍,最近发现Elasticsearch已经支持SQL查询了(6.3版本以后),整理了下一些用法. 简介 Elasticsearch SQL是一个X-Pack组件,它允许针对Elasticsearch实时执…

Zabbix-Liunx服务器内存使用率测试

要在Python 2.7中运行内存消耗脚本并安装psutil,您需要先安装pip。以下是完整的步骤,包括如何在Python 2.7环境中安装pip,然后安装psutil,以及最后如何运行内存消耗脚本。 步骤1: 安装pip 在Python 2.7中安装pip: 首先…

2016年8月15日 Go生态洞察:Go 1.7版本发布

🌷🍁 博主猫头虎(🐅🐾)带您 Go to New World✨🍁 🦄 博客首页——🐅🐾猫头虎的博客🎐 🐳 《面试题大全专栏》 🦕 文章图文…

JVM内存模型及调优

本文将为大家详细介绍JVM内存模型及如何对JVM内存进行调优。我们将分为以下几个部分进行讲解: JVM内存模型概述JVM内存区域及作用JVM内存调优方法实战案例与优化技巧 一、JVM内存模型概述 在深入了解JVM内存模型之前,我们需要先了解一下Java内存模型&am…

通俗理解词向量模型,预训练模型,Transfomer,Bert和GPT的发展脉络和如何实践

最近研究GPT,深入的从transfomer的原理和代码看来一下,现在把学习的资料和自己的理解整理一下。 这个文章写的很通俗易懂,把transformer的来龙去脉,还举例了很多不错的例子。 Transformer通俗笔记:从Word2Vec、Seq2S…

2016年8月18日 Go生态洞察:Go 1.7版本二进制文件缩小

🌷🍁 博主猫头虎(🐅🐾)带您 Go to New World✨🍁 🦄 博客首页——🐅🐾猫头虎的博客🎐 🐳 《面试题大全专栏》 🦕 文章图文…

MFC所有控件介绍及基本使用

一、前言 本篇文档介绍了MFC控件的基本使用,同时提供了关于MFC控件使用的工程代码,程序界面如下图,有兴趣的可以到文档最后的链接处进行下载。 二、控件介绍 2.1 Button (按钮) 2.2 CheckBox(复选框&am…

【新手解答】深入探索 C 语言:一些常见概念的解析

C语言的相关问题解答 写在最前面目录 问题1变量名与变量的关系与区别变量和数据类型形参(形式参数)的概念 问题2解析延伸解析对于多文件程序的理解总结 问题3类和对象变量和数据类型变量是否为抽象的数据类型?总结 问题4解析源文件&#xff0…

和奇葩领导的相处之道

目录 1 和奇葩部门领导做项目的经历2 奇葩领导对团队产生的影响2.1 不和谐的团队氛围2.2 合作过程中的摩擦和阻碍2.3 下属的挫折批评和不公平对待 3 与奇葩领导相处的经验教训结语 在职场中,与不同的领导和同事打交道是家常便饭。,接触的人多了&#xff…

记一次docker服务启动失败解决过程

环境:centos 7.6 报错:start request repeated too quickly for docker.service 由于服务器修复了内核漏洞,需要重启,没想到重启后,docker启动失败了 查看状态 systemctl status docker如下图 里面有一行提示&…