《构建实时机器学习系统》一2.3 实时线性分类器介绍

简介: 本节书摘来自华章出版社《构建实时机器学习系统》一 书中的第2章,第2.3节,作者:彭河森 汪涵,更多章节内容可以访问云栖社区“华章计算机”公众号查看。

2.3 实时线性分类器介绍

2.3.1 广义线性模型的定义

(广义)线性模型是机器学习发展几十年来理论和工具上最为完备的模型:不管是分类还是预测,线性模型都可以进行实时更新和预测;线性模型的解释性非常优秀,每个变量的回归系数都可以用于解释模型;最后,我们可以通过增减变量,修改特定的回归系数对模型进行人为加工。
继续前文的符号定义,假设回归因变量为 Y ,自变量为 p 维向量 X。在线性模型中,我们企图获得 p 维参数向量,让我们可以通过 X 个个元素的现行组合得到Y 。它们的关系可以通过下面的函数来表示:
screenshot

其中,F ()为因变量 Y 的累计概率分布,E()为数学期望的计算。我们可以从以下两个部分来解读这个模型。
(1)线性输入
η=XTb,每个自变量 Xi对模型输出的贡献都是线性的,其贡献大小都由对应的 i 来决定。当bi= 0 时,自变量 Xi 不会影响最后的预测。这些线性输入的总和会直接影响最后因变量的取值。
(2)可预计的输出
给定η时,因变量的取值由连接函数 f 和 Y 的分布 F 来决定。我们常用的 f 和 e 有以下三种情况。
当 f(η) =η,且 F () 为正态分布的累计概率分布时,模型等于对正态分布的连续变量进行线性预测。
当 f(η) = 1/(1 + exp(η)),且 F() 为二项分布累计概率分布的时候,模型等于逻辑回归模型,可用于对男女、好恶等类别进行分类预测。
当 f(η) = exp(η),且 F ()为泊松分布累计概率分布的时候,模型等于泊松模型,可用于对订票人数、车辆通过数量等数据进行预测。
综上所述,众多数据模型都是可以通过线性模型的特殊情况进行建模预测的。

2.3.2 训练线性模型

给定已知的样本 {(Xi, Yi)}ni=1,假设现在需要通过模型训练得到线性模型参数b,那么我们往往会定义目标函数 L,通过随机梯度下降的方法求得b,使得 L 尽量小:
screenshot

其中,λ1和λ2是预先设置好的非负参数,| · |1 为计算 L1 的范数,| · |2 为计算 L2 的范数。
上面的目标函数可以分为如下两部分来理解。
预测误差:目标函数L第一项预测误差,我们训练一个模型当然是希望其得到的误差应尽量小。
惩罚函数 (penalty function):目标函数L中第二、三项的存在是为了防止所得模型的过度拟合,加入L1惩罚函数还可以进行变量优先选择。
这里的参数λ1 和 λ2都是实现选择的参数,可以通过多次比较不同的模型来获取最有效的组合。
现在对线性模型的拟合工作已经在主流机器学习软件工具中完全自动化,在Scikit-learn中,对线性回归模型的拟合主要采用 sklearn.linear_model.SGDRegressor,对于分类问题,主要采用 sklearn.linear_model.SGDClaffier。

2.3.3 冷启动问题

机器学习应用中,其实收集数据才是最昂贵的一部分。若没有数据,那么一切模型都将是空中楼阁。对于新企业或新项目,没有数据进行模型训练,那么怎么样才能有最初始的模型呢?没有数据就有没模型,但是如果没有模型,往往也会难以收集到数据。怎么样才能解决这个鸡生蛋、蛋生鸡的问题呢?这个问题可能会因为不同的组织而有不同的答案,这里主要总结如下两个方案。

  1. 借用其他相关数据

如果无法获得当前组织的机器学习数据进行建模,那么其中一个办法是从其他来源获取类似的数据,建立暂时能用的模型。等到产品成熟了,收集到足够多的数据以后再开发自身专有的模型。
例如,某初创业公司需要对小说影评的正负评价进行分类。但苦于暂时没有现成的数据,因此借用了相关网站,如豆瓣、知乎等帖子的内容,作为训练数据;又因为没有评价正负标签,该公司将豆瓣评分、知乎投票数量进行转化,获得了模型的正负标签。
2.人工参与
在遇到建模冷启动问题的时候,该模型的使用人数往往并不高,如果对延迟的要求不高,完全可以通过人工标记的方法来解决。
例如,国内某家已经上市的门户视频网站,成立多年以来,分类、标记、推荐等业务都是通过人工完成的,且取得了尚佳的结果。如今该网站上市之后拥有了雄厚的资金实力,聘请了顶尖的机器学习专家进行视频的标签标记和推荐。此时通过多年的努力该网站已经积累了大量的标签数据,建模的效果也相当好。
另外一方面,处理冷启动问题的时候,我们也可以将人工意见写入模型之中,使其自动化运行。例如对于股价走势预测模型,我们可以通过人工经验,对历史走势、成交量等因子进行人工打分,将人工打分的结果放入现行模型中,进行前期应用。
当然,所有人工参与的方式都离不开严格的监督流程。本书的第9章会介绍通过 Elasticsearch 对数据进行可视化分析和质量监控的方法。

相关文章
|
6天前
|
机器学习/深度学习 数据采集
机器学习入门——使用Scikit-Learn构建分类器
机器学习入门——使用Scikit-Learn构建分类器
|
17天前
|
机器学习/深度学习 自然语言处理 Linux
Linux 中的机器学习:Whisper——自动语音识别系统
本文介绍了先进的自动语音识别系统 Whisper 在 Linux 环境中的应用。Whisper 基于深度学习和神经网络技术,支持多语言识别,具有高准确性和实时处理能力。文章详细讲解了在 Linux 中安装、配置和使用 Whisper 的步骤,以及其在语音助手、语音识别软件等领域的应用场景。
47 5
|
18天前
|
机器学习/深度学习 数据采集 搜索推荐
利用Python和机器学习构建电影推荐系统
利用Python和机器学习构建电影推荐系统
33 1
|
2月前
|
机器学习/深度学习 API 计算机视觉
基于Python_opencv人脸录入、识别系统(应用dlib机器学习库)(下)
基于Python_opencv人脸录入、识别系统(应用dlib机器学习库)(下)
27 2
|
2月前
|
机器学习/深度学习 存储 算法
基于Python_opencv人脸录入、识别系统(应用dlib机器学习库)(上)
基于Python_opencv人脸录入、识别系统(应用dlib机器学习库)(上)
33 1
|
2月前
|
机器学习/深度学习 算法 数据挖掘
机器学习入门(二):如何构建机器学习模型,机器学习的三要素,欠拟合,过拟合
机器学习入门(二):如何构建机器学习模型,机器学习的三要素,欠拟合,过拟合
|
3月前
|
机器学习/深度学习 存储 人工智能
文本情感识别分析系统Python+SVM分类算法+机器学习人工智能+计算机毕业设计
使用Python作为开发语言,基于文本数据集(一个积极的xls文本格式和一个消极的xls文本格式文件),使用Word2vec对文本进行处理。通过支持向量机SVM算法训练情绪分类模型。实现对文本消极情感和文本积极情感的识别。并基于Django框架开发网页平台实现对用户的可视化操作和数据存储。
50 0
文本情感识别分析系统Python+SVM分类算法+机器学习人工智能+计算机毕业设计
|
2月前
|
机器学习/深度学习 算法 数据可视化
【机器学习】决策树------迅速了解其基本思想,Sklearn的决策树API及构建决策树的步骤!!!
【机器学习】决策树------迅速了解其基本思想,Sklearn的决策树API及构建决策树的步骤!!!
|
3月前
|
机器学习/深度学习 数据采集 人工智能
使用Python实现简单的机器学习分类器
【8月更文挑战第37天】本文将引导读者了解如何利用Python编程语言构建一个简单的机器学习分类器。我们将从基础概念出发,通过代码示例逐步深入,探索数据预处理、模型选择、训练和评估过程。文章旨在为初学者提供一条清晰的学习路径,帮助他们理解并实现基本的机器学习任务。
|
4月前
|
机器学习/深度学习 人工智能 开发者
使用Python实现简单的机器学习分类器
【8月更文挑战第31天】在这篇文章中,我们将探索如何使用Python来创建一个简单的机器学习分类器。通过使用scikit-learn库,我们可以快速构建和训练模型,而无需深入了解复杂的数学原理。我们将从数据准备开始,逐步介绍如何选择合适的模型、训练模型以及评估模型的性能。最后,我们将展示如何将训练好的模型应用于新数据的预测。无论你是机器学习的初学者还是有一定经验的开发者,这篇文章都将为你提供一个实用的指南,帮助你入门并理解基本的机器学习概念。

热门文章

最新文章

下一篇
无影云桌面