关于机器学习之前需要了解的名词概念
监督学习:用正确答案训练神经网络。
1)数据的生成和分类
训练集,验证集
分类,回归
2)训练
激活函数,成本函数(目标函数,效用函数,适应度函数):计算结果为神经网络计算结果与实际情况的偏差。训练过程为最小化成本函数。
BP算法(反向传播算法):常用实现方法:梯度递减
3)验证
常用超参:神经网络的神经元个数,神经元层数,激活函数(哪个函数用来激活神经元),学习速率(训练网络的速度)等。
4)应用
以上三步可以训练好一个模型。将模型与程序融合,该模型可以提供一个API(应用程序编程接口)供程序调用,模型计算出结果并返回给应用程序。
无监督学习
使用的数据是没有标记过的,即不知道输入数据对应的输出结果是什么。方法:读取数据,寻找数据的模型和规律。
聚类:将相似数据归为一组。
异常检测:寻找异常。
半监督学习
训练中使用的数据小部分为标记过的,大部分为未标记的。半监督学习比监督学习成本低,并且准确度也较高。
无标记也能提高准确率的解释:即使不知道正确答案,但可以知道输入数据长什么样,有什么可能的取值。
拟合
定义:把平面上一系列的点,用一条光滑的曲线连接起来。
常用方法:最小二乘曲线拟合法。b=y(平均)-a*x(平均)
数值分析的三大基础工具:拟合,插值,逼近。拟合:已知点列,从整体上靠近它们;插值:已知点列并且完全经过点列;逼近:已知曲线或者点列,通过逼近使得构造的函数无限接近它们。
如果待定函数是线性,就叫线性拟合或线形回归(主要在统计中)。否则叫非线性拟合或非线性回归,表达式可以是分段函数,这种叫情况下叫样条拟合。
过拟合
为了得到一致假设而使假设变得过度严格。
定义:给定一个假设空间H,一个假设a属于H,如果存在其他的假设b属于H,使得在训练样例上a的错误率比b小,但在整个实例分布上b比a的错误率小,那么就说假设a过度拟合训练数据。
判断方法:一个假设在训练数据上能够获得比其他假设更好的拟合,但是在训练数据外的数据集上却不能很好地拟合数据,此时认为这个假设出现了过拟合现象。
常见原因:1,建模样本选取有误,如,样本数量太少,样本方法错误,样本标签错误等,导致选取的样本数据不足以代表预定的分类规则;
2,样本噪音干扰过大,使得机器将部分噪音认为是特征从而扰乱了预设的分类规则;
3,假设的模型无法合理存在或假设成立的条件实际并不成立;
4,参数太多,模型复杂程度过高;
5,对于决策树模型,如果我们对于生长没有合理的限制,其自由生长有可能使节点只包含单纯的事件数据或非事件数据,使其虽然可以完美匹配(拟合)训练数据,但是无法适应其他数据集。
6,对于神经网络模型:a)对样本数据可能存在分类决策面不唯一,随着学习的进行,BP算法使权值可能收敛过于复杂的决策面;b)权值学习迭代次数足够多,拟合了训练数据中的噪声和训练样例中没有代表性的特征。
解决方法:
1,在神经网络模型中,可以使用权值衰减的方法,即每次迭代过程中以某个小因子降低每个权值。
2,选取合适的停止训练标准,使对机器的训练在合适的程度;
3,保留验证数据集,对训练成果进行验证;
4,获取额外数据进行交叉验证;
5,正则化,即在进行目标函数或代价函数优化时,在目标函数或代价函数后面加上一个正则项,一般有L1正则与L2正则等。
欠拟合
模型没有很好地捕捉到数据特征,不能很好地拟合数据。
解决方法:1,添加其他特征项。特征添加的重要手段:“组合”“泛化”“相关性”;特征添加:“上下文特征”“平台特征”等;
2,添加多项式特征,例如将线性模型通过添加二次项或者三次项使模型泛化能力更强;
3,减少正则化参数,正则化的目的是防止过拟合,所以现在模型出现了欠拟合,则需要减少正则化参数。
回归与分类
区别在于输出变量的类型
回归:定量输出,连续变量预测,例,预测明天的气温是多少度。
分类:定性输出,离散变量预测,例,预测明天是阴,晴,还是雨。











(2)若在(a,b)内f''(x)<0,则f(x)在[a,b]上是凸的。Convex
凸集
在实数R上(或复数C上)的向量空间中,如果集合S中任两点的连线上的点都在S内,则集合S称为凸集。
常见的凸集
1,超平面
2,半空间
类似于一个分割超平面将空间切成两半的感觉
3,多面体
4,常见的圆、椭圆、椭球,球体等
常见的凸函数
凸优化问题的基本形式
注:仿射函数即由1阶多项式构成的函数,一般形式为f(x)=Ax+b,这里,A是一个m*k矩阵,x是一个k向量,b是一个m向量,实际上反映了一种从k维到m维的空间映射关系。
凸优化问题的性质:
1,凸优化问题的可行域为凸集
2,凸优化问题的局部最优解即为全局最优解
连续特征、离散特征
连续特征离散化
交叉验证
定义
交叉验证,有时也称作循环估计,是一种统计学上将数据样本切割成较小子集的实用方法。主要用于建模应用中,例如PCR、PLS回归建模中。在给定的建模样本中,拿出大部分样本进行建模型,留小部分样本用刚建立的模型进行预报,并求这小部分的预报误差,记录它们的平方加和。
思想介绍
在实际训练中,训练结果对于训练集的拟合程度挺好,但对于训练集之外的数据的拟合程度通常不怎么令人满意。因此我们通常不会把所有的数据集都拿来训练,而是将原始数据进行分组,一部分作为训练集,另一部分作为验证集,首先用训练集对分类器进行训练,再利用验证集来测试训练得到的模型,以此来作为评价分类器的性能指标。
目的
为了得到可靠稳定的模型。
常用的精度测试方法主要是交叉验证,例如10折交叉验证,将数据集分成十份,轮流将其中9份做训练1份做验证,10次的结果的均值作为对算法精度的统计,一般还需要进行多次10折交叉验证求均值,例如:10次10折交叉验证,以求更精确一点。
常见形式
Holdout验证
常识说,Holdout验证并非一种交叉验证,因为数据并没有交叉使用。随机从最初的样本中选出部分,形成交叉验证数据,而剩余的就当训练数据。一般来说,少于原样本1/3的数据被选作验证数据。
K折交叉验证
初始采样分割成K个子样本,一个单独的子样本被保留作为验证模型的数据,其他K-1个样本用来训练。交叉验证重复K次,每个子样本验证一次,平均K次的结果或者使用其他结合方式,最终得到一个单一估测。这个方法的优势在于,同时重复运用随机产生的子样本进行训练和验证,每次的结果验证一次,10折交叉验证是最常用的。
留一验证
只使用原样本中的一项来当做验证资料,而剩余的则当做训练资料。这个步骤一直持续到每个样本都被当做一次验证资料。
梯度下降法
One-hot编码
又称为一位有效编码,主要采用N位状态寄存器来对N个状态进行编码,每个状态都有它独立的寄存器位,并且在任意时候只有一位有效。
在实际的机器学习的应用任务中,特征有时候并不总是连续值,有可能是一些分类值,如性别可分为“male”和“female”。对其进行特征数字化,如:
。性别:["male","famale"]
。地区:["Europe","US","Asia"]
。浏览器:["Firefox","Chrome","Safari","Internet Explorer"]
"male"则对应[1,0],同理“US”对应着[0,1,0],“Internet Explorer”对应[0,0,0,1]。则完整的特征数字化的结果为:[1,0,0,1,0,0,0,0,1]。这样导致的一个结果就是数据会变得非常的稀疏。
实际的Python代码
正则化
线性回归
逻辑回归
决策树
KNN
Kmeans
支持向量机
神经网络(NN)
推荐系统