当前位置: 首页 > news >正文

机器学习知识点全面总结

一、机器学习基础概念

 1、什么是机器学习

        机器学习是一种人工智能技术,通过对数据的学习和分析,让计算机系统自动提高其性能。简而言之,机器学习是一种从数据中学习规律和模式的方法,通过数据来预测、分类或者决策

        机器学习的本质就是找到一个能无限接近需求的一个函数。

 2、怎样找到这个函数

        最基本的步骤如下:

        ①定一个函数集合

        ②判断函数的好坏

        ③选择最好的函数

3、机器学习三要素

        ①首先设计模型model

        ②通过各种方式判断模型的好坏

        ③根据需求,选择最好的函数,并不断优化模型

                  修改模型,增加数据维度

                  增加正则因子,使函数更加平滑,让参数w取值更小。(x变化较小时,整个函数结果             不会变化太大,结果更准)

4、机器学习的分类

监督学习:有数据标注情况下学习(回归、分类)

半监督学习:训练数据中带标记的数据不够多

迁移学习:在已学习基础上,做看似和以前学习不相关的事情,但实际效果很好(如在猫狗识别基础识别大象老虎等)

无监督学习:没有具体标注数据的情况下学习(机器阅读、机器绘画)

结构化学习:超越简单的回归和分类,产生结构化的结果(如图片、语言、声音)

二、处理一个机器学习问题的基本步骤 

  • 数据收集:首先需要收集数据并将其转化为可以计算的形式,例如数值、文本或图像等。
  • 数据预处理:数据收集后,需要对数据进行清洗、去除异常值、缺失值处理、特征选择等预处理步骤。
  • 特征工程: 是指在机器学习中对原始数据进行转换、组合和选择等处理,以提取更有用的特征或属性,以帮助机器学习算法更好地理解和处理数据。简而言之,特征工程就是对原始数据进行预处理,以提取有用信息来辅助机器学习。
  • 模型选择:根据问题的特点和数据的特征选择适合的机器学习算法和模型。
  • 模型训练(机器学习):利用已有数据对所选的机器学习模型进行训练,从而使模型能够学习数据中的规律和模式。
  • 模型评估:训练完成后,需要对模型进行评估和调整,以检查其性能和精度,并进行优化。
  • 模型应用:经过训练和优化后,机器学习模型可以用于新数据的预测、分类、聚类等任务。

 三、机器学习算法总结

1、监督学习(SupervisedLearning)

        有类别标签的学习,基于训练样本的输入、输出训练得到最优模型,再使用该模型预测新输入的输出;

        代表算法:决策树、朴素贝叶斯、逻辑回归、KNN、SVM、神经网络、随机森林、AdaBoost、遗传算法;

2、半监督学习(Semi-supervisedLearning)

        同时使用大量的未标记数据和标记数据,进行模式识别工作;

        代表算法:self-training(自训练算法)、generative models生成模型、SVMs半监督支持向量机、graph-basedmethods图论方法、 multiviewlearing多视角算法等;

3、无监督学习(UnsupervisedLearning)

        无类别标签的学习,只给定样本的输入,自动从中寻找潜在的类别规则;

        代表算法:主成分分析方法PCA等,等距映射方法、局部线性嵌入方法、拉普拉斯特征映射方法、黑塞局部线性嵌入方法、局部切空间排列方法等;

4、判别模型(discriminative model)

        已知输入变量x,通过求解条件概率分布P(y|x)或者直接计算y的值来预测y。

        例如:

  • 线性回归(Linear Regression)
  • 逻辑回归(Logistic Regression)
  • 支持向量机(SVM)
  • 传统神经网络(Traditional Neural Networks)
  • 线性判别分析(Linear Discriminative Analysis)
  • 条件随机场(Conditional Random Field)

5、生成模型(generative model)

        已知输入变量x,通过对观测值和标注数据计算联合概率分布P(x,y)来达到判定估算y的目的。

        例如:

  • 朴素贝叶斯(Naive Bayes)
  • 隐马尔科夫模型(HMM)
  • 贝叶斯网络(Bayesian Networks)
  • 隐含狄利克雷分布(Latent Dirichlet Allocation)

四、算法详解

1、KNN(K近邻算法)

(1)定义

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

(2)算法流程

1)计算已知类别数据集中的点与当前点之间的距离

2)按距离递增次序排序

3)选取与当前点距离最小的k个点

4)统计前k个点所在的类别出现的频率(分类:样本出现最多个数 回归:K个杨样本的平均值)

5)返回前k个点出现频率最高的类别作为当前点的预测分类

 (3)注意点

        ① K值选择

K值的减小就意味着整体模型变得复杂,容易发生过拟合;

K值的增大就意味着整体模型变得简单,容易发生欠拟合;

​ 注:实际应用中,K值一般取一个比较小的数值,例如采用交叉验证来选择最优的K值。

        ② 误差估计

近似误差:对训练集的训练误差,关注训练集,近似误差小可能出现过拟合。
估计误差:对测试集的测试误差,关注测试集,估计误差小说明对未知数据的预测能力好。

(4)K近邻实现 
  • 线性扫描(穷举搜索)

        计算输入实例与每一个训练实例的距离。计算后再查找K近邻。当训练集很大时,计算非常耗时。

  • KD树

        ①一种对k维空间中的实例点进行存储以便对其进行快速检索的树形数据结构

        ②kd树是一种二叉树,表示对k维空间的一个划分,构造kd树相当于不断地用垂直于坐标轴的超平面将K维空间切分,构成一系列的K维超矩形区域。kd树的每个结点对应于一个k维超矩形区域。

        ③利用kd树可以省去对大部分数据点的搜索,从而减少搜索的计算量。

  • 距离计算

        ①欧式距离(Euclidean Distance)

        ②曼哈顿距离(Manhattan Distance)

        ③切比雪夫距离 (Chebyshev Distance)

 

(5)实例
# -*- coding: UTF-8 -*-
import numpy as np
import operator
import collections"""
函数说明:创建数据集Parameters:无
Returns:group - 数据集labels - 分类标签
Modify:2017-07-13
"""def createDataSet():# 四组二维特征group = np.array([[1, 101], [5, 89], [108, 5], [115, 8]])# 四组特征的标签labels = ['爱情片', '爱情片', '动作片', '动作片']return group, labels"""
函数说明:kNN算法,分类器Parameters:inX - 用于分类的数据(测试集)dataSet - 用于训练的数据(训练集)labes - 分类标签k - kNN算法参数,选择距离最小的k个点
Returns:sortedClassCount[0][0] - 分类结果"""def classify0(inx, dataset, labels, k):# 计算距离dist = np.sum((inx - dataset) ** 2, axis=1) ** 0.5# k个最近的标签k_labels = [labels[index] for index in dist.argsort()[0: k]]# 出现次数最多的标签即为最终类别label = collections.Counter(k_labels).most_common(1)[0][0]return labelif __name__ == '__main__':# 创建数据集group, labels = createDataSet()# 测试集test = [101, 20]# kNN分类test_class = classify0(test, group, labels, 3)# 打印分类结果print(test_class)

2、线性回归

(1)定义

        利用回归方程(函数)对一个或多个自变量(特征值)和因变量(目标值)之间关系进行建模的一种分析方式。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • VueRouter的使用
  • 可视化基础的设计四大原则
  • OpenCV图像滤波(5)二维卷积滤波函数filter2D()的使用
  • final finally finalize 区别?
  • 【多线程基础】指令、进程调度、了解计算机是如何进行工作的
  • TDengine Cloud 助力智源未来,引领能源管理革新
  • 服务器CPU架构有几种?分别应用到什么场景?有啥优缺点?
  • eBPF编程指南(一):eBPF初体验
  • 【网络】协议,OSI参考模型,局域网通信,跨网络通信
  • FFmpeg推流
  • 代码随想录算法训练营Day36||Leetcode1049. 最后一块石头的重量 II 、 494. 目标和 、 474.一和零
  • 【libevent多线程服务器】--UDP
  • 设计模式 - 适配器模式
  • PyCharm找不到Python了咋办
  • Pinterest:从 Druid 到 StarRocks,实现 6 倍成本效益比提升
  • IE报vuex requires a Promise polyfill in this browser问题解决
  • Javascript编码规范
  • java中具有继承关系的类及其对象初始化顺序
  • magento 货币换算
  • Node + FFmpeg 实现Canvas动画导出视频
  • npx命令介绍
  • Python - 闭包Closure
  • Solarized Scheme
  • vuex 学习笔记 01
  • vue数据传递--我有特殊的实现技巧
  • 从零开始学习部署
  • 基于Dubbo+ZooKeeper的分布式服务的实现
  • 聊一聊前端的监控
  • 爬虫进阶 -- 神级程序员:让你的爬虫就像人类的用户行为!
  • 排序算法学习笔记
  • 首页查询功能的一次实现过程
  • 移动端解决方案学习记录
  • 阿里云IoT边缘计算助力企业零改造实现远程运维 ...
  • 哈罗单车融资几十亿元,蚂蚁金服与春华资本加持 ...
  • #gStore-weekly | gStore最新版本1.0之三角形计数函数的使用
  • $.ajax中的eval及dataType
  • $nextTick的使用场景介绍
  • ( 用例图)定义了系统的功能需求,它是从系统的外部看系统功能,并不描述系统内部对功能的具体实现
  • (23)Linux的软硬连接
  • (3)(3.5) 遥测无线电区域条例
  • (4)通过调用hadoop的java api实现本地文件上传到hadoop文件系统上
  • (delphi11最新学习资料) Object Pascal 学习笔记---第13章第1节 (全局数据、栈和堆)
  • (阿里云在线播放)基于SpringBoot+Vue前后端分离的在线教育平台项目
  • (实测可用)(3)Git的使用——RT Thread Stdio添加的软件包,github与gitee冲突造成无法上传文件到gitee
  • (一)pytest自动化测试框架之生成测试报告(mac系统)
  • (转)shell中括号的特殊用法 linux if多条件判断
  • (转)创业家杂志:UCWEB天使第一步
  • (总结)Linux下的暴力密码在线破解工具Hydra详解
  • ****Linux下Mysql的安装和配置
  • .NET CORE 2.0发布后没有 VIEWS视图页面文件
  • .net 调用php,php 调用.net com组件 --
  • .net经典笔试题
  • .NET面试题(二)
  • 。。。。。
  • [ CTF ] WriteUp- 2022年第三届“网鼎杯”网络安全大赛(白虎组)