前端也要懂机器学习(上)

简介: 前端也要懂机器学习(上)

本文撰写背景:


近年来机器学习的热度不断升高,前端领域也在不断布局,从大的研究方向来看,有前端智能化、端智能;从框架这个角度来看,也有很多js版的框架,例如TensorFlow.js、Ml.js、Brain.js等。虽然当前来看其在前端落地的应用还不是很多,但是把握趋势就是把握未来。本文将通过上下两篇来对机器学习的内容进行阐述,这是第一篇,主要介绍一些基础知识和特征工程;后续推出的一批主要利用阐述机器学习中的监督学习算法和非监督学习算法。(注:该文章不涉及大量的数学公式推导,适合前端开发同学入门机器学习的开胃菜)

一、基础



1.1 定义


机器学习是从数据中自动分析获得模型,并利用模型对未知数据进行预测。

640.png

1.2 算法分类


机器学习的前提是数据,根据数据中是否有目标可以划分为:监督学习算法和无监督学习算法。


  • 监督学习算法——输入数据是由输入特征值和目标值所组成。
  • 无监督学习算法——输入数据是由输入特征值和目标值所组成

640.jpg

1.3 如何选择合适算法


机器学习有这么多算法,面对一个问题时应该如何选择合适的算法成为了不可避免的问题,下面就来叙述两条选择合适算法的黄金法则。

  1. 确定使用机器学习算法的目的。
  • 将数据划分为离散的组是唯一需求——聚类算法
  • 除将数据划分为离散的组,还需要估计数据与每个组的相似度——密度估计算法
  • 目标变量为离散型——分类算法
  • 目标变量为连续型——回归算法
  • 若想要预测目标变量的值——监督学习算法
  • 若无目标变量值——无监督学习
  1. 需要分析或收集的数据是什么,了解其数据特征
  • 特征值是离散型变量还是连续型变量
  • 特征值中是否存在缺失的值
  • 何种原因造成缺失值
  • 数据中是否存在异常值
  • 某个特征发生的频率如何
  • ……


1.4 整体流程


不管多么复杂的内容经过前人的总结最会有一套方法论供我们这样的小白使用,下面就来阐述一下机器学习通用的流程。

640.png


  1. 获取数据


获取数据是机器学习的第一步,例如使用公开的数据源、爬虫获取数据源、日志中获取数据、商业数据等。

  1. 数据处理


得到数据后并不一定符合使用需求,所以需要进行数据清洗、数据填充、数据格式转换,达到减小训练的数据量,加快算法的训练时间的目的。

  1. 特征工程


特征工程是使用专业背景知识和技巧处理数据,使得特征能在机器学习算法上发挥更好的作用的过程,直接影响机器学习的效果,主要包含特征提取、特征预处理、特征降维。

  1. 算法训练


将处理之后的数据输入到合适的算法进行训练。

  1. 模型评估


使用测试集来评估模型的性能.模型性能指标有很多,比如在分类模型中常用的有错误率,精准率,召回率,F1指标,ROC等。

  1. 应用


将机器学习算法转换为应用程序执行实际任务,从而检验该算法是否可以在实际工作中正常使用。

二、特征工程



业界流传着一句话 “数据决定了机器学习的上限,而算法只是尽可能逼近这个上限”,这里的数据指的就是经过特征工程处理后的数据。特征工程是使用专业背景知识和技巧处理数据,使得特征能在机器学习算法上发挥更好的作用的过程,可见特征工程在机器学习中的重要地位。对于特征工程主要分为三步:特征抽取、特征预处理、特征降维。

注:特征工程是一个很深的学科,此处不展开阐述。


2.1 特征提取


特征提取指的就是将任意数据(如文本或图像)转换为可用于机器学习的数字特征,常用的主要包含:字典特征提取、文本特征提取、图像特征提取。

2.2 特征预处理


通过特征提取,能得到未经处理的特征,该特征具有以下问题:

  1. 量纲不同:特征可能具有量纲,导致其特征的规格不一样,容易影响(支配)目标结果,使得一些算法无法学习到其它的特征,需要进行无量纲化处理。
  2. 信息冗余:对于某些定量特征,其包含的有效信息为区间划分,需要进行二值化处理。
  3. 定性特征不能直接使用:某些机器学习算法和模型只接受定量特征的输入,则需要将定性特征转换为定量特征,可通过哑编码实现。


2.2.1 无量纲化


无量纲化使不同规格的数据转换到同一规则,用方法有归一化和标准化

  1. 归一化
  • 定义
    对原始数据进行线性变换,使得结果映射到[0,1]之间。
  • 计算公式


640.png

  • 特点
    最大最小值容易受到异常点影响,稳定性较差。


  1. 标准化


  • 定义
    将原始数据进行变换到均值为0、标准差为1的范围内
  • 计算公式

640.png


  • 特点
    较少的异常点对结果影响不大,稳定性较好。


2.2.2 定量特征二值化


对于定量特征可进行二值化,通过选取一个合适的阈值,大于某阈值的为1,小余等于某阈值的为0。


640.png


2.2.3 定性特征哑编码

大部分算法对于定性特征无法训练模型,利用哑编码(one-hot)可以将定性特征处理为定量特征用于模型训练,其基本思想是:将离散特征的每一种值看成一种状态,若该特征有N个值,则存在N状态,例如女孩子的头发按照辫子的多少可以划分为:无辫子、一个辫子、两个辫子、多个辫子,则该特征有4种状态,利用哑编码可以表示为:

  1. 无辫子 ====》[1, 0, 0, 0]
  2. 一个辫子 ====》[0, 1, 0, 0]
  3. 两个辫子 ====》[0, 0, 1, 0]
  4. 多个辫子 ====》[0, 0, 0, 1]


2.3 特征降维


在机器学习中对维度较高的数据进行处理时会极大消耗系统资源,甚至产生维度灾难。在某些限定条件下,通过降维的方式可降低随机变量的个数,用一个低维度向量来表示原始高维度的特征。常用的降维的方式有:特征选择、PCA、LDA等。

2.3.1 特征选择


数据预处理完毕之后需要选择有意义的特征进行训练,特征选择从以下两方面考虑:

  1. 特征是否发散:若某特征不发散(例如方差接近为0),则认为该特征无差异。
  2. 特征与目标的相关性:优先选择与目标相关性较高的特征。

常用的特征选择方式有:Filter(过滤法)、Wrapper(包装法)、Embedded(集成法)。

2.3.1.1 Filter(过滤法)


先进行特征选择,然后去训练学习器,其特征选择的过程与学习器无关。其主要思想是给每一维的特征赋予权重,权重代表该特征的重要性,然后设定阈值或者待选择阈值的个数选择特征。常用方法有方差选择法(低方差特征过滤)、相关系数法等。

一、低方差特征过滤


方差指的是各变量值与其均值离差平方的平均数,是测算数值型数据离散程度的重要方法,方差越大则表征数据的离散程度越大,反之越小。对于数据中的特征值,方差小则表示特征大多样本的值比较相近;方差大则表示特征很多样本的值都有差别。低方差特征过滤正是基于该思想,通过设定方差阈值来去掉小于该阈值的特征。方差计算公式如下:

640.png

二、相关系数法


皮尔逊相关系数(r)定义为两个变量之间的协方差和标准差的商,是反映变量之间相关关系密切程度的统计指标,其值r范围为[-1, 1],含义为:


  • 当r > 0时表示两变量正相关
  • r < 0时,两变量为负相关
  • 当|r|=1时,表示两变量为完全相关
  • 当r=0时,表示两变量间无相关关系
  • 当0<|r|<1时,表示两变量存在一定程度的相关。且|r|越接近1,两变量间线性关系越密切;|r|越接近于0,表示两变量的线性相关越弱


640.png



2.3.1.2 Wrapper(包装法)


把要使用的分类器作为特征选择的评价函数,对于特定的分类器选择最优的特征子集。其主要思想是将子集的选择看作是一个搜索寻优问题,生成不同的组合,对组合进行评价,再与其它的组合进行比较。常用方法有递归特征消除法。

  • 递归特征消除的主要思想是反复的构建模型(如SVM或者回归模型)然后选出最好的(或者最差的)的特征(可以根据系数来选),把选出来的特征选择出来,然后在剩余的特征上重复这个过程,直到所有特征都遍历了。这个过程中特征被消除的次序就是特征的排序。因此,这是一种寻找最优特征子集的贪心算法。


2.3.1.3 Embedded(集成法)


将特征选择嵌入到模型训练当中。其主要思想是通过使用某些机器学习的算法和模型进行训练,得到各个特征的权值系数,根据系数从大到小选择特征。常用方法有:基于惩罚项的特征选择法(L1、L2)、决策树的特征选择法(信息熵、信息增益)。

注:该方法与算法强相关,所以在算法实现的时候进行阐述。


2.3.2 PCA(主成分分析法)


主成分分析(Principal components analysis,PCA)是一种分析、简化数据集的技术。主成分分析经常用于减少数据集的维数,同时保持数据集中的对方差贡献最大的特征(旨在找到数据中的主成分,并利用这些主成分表征原始数据,从而达到降维的目的)。这是通过保留低阶主成分,忽略高阶主成分做到的。

一、 优缺点


  1. 优点:
  • 降低数据的复杂性,识别最重要的多个特征
  • 仅需方差衡量信息量,不受数据集以外的因素影响
  • 各主成分之间正交,可消除原始数据成分间的相互影响的因素
  • 计算方法简单,主要运算式特征值分解,易于实现
  1. 缺点:
  • 可能损失有用信息(由于没有考虑数据标签,容易将不同类别数据完全混合在一起,很难区分)


二适用数据类型——数值型数据


2.3.3 LDA(线性判别分析法)


LDA是一种监督学习的降维技术,它的数据集的每个样本是有类别输出的。PCA与此不同,PCA是不考虑样本类别输出的无监督降维技术。LDA的思想是“最大化类间距离和最小化类内距离”(将数据在低维度上进行投影,投影后希望每一种类别数据的投影点尽可能的接近,而不同类别的数据的类别中心之间的距离尽可能的大)

  1. 优点:


  • 在降维过程中可以使用类别的先验知识经验
  • LDA在样本分类信息依赖均值而不是方差的时候,比PCA之类的算法较优
  1. 缺点:


  • LDA不适合对非高斯分布(非正态分布)样本进行降维
  • LDA降维后可降为[1, 2,……,k-1]维,其中k为类别数
  • LDA在样本分类信息依赖方差而不是均值的时候,降维效果不好
  • LDA可能过度拟合数据
相关文章
|
5月前
|
机器学习/深度学习 数据采集 数据可视化
基于爬虫和机器学习的招聘数据分析与可视化系统,python django框架,前端bootstrap,机器学习有八种带有可视化大屏和后台
本文介绍了一个基于Python Django框架和Bootstrap前端技术,集成了机器学习算法和数据可视化的招聘数据分析与可视化系统,该系统通过爬虫技术获取职位信息,并使用多种机器学习模型进行薪资预测、职位匹配和趋势分析,提供了一个直观的可视化大屏和后台管理系统,以优化招聘策略并提升决策质量。
281 4
|
3月前
|
机器学习/深度学习 自然语言处理 前端开发
前端大模型入门:Transformer.js 和 Xenova-引领浏览器端的机器学习变革
除了调用API接口使用Transformer技术,你是否想过在浏览器中运行大模型?Xenova团队推出的Transformer.js,基于JavaScript,让开发者能在浏览器中本地加载和执行预训练模型,无需依赖服务器。该库利用WebAssembly和WebGPU技术,大幅提升性能,尤其适合隐私保护、离线应用和低延迟交互场景。无论是NLP任务还是实时文本生成,Transformer.js都提供了强大支持,成为构建浏览器AI应用的核心工具。
739 1
|
5月前
|
API UED 开发者
如何在Uno Platform中轻松实现流畅动画效果——从基础到优化,全方位打造用户友好的动态交互体验!
【8月更文挑战第31天】在开发跨平台应用时,确保用户界面流畅且具吸引力至关重要。Uno Platform 作为多端统一的开发框架,不仅支持跨系统应用开发,还能通过优化实现流畅动画,增强用户体验。本文探讨了Uno Platform中实现流畅动画的多个方面,包括动画基础、性能优化、实践技巧及问题排查,帮助开发者掌握具体优化策略,提升应用质量与用户满意度。通过合理利用故事板、减少布局复杂性、使用硬件加速等技术,结合异步方法与预设缓存技巧,开发者能够创建美观且流畅的动画效果。
100 0
|
8月前
|
机器学习/深度学习 前端开发 算法
使用机器学习优化前端用户体验
在当今高度竞争的互联网市场中,用户体验是至关重要的。本文将探讨如何利用机器学习技术来优化前端用户体验,从而提高用户满意度和留存率。我们将介绍如何利用机器学习算法分析用户行为数据,优化网站性能和内容推荐,以及如何实时调整界面设计和交互方式,从而实现个性化、智能化的用户体验。
|
8月前
|
机器学习/深度学习 前端开发 算法
利用机器学习优化Web前端性能的探索与实践
本文将介绍如何利用机器学习技术来优化Web前端性能,探讨机器学习在前端开发中的应用,以及通过实际案例展示机器学习算法对前端性能优化的效果。通过结合前端技术和机器学习,提升Web应用的用户体验和性能表现。
|
机器学习/深度学习 存储 文字识别
前端也要懂机器学习(下)
前端也要懂机器学习(下)
前端也要懂机器学习(下)
|
2月前
|
机器学习/深度学习 算法 数据挖掘
K-means聚类算法是机器学习中常用的一种聚类方法,通过将数据集划分为K个簇来简化数据结构
K-means聚类算法是机器学习中常用的一种聚类方法,通过将数据集划分为K个簇来简化数据结构。本文介绍了K-means算法的基本原理,包括初始化、数据点分配与簇中心更新等步骤,以及如何在Python中实现该算法,最后讨论了其优缺点及应用场景。
160 4
|
17天前
|
机器学习/深度学习 人工智能 算法
机器学习算法的优化与改进:提升模型性能的策略与方法
机器学习算法的优化与改进:提升模型性能的策略与方法
120 13
机器学习算法的优化与改进:提升模型性能的策略与方法
|
7天前
|
机器学习/深度学习 算法 网络安全
CCS 2024:如何严格衡量机器学习算法的隐私泄露? ETH有了新发现
在2024年CCS会议上,苏黎世联邦理工学院的研究人员提出,当前对机器学习隐私保护措施的评估可能存在严重误导。研究通过LiRA攻击评估了五种经验性隐私保护措施(HAMP、RelaxLoss、SELENA、DFKD和SSL),发现现有方法忽视最脆弱数据点、使用较弱攻击且未与实际差分隐私基线比较。结果表明这些措施在更强攻击下表现不佳,而强大的差分隐私基线则提供了更好的隐私-效用权衡。
39 14
|
1月前
|
算法
PAI下面的gbdt、xgboost、ps-smart 算法如何优化?
设置gbdt 、xgboost等算法的样本和特征的采样率
57 2

热门文章

最新文章