前言
最近学习了机器学习。在此写下自己的心得和学习时的笔记,方便自己以后回顾温习,也希望这些文章能够帮助到想要学习机器学习的小伙伴。学了有一段时间的机器学习了。我觉得最重要的就是要梳理清楚学习的路线,要不然学习的时候会感觉到云里雾里的,脑子一团浆糊。我对此也是深有体会的,所以在接下来的文章里我会尽全力的来梳理清楚学习的路线。
学习前的准备
在机器学习中无论是图像,语音,还是文本都会被转化为数字的矩阵进行一系列的数学上的操作,然后得出结果。(数学是真的真的很奇妙的)
数学 | 机器学习中的应用 |
---|---|
高等数学 | 这个学不好机器学习的相关公式你是看不懂的,而机器学习的核心就是将这些数学公式写成代码,对收集到的数据进行运算的出结果。 |
线性代数 | 机器学习将图像,语音,文本数据转化为数字以矩阵的形式存储。 |
概理论与数理统计 | 对于机器学习有了解的都知道,机器学习的结果都是一个概率结果,深入了解后会发现机器学习其实大部分的算法都是以概率进行的预测。 |
在学习机器学习的时候大都是以python进行的学习,所以python是一定要会的语言。
python需要的第三方库 | 用途 |
---|---|
Numpy | 有关矩阵的操作的包 |
pandas | 有时候数据被保存在了excel的文件中,此包读取excel文件数据,并对数据进行操作 |
matplotlib | 以图表的形式展现对机器学习模型评估的数据, |
scikit-learn | 机器学习算法包 |
机器学习中的理论都是以数学知识为支撑,而python及以上的第三方库是对机器学习的实践。如果你不会数学知识,依旧可以使用Python进行机器学习的实践,但没有数学知识,你会在机器学习的路上走不远的。
机器学习的一般流程
数据收集
机器学习需要大量的数据。数据其实是很难得到的,一般我们可以使用爬虫去爬取自己需要的数据。这里我们可以使用mnist数据集进行日常的训练,对于mnist数据集,我会专门写文章进行讲解的。
数据清洗
通常我们得到的数据一般会存在缺失值,重复值,噪声的问题,不能直接进行训练的,需要对其进行预处理。
数据清洗的一般流程:
步骤 | 含义 |
---|---|
去除唯一属性 | 类似身份证号等不能刻画样本自身的分布规律 |
缺失值插补 | 当数值缺失时,使用均值插补,众数插补等方法。具体其他的方法自行查找 |
特征编码 | 如:男女;国籍等不为数值,需对此编码为数值。编码方式:one-of-k或one-hot称为独热编码,篇幅原因不做多介绍,可自行详细查找 |
特征二值化 | 将数值型属性转换为布尔值类型 |
标准和正则化 | 不同属性之间的数值类型不同,如:长度,质量,时间等,这些数据数量级不同,对于数值大的数据在模型评价中会比较突出,对模型的参数,正确度,精度造成影响。一般有极差标准化,z-score标准化等。正则化是把数据变换到[0,1]区间,可把正则化视为标准化的一种特例。 |
特征工程
特征工程的含义就是从原始数据获取更多信息,目的就是获取更好的训练数据。
如果你选取得特征越好,灵活性越强,构建得模型就越简单,模型得性能就会越出色。网上流传着一句话:数据和特征决定机器学习的上线,而模型和算法只是逼近这个上限而已,可见对于想要构建好的模型的特征工程是很重要的
特征工程的主要分为三个部分:
主要部分 | 含义 |
---|---|
特征构建 | 从原始数据中人工的构建新的特征 |
特征提取 | 自动的构建新的新的特征,将原始特征数据转化为一组具有明显物理意义或者统计意义的特征 |
特征选择 | 从特征集合中挑选一组最具统计意义的特征子集,从而达到降为的效果 |
模型选择
对于机器学习来说模型的类型分为一下类别:
类别 | 模型 |
---|---|
有监督学习 | K近邻,SVM,决策树,朴素贝叶斯,线性回归,逻辑回归等 |
无监督学习 | K聚类,降维算法,EM等 |
强化学习 | 马尔科夫决策等 |
训练模型
对于模型训练是没什么好说的,就是将数据放入你选好的模型算法中让计算机进行训练。
模型评估
在说评估之前先说一下数据集的划分,一般我们将数据划分为训练集和测试集,
训练集顾名思义就是用来训练模型。测试集用来检测训练好的模型的好坏。注意测试集数据一定不能从训练集中选取,就比如考试中的试卷不会和你做过的练习试卷是同一张的,因为如果试卷相同就不会体现你的真正水平的。
对于数据集的划分一般有:旁置法,K折交叉验证法。
对于模型评估要先来了解一下什么是过拟合和欠拟合
类别 | 含义 |
---|---|
过拟合 | 训练好的模型在训练集上的误差较小,但是在测试集上的误差较大。就是学习的太好了,将某个样本属于自身的特征也学会了,但这个特征对所有样本来说并不突出。 |
欠拟合 | 训练好的模型在训练集和测试集上都有较大的误差。就是你做的题太少了,以至于在平常的练习和正常的考试中会做的不多。 |
再说一下机器学习经常说到的名词:泛化性
泛化性:是指在训练集上的经验性能是否会在未知数据集上表现出差不多的性能。性能同样好,就可以认为是泛化性较好。
通俗解释:你在训练集上得到好的性能,是否意味着在整体上得到好的性能,这就是泛化。
接着就可以说模型评价的指标了:
类别 | 含义 |
---|---|
回归 | 对于回归问题的评价指标有平方差损失函数,平均绝对误差等 |
分类 | 分类问题一般有混淆矩阵 |
模型的图形化评价工具:POC曲线,P-R曲线
参数调整
在训练模型的时候一般会设置一些参数用来学习,根据模型的评估,来修改参数使模型达到最好的效果。
实际应用
将模型训练完毕之后,就可以拿来在实际生活中运用了。
结尾
我认为上面的数据清洗与特征工程应该归属一类,例如,拿到数据后对数据进行缺失值处理,去重,然后再归一化/标准化,热编码,最后再进行特征合取为更有用的特征,选择出更具有代表性的特征进行训练学习。
在刚开始的时候,我信心满满的认为凭自己的学到的东西,对于机器学习的第一章能够完整的,详细的给大家讲解清楚基础的知识点。但是越写越发现,自己无法详细的去讲解基础的知识。因为它太多,太复杂了,就像故事宏大的小说一样,它太大了,以至于脱离了作者的掌控。最具有代表的就是模型评价那一部分,那一部分的东西很多,也很复杂,我只能给出大概的知识点,更详细的只能靠大家自己去查找了。
虽然机器学习的开篇第一章,令自己不太满意,但我感觉我还是把机器学习的流程完整的写了出来,有一个清晰的思路是很重要的。接下来数据的收集,清洗以及特征工程不是我们学习的重点,我们要将重心放在模型的选择以及训练上。
我会讲解这些模型算法的理论知识以及案例。
机器学习的开篇没有写好,我会吸取教训,在以后模型算法理论中我会尽量讲的详细,让大家尽量有所收获。最后创作不易,希望大家多多支持。