数据分析与机器学习学习笔记--常见知识总结

1.引言

      最近一段心血来潮自学了数据分析与机器学习,在学习的过程中犯过许多错误以及对部分知识的错误理解,所以决定自己瞎写几篇博客总结自己的错误并且回顾学过的算法,同时希望自己的总结能帮一些同样是想要入门学习的人少走弯路,话不多说,接下来就是一些常用的数据处理方式和容易混淆的概念。

2.损失函数(lost)、代价函数(cost)和目标函数(obj)

      机器学习的每个算法都离不开标题所写的三个函数,但是在许多资料中对于损失函数和代价函数没有进行明确的定义,导致二者存在混用的情况,有些作者将lost与cost当作一个函数,但是本质上二者不是完全一样的,在 Coursera:Neural Networks and Deep Learning 课程中,Andrew Ng 给出的解释如下:

The loss function computes the error for a single training example; the cost function is the average of the loss funcitons of the entire training set.
我在查阅了一些资料后总结如下:

 

  •       损失函数(lost):计算单个样例的损失/误差
  •       代价函数(cost):计算总样本的平均损失/误差
  •       目标函数(obj):这个函数就厉害了,是我们最终要优化的函数,此处要牵扯出了经验损失和结构损失

举个例子方便读者理解

 

  1.  数据分析与机器学习学习笔记--常见知识总结 
  2. 数据分析与机器学习学习笔记--常见知识总结
  3. 数据分析与机器学习学习笔记--常见知识总结  

      公式1为损失函数,求的是一个样例的损失,公式2为代价函数,其在1的基础上添加了求和并求平均,公式3即为代价函数由两部分构成,前面一部分cost函数即为上文所说的经验损失(在吴恩达老师的讲解中是如此划分的),第二项为添加的正则化惩罚项即为结构损失。为什么要在此处添加正则化惩罚项我会在之后模块进行解释。

 

3.数据预处理

      数据预处理在整个机器学习模块中占有举足轻重的地位,人们往往只会讨论什么什么算法牛逼的不得了,但是对数据方面却忽略了很多,在我学习的过程中最开始也是迷恋于算法的强大,惊叹于决策树、svm以及神经网络效果强的一批,其他算法搞不定的往神经网络一放,就像那灭霸比心心一般轻松,结果却精确的不得了。经过一段时间的总结后我发现,一个算法的精确度与数据处理的好坏具有巨大关系,每当我们写一个算法得到的结果不够满意时第一步就是要对数据进行处理,其次才是考虑其他算法。

3.1 对缺失值的处理

      关于对缺失值得处理主要有3种方法(根据数据处理专家DanB大佬在Kaggle上的文章得到的)戳我戳我,第一是简单的丢弃,其次取均值,最后为取均值并添加数据是否缺失列(true或false),其中前两种方法较为常用,由于我在实现不同算法的过程中通常用到第二种方法并没有具体实践过第三个,在此对第三种进行一个猜测文中说的是扩展一个“col is missing”列,此列的值通过data[col].isnull()进行判断并返回bool值,由于机器学习只接受数字,无法接受其他类型参数,我个人认为判断是否为空后还需将此列进行一个数值的转变,例如将true=>1, false=>0,让后在将此列作为一个参数传递到模型中进行求解,由于没有具体尝试过此方案我也不好发表过多意见,但就我多次的实现过程来看,推荐使用第二种方案,相对简单同时精度比第一类要好许多。(详细信息和代码点击上方的“戳我戳我”查看数据分析与机器学习学习笔记--常见知识总结数据分析与机器学习学习笔记--常见知识总结数据分析与机器学习学习笔记--常见知识总结数据分析与机器学习学习笔记--常见知识总结

3.2 标准化/归一化处理

      此部分文章在网络上相当的多,我就偷个懒不在啰嗦了。百度一下,你就知道(此处帮百度打个广告,百度不仅仅有竞价医疗数据分析与机器学习学习笔记--常见知识总结数据分析与机器学习学习笔记--常见知识总结数据分析与机器学习学习笔记--常见知识总结数据分析与机器学习学习笔记--常见知识总结

 

 

4.正则化惩罚项

      在上文提到目标函数(obj)需要添加一个正则化惩罚项作为结构风险,其目的就是为了防止训练出来的模型出现过拟合的情况,当一个模型过拟合时其在训练集的精度会非常高,但是应用在测试集时效果不尽人意,我们最终希望的训练出的模型是在泛化能力强的前提下同时要求精度尽可能的高。由于此篇博客只是对我之前走过的弯路以及部分容易误解的知识进行总结,在此不进行详细的解释数据分析与机器学习学习笔记--常见知识总结数据分析与机器学习学习笔记--常见知识总结数据分析与机器学习学习笔记--常见知识总结数据分析与机器学习学习笔记--常见知识总结,想深入了解的读者点击我在参考部分给出相关文章,在这边文章中博主对正则化进行了详尽的解释。

4.1 L1正则化惩罚项

      L1正则化(L1范数)为权值向量中各元素的绝对值之和,L1正则化项有助于产生稀疏矩阵用以特征选择,同时L1正则化项还具有一定程度的防止过拟合效果。

 

4.2 L2正则化惩罚项

      L2正则化(L2范数)为权值向量中各元素的平方和,在实际应用中我习惯将其前面的参数设为1/2,L2正则化对防止模型的过拟合具有良好的表现。

5.总结

      我的第一篇博客就写到这里了,第一次写相关文章边想边写,有部分知识点没有及时考虑到,遗漏的一些将在之后的文章中整理。作为一个初次学习的小白欢迎各位大佬看了此便文章后提出批评和建议,今后我会逐步将机器学习各经典算法的相关知识进行总结,计划是每周一篇,每周周一发布,初步计划用2个月时间将最近一段学习的东西做一个彻底的整理,总之谢谢各位的阅读,如有错误欢迎留言。

Reference

 

机器学习中正则化项L1和L2的直观理解:

https://blog.****.net/*_shi/article/details/52433975

Handling Missing  Values:

https://www.kaggle.com/dansbecker/handling-missing-values

数据分析与机器学习学习笔记--常见知识总结(快给这位作者疯狂打call)