探索五大机器学习技术及其应用

news2024/11/15 8:51:21

没有一种机器学习算法可以解决所有类型的机器学习问题。机器学习任务可能千差万别,算法的选择将取决于数据的大小、维数和稀疏性等因素。目标变量、数据的质量以及特征内部以及特征与目标变量之间存在的相互作用和统计关系。

在本文中,我将提供机器学习的五种最常用算法的快速参考指南。这将介绍算法的内部工作原理以及使每个算法更适合特定任务的注意事项。

这将包括对线性回归、逻辑回归、随机森林、XGBoost 和 K-means 的简要介绍。对于每种算法,我将介绍以下内容:

  1. 基本原理。
  2. 示例代码。
  3. 应该什么时候使用。
  4. 优点和缺点。

文章目录

    • 一、线性回归
      • 1.1 基本原理
      • 1.2 示例代码
      • 1.3 应该什么时候使用
      • 1.4 优缺点
    • 二、逻辑回归
      • 2.1 基本原理
      • 2.2 示例代码
      • 2.3应该什么时候使用
      • 2.4优缺点
    • 三、随机森林
      • 3.1 基本原理
      • 3.2 示例代码
      • 3.3 应该什么时候使用
      • 3.4 优缺点
    • 四、XGBoost
      • 4.1 基本原理
      • 4.2 示例代码
      • 4.3 应该什么时候使用
      • 4.4 优缺点
    • 五、K 均值
      • 5.1 基本原理
      • 5.2 示例代码
      • 5.3 应该什么时候使用
      • 5.4 优缺点
    • 六、总结对比

一、线性回归

1.1 基本原理

线性回归是一种有监督的机器学习算法,用于预测连续的目标变量。对于简单的线性回归,其中有一个自变量(特征)和一个因变量(目标),算法可以用以下等式表示。

y=a+bx

其中y是因变量,X是特征变量,b是直线的斜率,a是截距。

简单线性回归可以可视化为散点图,其中 x 轴包含因变量,y 轴包含自变量。线性回归算法通过数据点绘制一条最佳拟合线,最大限度地减少预测输出和实际输出之间的变化。
在这里插入图片描述

1.2 示例代码

from sklearn.datasets import make_regression
from sklearn.linear_model import LinearRegression
from sklearn.model_selection import train_test_split
from yellowbrick.regressor import PredictionError
X, y = make_regression(
        n_samples=500, n_features=5, noise=50, coef=False
    )
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
model = LinearRegression()
visualizer = PredictionError(model)
visualizer.fit(X_train, y_train)
visualizer.score(X_test, y_test)
visualizer.show()

1.3 应该什么时候使用

  1. 线性回归只能用于解决基于回归的问题。
  2. 因变量和自变量之间必须存在线性关系。
  3. 残差必须服从正态分布。
  4. 特征之间必须没有相关性。
  5. 该算法假设训练数据是随机采样的。
  6. 最适合基于回归的问题,其中数据中的关系既是线性的又是简单的。

1.4 优缺点

优点:

  1. 高度可解释和快速训练。
  2. 在线性可分数据上表现非常好。

缺点:

  1. 对异常值不稳健。
  2. 非常简单,因此它不能很好地模拟现实世界数据中的复杂性。
  3. 该算法也容易过拟合。

二、逻辑回归

2.1 基本原理

逻辑回归本质上是线性回归模型,以适应分类问题。逻辑回归不是拟合直线,而是应用逻辑函数将线性方程的输出压缩在 0 和 1 之间。结果是 S 形曲线而不是穿过数据点的直线,如下图所示。
在这里插入图片描述
选择 0 和 1 之间的阈值来分隔类,通常为 0.5。本质上,我们在 0.5 处绘制一条穿过 S 曲线的水平线。这条线上方的任何数据点都属于 1 类,低于该线的任何数据点都属于 0 类。

2.2 示例代码

import seaborn as sns
import pandas as pd
from sklearn.datasets import make_classification
from sklearn.linear_model import LogisticRegression

X, y = make_classification(n_features=1, 
                           n_informative=1,
                           n_redundant=0,
                           n_classes=2,
                           n_clusters_per_class=1,
                           flip_y=0.2,
                           random_state=0)
df = pd.DataFrame(X, columns=['x'])
df['y'] = y

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

lr = LogisticRegression(C=1e5)

model = lr.fit(X_train, y_train)
y_pred = model.predict(X_test)

sns.regplot(x='x', y='y', data=df, logistic=True, ci=None)

2.3应该什么时候使用

  1. 该算法只能用于解决分类问题。
  2. 特征和目标变量之间必须存在线性关系。
  3. 观测值的数量必须大于特征的数量。
  4. 最适合数据中的关系既是线性又简单的分类问题。

2.4优缺点

优点:

  1. 与线性回归一样,该算法可解释性强且训练速度快。
  2. 它在线性可分数据上表现非常好。

缺点:

  1. 容易过度拟合。
  2. 与线性回归一样,它不能很好地模拟复杂关系。

三、随机森林

3.1 基本原理

随机森林算法构建决策树的“森林” 。森林中的每棵树都会根据给定的一组特征生成预测。一旦生成了所有预测,就会进行多数表决,并且最常预测的类别形成最终预测。

在这里插入图片描述
决策树是一种非常直观的算法。它具有类似流程图的结构,其中包含代表测试的一系列节点。每个测试的结果都会产生分裂,并创建一个或多个叶节点,直到实现最终预测。超参数决定树的生长深度和使用的节点分裂函数。

随机森林算法遵循以下步骤序列:

  1. 训练数据集根据森林中树木的数量随机分成多个样本。树的数量是通过超参数设置的。
  2. 使用其中一个数据子集并行训练决策树。
  3. 评估所有树的输出,并将最常出现的预测作为最终结果。

3.2 示例代码

from sklearn.datasets import make_classification
from sklearn.ensemble import RandomForestClassifier
X, y = make_classification(random_state=0)
X_train, X_test, Y_train, Y_test = train_test_split(X, y, random_state=0)
rf = RandomForestClassifier(n_estimators=100,
                            random_state=0)
rf.fit(X_train, Y_train)

3.3 应该什么时候使用

  1. 该算法可用于解决基于分类和回归的问题。
  2. 它特别适合具有高维度的大型数据集,因为该算法本身就执行特征选择。

3.4 优缺点

优点:

  1. 它可以模拟线性和非线性关系。
  2. 它对异常值不敏感。
  3. 随机森林能够在包含缺失数据的数据集上表现良好。

缺点:

  1. 随机森林可能容易过度拟合,尽管这可以通过修剪在一定程度上减轻。
  2. 尽管可以提取特征重要性以提供一定程度的可解释性,但它不像线性回归和逻辑回归那样可解释。

四、XGBoost

4.1 基本原理

XGBoost 是一种基于梯度提升决策树的算法。它类似于随机森林,因为它构建决策树的集合,但 XGBoost 不是并行训练模型,而是顺序训练模型。每个决策树都从先前模型产生的错误中学习。这种按顺序训练模型的技术称为提升。

XGBoost 中的梯度是指使用弱学习器的特定类型的提升。弱学习器是非常简单的模型,仅比随机机会表现更好。该算法从初始的弱学习器开始。每个后续模型都针对先前决策树产生的错误。这一直持续到无法做出进一步的改进并产生最终的强大学习者模型。

4.2 示例代码

from sklearn.datasets import make_classification
from sklearn.model_selection import train_test_split
from xgboost import XGBClassifier

X, y = make_classification(random_state=0)

X_train, X_test, y_train, y_test = train_test_split(X, y, random_state=0)

model = XGBClassifier()
model.fit(X_train, y_train)

4.3 应该什么时候使用

  1. 它可用于解决基于分类和回归的问题。
  2. XGBoost 通常被认为是用于结构化数据监督学习的最佳和最灵活的算法之一,因此适用于范围广泛的数据集和问题类型。

4.4 优缺点

优点:

  1. XGboost 非常灵活,因为它在小型和大型数据集上都能同样出色地工作。
  2. 与其他复杂算法相比,它具有计算效率,因此可以更快地训练模型。

缺点:

  1. 它不适用于非常稀疏或非结构化的数据。
  2. 它被认为是一个黑盒模型,比其他一些算法更难解释。
  3. 由于模型从其前一个模型的错误中学习的机制,XGBoost 可能对异常值敏感。

五、K 均值

5.1 基本原理

K-means 是最流行的聚类算法之一,它是一种无监督机器学习形式,旨在在训练数据集中找到相似示例的组。

该算法通过首先初始化随机簇质心来工作。然后对于每个数据点,通常使用欧几里德距离或余弦相似度的距离度量将其分配给最近的质心。一旦分配了所有数据点,质心就会移动到已分配数据点的平均值。重复这些步骤,直到质心分配停止改变。

在这里插入图片描述

5.2 示例代码

from sklearn.datasets import make_blobs
from sklearn.cluster import KMeans

X, y_true = make_blobs(n_samples=250, centers=3,
                       cluster_std=0.60, random_state=0)

kmeans = KMeans(n_clusters=3)
kmeans.fit(X)
y_kmeans = kmeans.predict(X)

5.3 应该什么时候使用

  1. K-means 仅适用于无监督聚类。
  2. 对于这些类型的问题,它通常被认为是一种很好的全能算法。

5.4 优缺点

优点:

  1. 这是一个实现起来相对简单的算法。
  2. 它可以用于大型数据集。
  3. 由此产生的簇很容易解释。

缺点:

  1. K-means 对异常值很敏感。
  2. 该算法未找到最佳簇数。这必须在实施之前由其他技术确定。
  3. 聚类结果不一致。如果 K-means 在数据集上多次运行,它每次都会产生不同的结果。

六、总结对比

  1. 线性回归:最适合解决存在线性关系且关系相对简单的数据集的基于回归的问题。
  2. 逻辑回归:最适合解决数据线性可分且数据集维数较低的分类问题。
  3. 随机森林:最适合具有复杂关系的大型高维数据集。
  4. XGBoost:适用于范围广泛的结构化数据集和问题。与随机森林相比,计算效率更高。
  5. K-means:最适合解决无监督聚类问题。

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

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

相关文章

【NPM】npm上传包

必须使用npm镜像,不能使用淘宝镜像 查看当前的镜像 npm config get registry切换镜像为npm (不能使用淘宝镜像) npm config set registry https://registry.npmjs.org在要发布的包文件目录执行 发布为公共包 npm publish --access publi…

【基于准交叉双边滤波:医学图像】

Medical image fusion based on quasi-cross bilateral filtering (基于准交叉双边滤波的医学图像融合) 图像融合技术是利用特定的算法从多幅图像中提取并融合特征,然后将它们组合成一幅图像的方法。然而,目前的图像融合方法大多…

学生管理系统【GUI/Swing+MySQL】(Java课设)

系统类型 Swing窗口类型Mysql数据库存储数据 使用范围 适合作为Java课设!!! 部署环境 jdk1.8Mysql8.0Idea或eclipsejdbc 运行效果 本系统源码地址:​​​​​​​https://download.csdn.net/download/qq_50954361/87700422 …

react-9 函数式写法rsf,配合HOOKS基础钩子函数

函数组件和类组件区别: 1.函数组件中没有this 2.函数组件无需继承 3.函数组件默认没有状态,想要使用组件状态必须通过 HOOK 函数引入 4.函数组件默认没有生命周期函数 5.函数组件的渲染,只需要一次函数调用即可 useState :用…

广联转债上市价格预测

广联转债 基本信息 转债名称:广联转债,评级:A,发行规模:7.0亿元。 正股名称:广联航空,今日收盘价:31.09元,转股价格:32.32元。 当前转股价值 转债面值 / 转股…

软件测试之测试分类

文章目录 按测试对象分界面测试可靠性测试容错性测试文档测试兼容性测试易用性测试安装卸载测试安全测试性能测试内存泄露测试弱网测试 按代码的查看情况黑盒测试白盒测试灰盒测试 按开发阶段单元测试集成测试系统测试回归测试冒烟测试验收测试 测试的大致分类: 下…

【从零开始学Skynet】实战篇《球球大作战》(十四):agent跨服务器版

至此,我们已完成了《球球大作战》的绝大部分功能,只剩下完 善agent ,让它和 scene 服务联动了。 1、多个模块 一般而言,代理服务会承载很多系统,比如邮件、成就等,此处涉及的代码较多,容易混 乱…

<Windows> 《VMware各类问题及解决方法》(持续更新...)

《VMware各类问题》 1 虚拟机无法获取权限2 虚拟机开机无法启动原因2.1 可能原因12.2 可能原因2 1 虚拟机无法获取权限 出现原因: 在虚拟机运行时,一次非正常关机。导致虚拟机出现此错误。此虚拟机似乎正在使用中。 解决方法: 方法一&#xf…

华为电脑如何录屏?2个方法教您快速录制!

案例:如何在华为电脑上进行电脑屏幕录制? 【我是一名老师,我想在电脑上录制一段教学视频,但是我不知道如何录制我的电脑屏幕。有没有哪位朋友知道华为电脑怎么录屏?可以分享一下方法吗?】 华为电脑是目前…

【Vue】学习笔记-Vue生命周期

引出生命周期 生命周期 a.又名生命周期回调函数、生命周期函数、生命周期钩子 b.是什么:vue 在关键时刻帮助我们调用一些特殊名称的函数 c.生命周期函数的名字不可更改,但函数的具体内容是程序员根据需求编写的 d.生命周期函数中的this指向是vm或组件实…

Win10 开机输入密码后登入桌面就黑屏,只有鼠标可以移动, 打不开任务管理器,不用重装系统怎么修复?(已解决)十四个解决参考方案

环境: Win10 专业版21H2 戴尔5590笔记本 Win11PE 系统安装U盘 USB固态硬盘盒 闪迪16G U盘 DiskGenius_Pro_v5.4.3 问题描述: Win10开机输入密码登入桌面后突然黑屏,只有鼠标可以移动, 打不开任务管理器,按住ctrl shift esc鼠标会有蓝色圈转动,但是不会弹出任务管理…

Elasticsearch——文档操作

新增文档 POST /索引库名/_doc/文档id { "字段1": "值1", "字段2": "值2", "字段3": { "子属性1": "值3", "子属性2": "值4" }, // ... } 查询文档 GET /索引库名/_doc/文档id 删除…

Transactional事务失效场景汇总

文章目录 1、前言2、失效场景2.1、Service没有被Spring管理2.2、事务方法被final、static关键字修饰2.3、同一个类中,方法内部调用2.4、方法的访问权限不是public2.5、数据库的存储引擎不支持事务2.6、Transactional 注解配置错误2.7、使用了错误的事务传播机制2.8、…

elasticsearch与mysql数据同步

目录 数据同步一.思路分析1.同步调用2.异步通知3.监听binlog4.选择 二.实现数据同步1.思路2.导入demo3.声明交换机、队列3.1引入依赖3.2 配置文件3.3 声明队列交换机名称3.4 声明队列交换机 4.发送MQ消息4.1 事务配置类4.2 service 代码 5.接收MQ消息 数据同步 elasticsearch中…

数据分析----IQR(Interquartile Range)四分位距的理解与应用及Python实现

【原文链接】数据分析----IQR(Interquartile Range)四分位距的理解与应用及Python实现 一、IQR(Interquartile Range)四分位距的含义 1.1 IQR的官方定义 IQR 是用于标记离群值的另一种稳健方法。用于检测离群值的 IQR&#xff…

解放你的双手:自动化文档整理

目录 引子: 应用场景: 源代码: 源代码说明: 效果如下所示: movefiletofolderbytype.py 引子: 例如,一个人可能会在计算机上存储大量的照片、视频和文档文件,这些文件可能散落在不同的文件夹中&#xf…

1678_计算机架构黄金时代_文章阅读

全部学习汇总: GreyZhang/g_risc_v: Learning notes about RISC V. (github.com) 看了一份几年前的文章,觉得还是挺有收获的,因此做一个简单的整理。 对于架构有很大影响的主要考虑四点:专用硬件的实现、高安全性的要求、开放指令…

原来这些功能才是blender大受欢迎的原因

作为全球最热门的免费开源3D创作套件,好用、易上手是Blender的公认优点。相比许多付费的三维软件来说,Blender在功能上是有过之无不及。除了在建模方面表现出色外,还提供了从模型雕刻、动画、材质、渲染、到音频处理、视频剪辑等一系列制作解…

Nature子刊:HPV改变阴道菌群的机制

​ 研究背景 人类乳头瘤病毒(HPV)是最常见的性传播感染,影响全球3亿人以上。 虽然大多数感染像得了场“感冒”一样被免疫系统清除,或保持在无症状或潜伏状态,但致癌(高危)HPV株(如最明显的HPV16和18型)会导致宫颈鳞状上皮内病变[低级别(LSIL…

MATLAB在逐渐被Python淘汰吗?

Python和MATLAB都是常用的科学计算工具,但是它们有很多不同之处。 Python是一种通用编程语言,而MATLAB主要是用来做数值计算的。Python的基本数据类型和一般的编程语言一样普遍,但是离开了Numpy这个包,就不再有数组或者矩阵的数据…