本周主要学习了机器学习的理论基础和几种解决有监督学习的几中算法和案例。
一、理论基础:
欠拟合、过拟合、成本函数、模型的准确性、学习曲线、算法模型的优化、查准率和召回率。
1、欠拟合也称高偏差,过拟合也称高方差。
欠拟合的特点:模型对训练数据集的准确性比较低,其成本函数较高,对验证集的准确性也比较低,验证集的成本函数比较高。
过拟合的特点:模型对训练集的准确性比较高,训练集的成本函数较低,验证集的准确性比较低,验证集的成本函数较高。
2、成本是衡量模型与训练样本符合程度的指标。成本函数就是成本与模型参数的函数关系。在模型训练过程中,就是找出合适的模型参数,使得成本函数的值最小。针对一个数据集,我们可以选择多个模型来拟合数据,一旦选定了某个模型,就需要从这个模型的无穷参数里找出一个最优的参数,使得成本函数的值最小。
3、模型准确性。有些时候并不是成本函数越小越好,可能会出现过拟合的情况。这样预测出来的数据是不准确的。所以我们要把数据集分为训练集和测试集,一般原则是按照8:2或者7:3来划分。然后用训练数据集来训练模型,训练出模型参数后再使用测试数据集来测试模型的准确性,根据模型的准确性来评价模型的性能。
另一个更科学的方法是把数据集分成3份,分别是训练集、交叉验证集(一般简称验证集)、测试集。推荐比例为:6:2:2.
4、我们也可以通过画学习曲线来判断的模型的好坏。取训练集的成本函数和验证集的成本函数为纵坐标,以样本数为横坐标画出学习曲线,通过学习曲线我们可以看出模型的准确性和优化的方向。
5、算法模型的优化:获取更多的训练数据、减少输入的特征数量、增加有价值的特征、增加多项式特征。
6、再已训练好的模型的情况下,可以再结合查准率和召回率。这样可以判断哪个算法的性能会更好。(召回率和查准率的公式去网上搜)。
二、 k-近邻算法(也称knn算法)
1、原理:计算带标记的数据样本和数据集中每个样本的距离,取距离最近的k个样本。待标记的数据样本类别由这k个距离最近的样本投票产生。
2、算法参数:k,参数的选择需要根据数据来决定。k越大模型的偏差越大,对噪声数据越不敏感,当k值很大时,可能造成模型欠拟合;k值越小,模型的方差越大,当k值太小时,就会造成模型过拟合。
3、算法的变种:knn算法有一些变种,其中之一就是可以增加邻居的权重。默认情况下,在计算距离的时候,都是使用相同的权重,我们可以针对不同的邻居指定不同的距离权重,如距离越近权重越高。
另一个变种是,使用一定半径内的点取代距离最近的k个点。当数据采集不均匀的时候,该算法的变种可以取得更好的性能。
4、knn算法主要是用来进行分类处理的,有时候也会用来进行回归拟合。
5、knn算法的实例:进行糖尿病预测。去kaggle可以找到。
三、线性回归算法:
1、线性回归算法主要是解决有监督学习的问题的
线性回归算法主要是涉及预测函数和成本函数和其中的算法。多元线性回归算法和线性回归算法一样;
具体的内容可以参考:https://www.cnblogs.com/pinard/p/6004041.html?tdsourcetag=s_pcqq_aiomsg
主要算法涉及:梯度下降算法:http://www.cnblogs.com/pinard/p/5970503.html
最小二乘法:http://www.cnblogs.com/pinard/p/5976811.html
2、模型的优化:对数据进行归一化。可以使用特征缩放来对训练样本进行归一化处理,处理后的特征在[0,1]之间。对数据进行归一化可以让算法收敛的更快,提升模型拟合过程中的计算效率。
3、线性回归的典型例子为:房价预测。在kaggle上可以找到。
四、逻辑回归算法:
1、算法原理:逻辑回归算法输出的是离散值,是用来解决分类问题的。
2、预测函数:https://www.cnblogs.com/pinard/p/6029432.html?tdsourcetag=s_pcqq_aiomsg
里面有具体的介绍。
3、多元分类:先把问题转化为2元分类,依据二元分类进行推广,总共需要n+1给预测函数。预测出来的概率最高的那个类别,就是样本所属的类别。
4、逻辑回归的实例:乳腺癌检测。在scikit-learn中可以找到。