机器学习算法需要注意的一些问题总结(特别有用!!!)fen斗

对于机器学习的实际运用,光停留在知道了解的层面还不够,我们需要对实际中容易遇到的一些问题进行深入的挖掘理解。我打算将一些琐碎的知识点做一个整理。

这个问题是经常遇到的。就拿有监督的学习的二分类问题来说吧,我们需要正例和负例样本的标注。如果我们拿到的训练数据正例很少负例很多,那么直接拿来做分类肯定是不行的。通常需要做以下方案处理:

通过调整数据集中正负样本的比例来解决数据不平衡,方法有:

正样本本来就少,怎么增加呢?方法是直接复制已有的正样本丢进训练集。这样可以稍微缓解正样本缺失的困境,但是容易带来一个问题,就是过拟合的潜在危险。因为这样粗暴的引入正样本并没有增加数据集的样本多样性。如何设计复制哪些正样本有一些技巧,比如选择有特定意义的代表性的那些。

首先这是一个通用的合理的方法,但是负样本的减少必然导致数据多样性的损失。有一种方法可以缓解这个问题,那就是类似于随机森林方法,每次正样本数量不变,随机选择等量的不同的负样本进行模型训练,反复几次,训练多个模型,最后所有的模型投票决定最终的分类结果。

可以重新修改模型训练的损失函数,使得错分正样本的损失变大,错分负样本的损失变小。这样训练出来的模型就会对正负样本有一个合理的判断。

说到异常值,首先得说一下数据量的问题。异常值不是缺失值,更不是错误值,同样是真实情况的表现,之所以觉得一个数据异常,是因为我们能够用到的数据量不够大,无法准确地代表整个此类数据的分布。如果把异常值放在海量数据的大背景下,那么这个异常值也就不那么异常了。

下载摘自某大牛博客一段话:

异常值并非错误值,而同样是真实情况的表现,我们之所以认为异常,只是因为我们的数据量不足够大而已。但是从实际的工业界来看,考虑到实际的计算能力以及效果,大多数公司都会对大数据做“去噪”,那么在去噪的过程中去除的不仅仅是噪音,也包括“异常点”,而这些“异常点”,恰恰把大数据的广覆盖度给降低了,于是利用大数据反而比小数据更容易产生趋同的现象。尤其对于推荐系统来说,这些“异常点”的观察其实才是“个性化”的极致。

既然说到大数据,同样是这位大牛的一段话:

说得学术一些,我们不妨认为大数据是频率学派对于贝叶斯学派一次强有力的逆袭。那么既然说到这个份上了,我们不妨思考一下,我们是不是有希望在回归贝叶斯学派,利用先验信息+小数据完成对大数据的反击呢?

某些机器学习算法对异常值很敏感,比如:K-means聚类,AdaBoost。使用此类算法必须处理异常值。某些算法拥有对异常值不敏感的特性,比如:KNN,随机森林。

如何处理异常值?最简单的方法就是直接丢掉。其它方法我后面会继续研究。

过拟合可要命了,好不容易训练一个模型,来一些测试数据,分类结果非常的差。过拟合产生的原因:

几乎所有的机器学习算法都会容易遇到过拟合的问题。所以先说一些解决过拟合的通用办法。当然,首先得保证训练数据不要太少。

正则化就是在模型的优化目标上再加入一个惩罚因子。这样模型的优化策略就从经验风险最小化变为结构风险最小化。

在数据量足够的情况下,可以采用交叉验证的方式避免过拟合,甚至可以在正则化之后再做一次交叉验证。

有句话必须得放在前面:数据和特征决定了机器学习的上限,而模型和算法只是逼近这个上限而已。由此可见,特征工程尤其是特征选择在机器学习中占有相当重要的地位。

首先拽一段英文定义:

Featureengineeringistheprocessoftransformingrawdataintofeaturesthatbetterrepresenttheunderlyingproblemtothepredictivemodels,resultinginimprovedmodelaccuracyonunseendata.

inaword,featureengineeringismanuallydesigningwhattheinputx’sshouldbe.

主要是出于如下考虑:1.特征维数越高,模型越容易过拟合,此时更复杂的模型就不好用。2.相互独立的特征维数越高,在模型不变的情况下,在测试集上达到相同的效果表现所需要的训练样本的数目就越大。3.特征数量增加带来的训练、测试以及存储的开销都会增大。4.在某些模型中,例如基于距离计算的模型KMeans,KNN等模型,在进行距离计算时,维度过高会影响精度和性能。5.可视化分析的需要。在低维的情况下,例如二维,三维,我们可以把数据绘制出来,可视化地看到数据。当维度增高时,就难以绘制出来了。

在机器学习中,有一个非常经典的维度灾难的概念。用来描述当空间维度增加时,分析和组织高维空间,因体积指数增加而遇到各种问题场景。例如,100个平均分布的点能把一个单位区间以每个点距离不超过0.01采样;而当维度增加到10后,如果以相邻点距离不超过0.01小方格采样单位超一单位超正方体,则需要10^20个采样点。

正是由于高维特征有如上描述的各种各样的问题,所以我们需要进行特征降维和特征选择等工作。

特征降维常用的算法有PCA,LDA等。

PCA算法通过协方差矩阵的特征值分解能够得到数据的主成分,以二维特征为例,两个特征之间可能存在线性关系(例如运动的时速和秒速度),这样就造成了第二维信息是冗余的。PCA的目标是发现这种特征之间的线性关系,并去除。

LDA算法考虑label,降维后的数据点尽可能地容易被区分。

然后,是不是特征越多越好?其实也不是。盗一张图过来如下:可以发现,刚开始模型的准确率随着特征数量的增加而增加,当增加到一定程度便趋于稳定了。如果还要强行加入如此多的特征,反而画蛇添足,容易过拟合。然后,如果出现特征过多出现过拟合的情况,就要适当地进行参数缩减。对于逻辑斯蒂回归,某一维特征对应的参数如果接近为零,说明这个特征影响不大,就可以去掉。因此,我们的特征选择过程一般如下:

这个过程的进行要同时观察模型准确率的变化。

具体其它细节,以后补充。

模型学习的准确度与数据样本大小有关,那么如何展示更多的样本与更好的准确度之间的关系呢?

我们可以通过不断增加训练数据,直到模型准确度趋于稳定。这个过程能够很好让你了解,你的系统对样本大小及相应调整有多敏感。

所以,训练样本首先不能太少,太少的数据不能代表数据的整体分布情况,而且容易过拟合。数据当然也不是越多越好,数据多到一定程度效果就不明显了。不过,这里假设数据是均匀分布增加的。

然而这里有另一种声音:

算法使用的数据越多,它的精度会更加准确,所以如果可能要尽量避免抽样。机器学习理论在预测误差上有着非常直观的描述。简而言之,在机器学习模型和最优预测(在理论上达到最佳可能的误差)之间的预测误差的差距可以被分解为三个部分:

由于没有找到正确函数形式的模型的误差由于没有找到最佳参数的模型的误差由于没用使用足够数据的模型的误差如果训练集有限,它可能无法支撑解决这个问题所需的模型复杂性。统计学的基本规律告诉我们,如果我们可以的话,应该利用所有的数据而不是抽样。

其实当然数据越多越好,但是更多的数据意味着获取的难度以及处理的复杂度等。并且当数据多到一定程度后区别就不那么明显了。所以我们还是要根据自己情况科学地使用一定数量的数据。

很多像我一样的机器学习新手在遇到问题的时候,都会对用什么样的模型解决问题感到困惑。除了基本的有监督无监督,分类还是回归,二分类多分类等等基本的选择标准,貌似其他的都差不多,通常的做法就是每个模型都试一试,看看哪个效果好就用哪个。。显然这么做的不够的。

其实,选择什么算法最好,关键不在于算法,而在于具体要解决的问题,以及问题所具有的数据和特征。下面结合自己的经验和收集的资料,给出几点选择算法的tips。

就像古代把人分为三六九等,特征也有层次之分。我们暂且粗略地分为高级别特征和低级别特征,有的时候高级别的特征又叫组合特征。总体上,低级别特征比较有针对性,单个特征覆盖面小(含有这个特征的数据不多),特征数量(维度)很大。高级别特征比较泛化,单个特征覆盖面大(含有这个特征的数据很多),特征数量(维度)不大。下图展示了什么是高级低级特征:

特征的低级和高级带来模型选择上的线性模型和非线性模型的考量:

非线性模型的特征1)可以主要使用HighLevel特征,因为计算复杂度大,所以特征维度不宜太高;2)通过HighLevel非线性映射可以比较好地拟合目标。

线性模型的特征1)特征体系要尽可能全面,HighLevel和LowLevel都要有;2)可以将HighLevel转换LowLevel,以提升模型的拟合能力。

那平常我们所纠结的逻辑斯蒂回归和决策树用哪个好为例,决策树是一种非线性模型,因此如果是高级别特征的话我们就选择决策树;逻辑斯蒂回归是一种线性模型,因此如果是低级别特征的话我们就选择逻辑斯蒂回归。

线性模型对非线性关系缺乏准确刻画,高级特征刚好可以加入模型的非线性表达,增强模型的表达能力。另外,使用低级特征可以认为是对全局进行建模,而高级特征更加精细,是个性化建模,这就是为什么

当我们有一些高级特征的时候,就把高级特征和低级特征共同加入到逻辑回归中进行训练,这样训练出来的模型兼顾了全局化与个性化,会使模型预测的准确率有所提高。具体到逻辑回归和决策树的使用上,我们可以充分利用两者之间的优缺点进行互补。主要思路是利用决策树对局部数据结构优越的把握能力增加逻辑回归的效力。在具体做法上有几种,一种是从决策树分析中找出数据局部结构,作为在逻辑回归中构建依变量(interaction)的依据。另一种是在需要对预测因子进行离散化处理时,利用决策树分析决定最佳切分点。还有一种是把决策树分类的最终结果作为预测变量,和其他协变量一起代入回归模型,又称为“嫁接式模型”。从理论上讲,嫁接模型综合了决策树和逻辑回归的优点。最终节点包含了数据中重要的局部结构,而协变量可以拾补被决策树遗漏的数据整体结构。

有时候我们要解决的问题可以用单个复杂的模型解决,也可以用多个简单的模型分别解决各个子问题,再基于各个单模型进行融合解决总问题。融合的方式可以是简单的线性融合,也可以是更加复杂的融合。

不同模型有不同优缺点,具体如下:

选择哪种模式?1)问题可预估的难度,难度大,则考虑用多模型;2)问题本身的重要性,问题很重要,则考虑用多模型;3)多个模型的关系是否明确,关系明确,则可以用多模型。

最近模型组合的算法越来越流行,当单个分类器的性能不足以解决实际问题的时候,可以考虑使用模型组合的方法,也就是bagging和boosting的方法。

关于这部分,只知道GBDT在工业界很火,当有了一定了解和实战经验后,再来补充。

您的资助是我最大的动力!金额随意,欢迎来赏!

因为,我的写作热情也离不开您的肯定支持,感谢您的阅读,我是【未来可期】!

THE END
1.究竟什么是算法,怎么什么都要学算法?算法有什么用为什么都啃算法如何用简单的英语解决它? 首先要做的是阅读问题并确保您了解说明要求您做什么。 接下来,确定问题中给定的所有变量的可能值,并尝试为每个变量提出一个逻辑解决方案。 最后,试着写出一个算法,从文字而不是代码开始,写出每个程序员都知道的被称为“伪代码”的东西 https://blog.csdn.net/2403_88996764/article/details/143954757
2.学习编程为什么要学习算法?Worktile社区第三,学习算法可以拓宽编程领域的应用。算法是计算机科学的核心,它被广泛应用在各种领域,如图像处理、人工智能、数据分析等。学习算法可以帮助程序员理解各种应用领域中的原理和技术,从而使他们能够更好地应用编程技术解决这些领域的具体问题。对于那些希望在特定领域有所突破的程序员来说,学习算法是必不可少的。 https://worktile.com/kb/ask/2300337.html
3.学习算法的意义算法是计算机科学领域最重要的基石之一,但却受到了国内一些程序员的冷落。许多学生看到一些公司在招聘时要求的编程语言五花八门就产生了一种误解,认为学计算机就是学各种编程语言,认为学习最新的语言、技术、标准https://m.edu.iask.sina.com.cn/jy/ktioFWROvR.html
4.机器学习SDG算法里面momentum是什么有什么用在机器学习中,Momentum是一种常用于优化算法的技术,它在梯度下降(Gradient Descent)的基础上进行了改进,主要目的是加速算法的收敛速度,并且可以更好地处理噪声数据。 Momentum的原理如下: 在标准的梯度下降算法中,每一步更新都只考虑当前时刻的梯度信息。而Momentum算法会在当前梯度和之前梯度之间建立一个动量,这个动量会https://www.jianshu.com/p/4440f744f379
5.监督学习有哪些常见算法?都是如何应用的展示和告知图像的过程可以被认为是标记数据,机器学习模型训练过程中,会被告知哪些数据属于哪个类别。 监督学习有什么用?监督学习可用于回归和分类问题。分类模型允许算法确定给定数据属于哪个组别。示例可能包括 True/False、Dog/Cat 等。 由于回归模型能够根据历史数据预测将来的数值,因此它会被用于预测员工的工资或房地产https://www.51cto.com/article/712484.html
6.鸡兔同笼教案集合10篇(五)现在我们就用刚才学到的这些方法来解决《孙子算经》中的原题,你会用列表法和画图的方法解决吗? 【课堂作业】 完成教材第105页“做一做”。运用列表法和画图法解决这两道题,然后交流订正。 【课堂小结】 通过这节课的学习,你有什么收获?小结:鸡兔同笼问题可以用猜测列表法、假设法等多种方法解决,但数字https://www.unjs.com/fanwenwang/jiaoan/20230425163257_6948734.html
7.关于《长方体和正方体的表面积》教学设计(精选11篇)二、探究学习 1、探索长方体表面积的计算方法 出示例1:制作下面这样一个长方体的纸盒,至少需要用多少平方厘米的纸板?师:请大家想一想,这道题实际上是求什么呢?你打算怎样解决这个问题呢? 4人小组合作完成这个长方体表面积的计算。 汇报交流计算情况,教师总结学生的不同算法,点拨得出长方体的表面积的计算方法。https://mip.ruiwen.com/jiaoxuesheji/2707146.html
8.Contents/premium.mdatmaster·Newslab2020/Contents·GitHub2023/1/31 什么是“情绪劳动”? 为什么记者也有情绪劳动? 中国一线记者的情绪劳动如何? 记者如何避免过多的情绪消耗? 647 AI写作工具如何改变大学教育 2023/1/27 AI写作工具如何改变大学教育; 近五分之一学生用AI作弊的期末作业; 如何应对学生使用AI工具抄袭和作弊; https://github.com/Newslab2020/Contents/blob/master/premium.md
9.学习SEO优化最常见的100个SEO问答黑帽seo就是作弊的意思,黑帽seo手法不符合主流搜索引擎发行方针规定,黑帽SEO获利主要的特点就是短平快,为了短期内的利益而采用的作弊方法,同时随时因为搜索引擎算法的改变而面临惩罚(具体可查看马海祥博客《什么是黑帽SEO》的相关介绍)。 4、新人如何去学习seo优化? https://www.niaogebiji.com/article-32844-1.html
10.什么是数据结构?什么是算法?怎么学习数据结构与算法?本文将回顾数据结构与算法的基础知识,学习日常所接触场景中的一些算法和策略,以及这些算法的原理和他背后的思想,最后会动手写代码,用java里的数据结构来实现这些算法,如何去做? 02 基本概念回顾 2.1 什么是数据结构? 1)概述 数据结构是计算机存储、组织数据的方式。数据结构是指相互之间存在一种或多种特定关系的数据https://maimai.cn/article/detail?fid=1744039689&efid=u2sSJyH6RePBrCh7o1dCfA
11.科学网—[转载]强化学习在资源优化领域的应用共同构成了此次交互的一条轨迹。一条轨迹对应的全部奖励值之和被称为这条轨迹对应的回报值,用R(τ)表示, 。 2.2 强化学习算法基础 根据智能体在与环境交互过程中具体学习的内容,可以把无须对环境进行建模(即model-free)的强化学习算法分为两大类:直接学习动作执行策略的策略优化算法(如REINFORCE)和通过学习一个值https://blog.sciencenet.cn/blog-3472670-1312677.html
12.谢耘:人工智能——多余的概念,算法的本质实用资讯“机器学习”(Machine Learning)方法的本质:用“学习算法”去帮助最终确定完善解决问题的算法 记得有一个国际人工智能界的名人曾经说过一句话:“人工智能就是机器学习,机器学习就是人工智能。”所以,如果我们能够搞清楚“机器学习”的本质,也就理解了“人工智能”到底是什么了。那么我们就来看一下“机器学习”这个听上https://yuanzhuo.bnu.edu.cn/article/1024
13.人民日报:用好算法,迈向智能社会人民日报:用好算法,迈向智能社会 2022年8月16日《人民日报》第20版 习近平总书记在主持中共中央政治局第九次集体学习时强调:“人工智能是新一轮科技革命和产业变革的重要驱动力量,加快发展新一代人工智能是事关我国能否抓住新一轮科技革命和产业变革机遇的战略问题。”人工智能具有多学科综合、高度复杂的特征,在推动https://kjt.shaanxi.gov.cn/kjzx/mtjj/276381.html
14.深度学习Adam那么棒,为什么还对SGD念念不忘?一文看懂深度学习请继续阅读优化算法的选择和tricks:3 优化算法的选择和使用策略 在上述情况下,我们用一个框架梳理了主要的优化算法,并指出了以Adam为代表的自适应学习率优化算法可能存在的问题。那么,我们在实践中应该如何选择呢? 以下是Adam+SGD的组合策略,以及一些有用的tricks。不同优化算法的核心差异:下降方向 https://www.tulingxueyuan.cn/tlzx/jsp/2226.html
15.第三代神经网络模型:面向AI应用的脉冲神经网络澎湃号·湃客Wolfgang Maass 在提出SNN时使用的是相对简单的整合发放模型,而带泄漏整合发放(leaky integrate-and-fire,LIF)模型[1]则是目前在面向AI的SNN研究中最为常用的脉冲神经元。一些面向SNN学习算法的工作将LIF神经元与循环神经元进行类比,这使得SNN能够更好地融入深度学习的框架之中。https://www.thepaper.cn/newsDetail_forward_27289221
16.2020年最值得收藏的60个AI开源工具语言&开发李冬梅SC-FEGAN 听起来像另一款 GAN 库,没错,这的确是基于 GAN 的人脸照片涂鸦编辑。SC-FEGAN 与 StyleGAN 的算法一样出色。 你可以用开发者训练好的深度神经网络来编辑所有类型的人脸照片。SC-FEGAN 非常适合使用直观的用户输入与草图和颜色生成高质量的合成图像。 https://www.infoq.cn/article/2uabiqaxicqifhqikeqw
17.AlphaZero炼成最强通用棋类AI,仅用8小时就能完爆人类棋类游戏12月5日,距离发布AlphaGo Zero论文后不到两个月,他们在arXiv上传最新论文《用通用强化学习算法自我对弈,掌握国际象棋和将棋》(Mastering Chess and Shogi by Self-Play with a General Reinforcement Learning Algorithm),用看似平淡的标题,平淡地抛出一个炸弹。 https://www.36kr.com/p/5106773.html
18.浅析机器学习算法的应用嘲!腾讯云开发者社区在学习算法的过程里,难免有疑问:k近邻、贝叶斯、决策树、svm、逻辑斯蒂回归和最大熵模型、隐马尔科夫、条件随机场、adaboost、em这些算法在一般工作中分别用到的几率多大?一般用途是什么?需要注意什么? 首先简要回答一下:以上这些算法,如果是指书本或者大学课堂里面教的,那么在目前国内机器学习应用最多的一些工业界场https://cloud.tencent.com/developer/article/1928789