一 1.机器学习概述
1.1 时刻接触的机器学习
谈起机器学习,就不得不说当下大火的人工智能领域,人工智能是什么?人工智能是类人思考、类人行为,理性的思考、理性的行动。人们一谈起人工智能,很多人就潜意识觉得人工智能是属于那些计算机专业,通讯专业等技术人才,才能时刻接触到的,其实人工智能离我们并不遥远,我们每个人时时刻刻都与人工智能密切接触,例如:我们的办公邮箱拦截的垃圾短信功能,美颜相机,淘宝上给你推荐的商品宝贝,其实这些都是人工智能的应用,当然,不是该专业的人才并不需要懂这里面的原理。
1.2 机器学习的概念
专业点说,机器学习是研究计算机怎样模拟或实现人类的学习行为,以获取新的知识或技能,重新组织已有的知识结构是指不断完善自身的性能,或者达到操作者的特定要求。那么通俗点说,机器学习其实就是让计算机通过给定的一堆数据,让机器从中学习出某种规律,并使用这种规律对未来某件事做决定或者预测。与前面所说的人工智能相联系,机器学习其实是人工智能领域里的一条分支。
1.3 机器学习的类型
-
机器学习有两种类型:
**监督学习**: 根据训练样本(含有标签)进行训练得到一个最优的模型,包括线性回 归、逻辑回归、svm、支持向量机等算法。 例如:给定一堆水果,判定每一个水果是哪个种类? **无监督学习**:训练样本并没有标签,训练之前也不清楚样本的类别,通过样本之间 的特性进行自动分类,比如聚类算法如kmeans就是典型的无监督学习算法 。 例如:不同颜色的香蕉和苹果,计算机通过算法模型可以将属于香蕉的水果划分一类, 苹果划分一类。
1.4 机器学习的流程
想要玩转机器学习,首先还是要有好的数据集,而现在业务中使用的数据集一般都是不完整的,美国有一篇报道上说:数据科学家在他们的时间中有50%到80%的时间花费在收集和准备不规则数据的更为平凡的任务中,然后才能探索有用的金块。因此数据预处理工作是非常重要的,也是整个流程中时间占比最久的。
2. 数据预处理
数据预处理中包含几个重要部分,分别是处理缺失值,数据定标,数据转换。下面来一一介绍。
2.1 处理缺失值
很多拿到手的数据集中,有许多缺失的数值,若果缺失数值占比多,直接删除的话会多算法模型产生很大的影响,那么该如何处理这些缺失值呢?
- 均值,中位数,众数插补
- 使用固定值
- 回归方法(预测)
- 插值法(拉格朗日插值法,牛顿插值法等)
2.2 数据定标
数据定标就是使不同规格的数据转换到同一规格。常见的方法有标准化和归一化,还有二值化等。标准化的前提是特征值服从正态分布,标准化后,其转换成标准正态分布。归一化利用了边界值信息,将特征的取值区间缩放到某个特点的范围,例如[0, 1]等。
数据定标后的可视化图:
2.3 数据转化
对一些数据集中的定性特征属性,可以对其使用独热编码(one-hot-encoding),举个例子:一个数据集中,有个特征属性为性别:男,女,此时将性别进行独热编码,就会转换成:男 为 [1, 0], 女 为[0, 1]。
3. 特征工程
提起特征工程,就有一句不得不提的话,数据和特征决定了机器学习的上限,而模型和算法只是逼近这个上限而已。那特征工程到底是什么呢?顾名思义,其本质是一项工程活动,目的是最大限度地从原始数据中提取特征以供算法和模型使用。特征工程包含了太多内容,这里就借用一张图来看看。
这里面,对数据不平衡进行采样处理,降维,特征选择里的内容在实际业务中是非常常见的操作,需要重点熟悉。
二 2.KNN算法归纳
k-近邻算法(k-Nearest Neighbour algorithm),又称为KNN算法,是数据挖掘技术中原理最简单的算法。KNN的工作原理:给定一个已知标签类别的训练数据集,输入没有标签的新数据后,在训练数据集中找到与新数据最邻近的k个实例,如果这k个实例的多数属于某个类别,那么新数据就属于这个类别。可以简单理解为:由那些离X最近的k个点来投票决定X归为哪一类。
ps: 这里面k个实例中的k的取值,最好是奇数,这样能够确保不会出现的几个种类都是多数
类,即平手现象。
看图中示例,去k=5,即5个实例,预测红色图标所属种类,找离其最近的5个实例,其中绿标小于蓝标,所以红色图标属于蓝标种类。
具体代码实现:可以看我之前写的另一篇博客
【KNN python代码实现】https://blog.csdn.net/laojie4124/article/details/91906259
构建knn分类器最核心的函数如下:
def euc_dis(instance1, instance2):
"""
计算两个样本instance1和instance2之间的欧式距离
instance1: 第一个样本, array型
instance2: 第二个样本, array型
"""
dist = np.sqrt(sum((instance1 - instance2)**2)) # 计算欧式距离的公式
return dist
该代码引用于贪心科技,更加通俗易懂。
如何确定最优的K参数:
使用K折交叉验证(cross validation),K折就是讲数据集切分成K小块,验证集和测试集相互形成补集,循环交替,如图:
当K=5时,进行5折交叉验证,将一份数据分为训练数据和验证数据,进行5次建模预测,最后取一个平均值作为最后结果。
KNN算法总结:
- 简单
- 比较适合应用在低维空间
- 预测时候的复杂度高,对于大数据需要一定的处理。
以上部分内容引用于
K折交叉验证:https://blog.csdn.net/weixin_39183369/article/details/78953653
特征工程的解释:https://blog.csdn.net/qq_39521554/article/details/78877505
贪心学院:www.greedyai.com