Py学习  »  机器学习算法

终于能把机器学习的特征工程弄懂了!

人工智能学习指南 • 1 月前 • 56 次点击  

今天我们来聊聊在机器学习中扮演着至关重要的角色-特征工程(今天是特征工程的第一部分)



想象一下,你是一位探险家,想要探索一片未被完全探索的原始森林🌳🌲。

这片森林(即数据集)里蕴藏着无数的宝藏(即有价值的信息),但同时也被茂密的植被、曲折的小径和未知的陷阱所包围。

你的目标是找到通往宝藏的最佳路径,但直接穿越这片丛林非常困难且充满危险。

这个时候特征工程就像是你手中的一幅精密的地图和指南针🗺️🧭。

它不仅帮助你清理掉视线中的杂草(即清洗和预处理数据),还揭示出隐藏的密道(即构造新特征)和潜在的危险区域(即识别和处理异常值)。

通过精心绘制和解读这张“地图”,你能够更高效地规划出穿越丛林的路线,直抵宝藏所在。

在这个过程中,特征选择就像是你决定走哪条路的过程,你挑选出最有可能通向宝藏的路径(即最重要的特征),避免在不必要的路线上浪费时间。

而特征降维则像是将复杂的丛林地形简化为更易于导航的模型,帮助你更快地接近目标。

最终,当你凭借这张精心制作的“地图”找到宝藏时,你会发现这份努力是值得的。

因为通过特征工程,你不仅提高了找到宝藏的效率,还确保了宝藏的完整性和价值(即模型的准确性和泛化能力)。



大家想系统性学习 机器学习、深度学习 的,我为大家准备了一些查漏补缺的资料,可以帮大家更好的学习。

大家可以大家可以任意添加一位小助手获取(长按二维码图片添加既可),记得发送文章标题截图给小助手哦!


     


特征工程到底是什么?

“特征工程是从原始数据中提取有意义特征的过程”

我们可以根据自己的领域知识或对数据的理解来尝试不同的特征,在开始之前,我们需要先熟悉数据。

我们如何构建特征呢?有以下几种不同的方法:


  • 特征转换

  • 特征构造

  • 特征选择

  • 特征提取







特征转换






特征转换是让你的数据更受机器学习算法青睐的过程,这就像给你的数据化个妆,让它在约会时看起来最佳状态。

“特征转换是修改特征以使其更适合机器学习算法的过程”

这包括处理缺失值、将分类特征转换为数值特征、检测异常值以及将特征缩放到一个共同的范围内。


处理缺失值

接下来,我们来谈谈缺失值,它们就像是派对上的不速之客。

如果你不小心处理,它们可能会搞砸你的数据,破坏你的模型。

我们应该怎么解决它?主要有两种方法:

插补:这就像用估计值填补空白,你可以使用其他值的均值、中位数或众数,或者使用某种逻辑来填补空白。


df.fillna( 0 )



删除处理:这就像是把不请自来的客人请出,你可以移除包含缺失值的行或列。


df.dropna(inplace= True



哪种方法最好?这要取决于你的数据, 如果缺失值很多,你可以使用插补法。

但如果只有少量缺失值,你可以直接删除它们。


处理分类值

数据可以分为两大类:数值型和分类型。

分类数据又可以进一步分为名义型和序数型,根据数据的类型,有不同的方法将分类数据转换为数值数据,这个过程叫做编码。

“编码指的是将分类数据转换为数值格式的过程。”

名义型数据是没有顺序的分类数据,比如地名或部门(就像你的领域一样)。

可以使用独热编码(One-Hot Encoding)将其转换为数值数据,这是Python中的一个库,叫做OneHotEncoder()。



序数型数据是有顺序的数据,比如成绩等级(A+、A、B+、B、C)。

可以使用序数编码(Ordinal Encoding)来转换,对应的Python库是OrdinalEncoder()。



上述两种编码器通常用于解释变量(x),对于预测变量(y),我们应该使用标签编码(Label Encoding),即LabelEncoder(),标签编码是专门为输出变量设计的。



处理异常值

异常值与其他数据不同,可能会让你的模型表现不佳。

异常值是显著不同于数据集中其他数据点的数据,它们会影响我们模型的准确性。


使用IQR(四分位距)进行检测


处理异常值主要有两种方法:

修剪:你可以从数据集中移除异常值。

封顶(Capping):你可以将异常值替换为数据集中其他数据的范围内的值。

如果异常值数量较少,你可以修剪它们。

如果异常值数量较多,你可以使用Capping。

有许多方法可以用来检测和移除异常值,包括z分数、IQR(四分位距)、百分位数和Winsorization等。


特征缩放

在机器学习模型中,并非所有特征都是平等的。

一些特征的范围可能远大于其他特征,从而给它们带来不公平的优势。

特征缩放通过确保所有特征具有相同的尺度来帮助平衡这种差异。

“特征缩放是转换数据集中特征的过程,以便它们具有共同的尺度。”

这有助于防止某些特征在模型中占据主导地位。

特征缩放主要有两种类型:

标准化:标准化是从每个特征中减去均值,然后除以标准差的过程。

这确保了每个特征的均值为0,标准差为1,标准化通常用于符合高斯分布的数据,如线性回归和逻辑回归。

归一化:归一化是将特征重新缩放到某个特定范围(如0和1之间)的过程。

这通常用于不符合高斯分布的数据,如决策树和支持向量机。



特征缩放在机器学习过程中是一个重要步骤,通过缩放特征,你可以帮助提高模型性能,并确保所有特征都有平等的机会。







特征构造






特征构造就像装饰蛋糕,你从一个基本的蛋糕开始,可以通过添加各种装饰来使其更加美味和好看。

例如,你可以添加巧克力碎片、坚果或水果,但要小心不要过头!

过多的装饰会让蛋糕看起来杂乱无章且缺乏吸引力,特征构造也是如此。

如果你向数据集中添加了太多特征,它可能会变得难以解释和分析。

因此,在特征构造时,请记住蛋糕装饰的黄金法则:少即是多。

几个精心挑选的特征可以使你的数据集更加信息丰富和相关,而过多的特征则可能使其变得不那么有用。

“根据现有特征或我们的领域知识开发新特征的过程被称为特征构造。”

通过使特征更加信息丰富和与手头任务相关,这有助于机器学习模型表现更好。



构建特征的方法多种多样,但一些典型的技术包括:

重构现有特征:你可以将现有的特征以新的方式组合起来,创造出新颖有趣的东西。

从现有特征中组合、修改或创建新特征,例如,在泰坦尼克号数据集中,你可以将“sibsp”(兄弟姐妹/配偶数)和“parch”(父母与子女数)两个特征结合,创建出一个名为“家庭”的新特征。

利用领域知识:你可以根据对领域的理解,创造出对当前任务至关重要的新特征。

基于你对领域的了解,创建出对任务有益的新特征。

比如,如果你正在开发一个预测客户流失的模型,了解到久未购买商品的客户更可能流失,那么你可以添加一个新特征——“距上次购买月数”。

使用特征选择算法:这些算法能帮助你从数据集中确定最重要的特征,并基于这些特征构建新特征,它就像精选最佳属性来创造强大的新特征!







总结






特征工程是机器学习中至关重要的一步,涉及从原始数据中转换、构建、选择和提取有意义的特征。

就像烘焙美味的蛋糕一样,我们从优质食材(数据)开始,运用我们的专业知识创造新的、相关的特征,以提升机器学习模型的性能。

在本文的第一部分,我们探讨了特征转换的重要性、缺失值处理、类别数据编码、异常值处理以及特征缩放的意义。

同时,我们还讨论了特征构建的艺术,即创造性地结合现有特征和利用领域知识来构建信息丰富的属性。

记住,成功的特征工程的关键在于找到平衡点。

添加过多特征会使数据变得杂乱无章,而精心挑选的几个特征却能显著提升模型性能。

如果大家想更进一步学习机器学习、深度学习、神经网络技术的可以看看以下文章(文章中提到的资料都打包好了,都可以直接添加小助手获取)


<


 人工智能资料分享 



>








人工智能60天学习计划(点击图片即可跳转)











深度学习中文教程书(点击图片即可跳转)

LLM最全学习资料(点击图片即可跳转)



大家觉得这篇文章有帮助的话记得分享给你的死党闺蜜、同学、朋友、老师、敌蜜!




B站:AI秃秃学长小墨



关注小墨

获取最新AI技能+最肝AI干货

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/173329
 
56 次点击