机器学习
从广义上说,机器学习就是一种赋予机器自我学习的能力,从实践意义来说机器学习就是利用数据,使用机器计算出模型,然后通过模型来预测数据。
在机器学习的过程中最重要的就是数据,在alphago和李世石 的围棋比赛中,其中AlphaGo就是通过自己和自己下棋,总结数据,在经过千万局的数据经验后才和李世石达到了同等水平。机器学习又分为监督学习和无监督学习,监督学习就是将样本数据,和正确的结果告诉计算机,计算机通过学习这些数据后,总结规律;当给样本数据给计算机后,计算机就是通过自己模型将预测结果输出。无监督学习恰恰相反,只给计算机样本数据,没有给出正确的输出,让计算机自己总结其中的规律。
机器学习的算法主要有KNeighborClassifer、LinearRegression、Logistic、SVM、DecisionTree、贝叶斯、这些算法的原理不尽相同,但都是监督学习的范畴。
Kmeans无监督学习
K-近邻算法的理解
Knn 英语全拼是K nearest neighbor,k个最近的邻居,knn主要采用测量不同特征值之间的距离方法进行分类,主要使用数据的范围为数值型和标称型。
knn主要采用了欧几里得的距离计算公式,衡量多维空间中各个点的绝对距离xi-yi的平方和然后开根号。在knn算法中k也是起了关键的作用,假设k等于3,就将一个数据归类到了另一类,k等于5那么就将这个数据归类到另一类,其实knn的本质是基于数据统计的方法。再使用的时候需要导入knn的模块,创建knn对象,将数据交给knn进行训练,之后输入测试数据,knn返回预测结果。
线型回归LinearRegression
分类处理的数据大多数是离散预测,而对于连续的值类型的可以利用回归进行预测。
最小二乘法,通过最小化误差的平方寻找数据的最佳匹配。利用最小二乘法可以简单的求得未知的数据,并使得这些求得的数据和实际的数据之间误差的平方和最小。再线型回归中,正是对数据进行最小二乘法 的计算,对数据进行预测
w =(X.TX)^-1 X.Ty
过拟合,欠拟合、L2正则化、L1正则化、泛化能力????
过拟合 :模型把训练数据学的“太好了”,导致把数据中的潜在的噪声数据也学到了,测试时不能很好的识别数据,模型的泛化能力下降
欠拟合:模型没有很好的捕捉到数据特征,不能够很好的拟合数据
上左图:没有很好的拟合数据,出现欠拟合;上右图:很好的拟合了数据
正则化:正则化可防止模型过拟合,在训练中数据往往会存在噪声,当我们用模型去拟合带有噪声的数据时,通过假如正则化平衡模型复杂度和损失函数之间的关系,防止模型过拟合,可定义如下公式:
泛化能力:指机器学习算法对新鲜样本的适应能力。学习的目的是学到隐藏在数据背后的规律,对具有同一规律的学习集以外的数据,经过训练的网络也能给出合适的输出,该能力为泛化能力。
防止过拟合:
数据集扩增
可以说数据集扩增是防止过拟合最好最根源的方式,有时候拥有更多的数据胜过一个好的模型,过拟合既是在模型训练时对训练数据学习的太好了,举个例子如果我们训练一个东西是不是叶子,如果数据集的叶子都是锯齿状,当模型过拟合时便会认为所有的叶子都是锯齿状的,此时模型再好也不如往数据集中增强新的非锯齿状的叶子,便会防止出现过拟合。
如何获取更多的数据:
(1) 从数据源头获取更多的数据
(2) 根据当前数据集估计数据分布参数,使用该分部产生更多的数据
(3) 数据增强,通过一定规则在现有数据集的基础上扩充数据
L1正则化(L1范数):权重向量w的绝对值之和
L2正则化(L2范数):权重向量w的平方和再求平方根,欧几里得范数,其中w代表模型的参数,k则代表了模型参数的个数
L1正则化和L2正则化的区别
L1正则化和L2正则化都会使得权重矩阵变小,即权重w变小,因此都具有防止过拟合的能力,但不同是L1正则化更易产生系数的权重矩阵,即权重w变小为0;L2正则化只会是w变小但不会出现大量为0现象
岭回归Ridge
添加了L2正则化规则
领回归的本质和线型回归类似,主要用于处理特征多于样本数的情况,现在也用于在估计中加入偏差,从而的到更好的估计。领回顾的本质就是在矩阵X.TX的基础上加入lambda I从而使得矩阵变的非奇异,进而可以对w求逆矩阵,其中I就是一个mxm的单位矩阵
在这里通过引入lambda来限制w的和,通过引入该惩罚项,能够减小不重要的参数这种技术在统计学中叫缩减,缩减方法可以去掉不重要的参数,因此可以更好的理解数据,此外与简单的线型回归相比,缩减法能取得更好的预测效果
领回归加了二阶正则项的最小二乘,主要适用于过拟合严重或者个变量之间存在多重共线性的时候,岭回归是有一定与真实值输出结果的误差,是为了让每个模型的输出结果与所有模型平均值(期望)之间的误差减小
岭回归可以解决特征数量比样本数量多的问题
变量之间存在共线性(最小二乘回归的到的系数不稳定,方差很大)
处理高度相关的数据
多重共线性
多重共线性(Multicollinearity)是指线性回归模型中的解释变量之间由于存在精确相关关系或高度相关关系而使模型估计失真或难以估计准确
Lasso回归
添加了L1正则化规则,在原始的回归函数后面加上一个L1正则化项,即所有权重w的绝对值的和,乘以λ/n,当w为正时,更新后的w变小。当w为负时,更新后的w变大——因此它的效果就是让w往0靠,使网络中的权重尽可能为0,当权重w为0时候,说明了这个权重在数据中不重要。属性越多,就会考虑的方面越多,就容易出现过拟合,将不重要的权重变为0,这样的相当于减小了网络复杂度,防止了过拟合。
逻辑斯蒂回归Logistics
利用逻辑斯蒂回归进行分类的主要思想是根据现有的数据对分类边界建立回归公式,以此进行分类这里的回归表示要找到最佳拟合参数集。
logistic Regresssion虽然名字中带有回归,但实际是一种分类的方法,用于二分类问题(即输出只有两种)首先需要先找到一个预测函数(h),显然,该函数的输出必须是两类值(分别代表两个类别),所以利用了Logistic函数(或称为Sigmoid函数),函数形式为:σ(z) = 1/1+e^-z,将线型回归的fn带入到z中得到预测函数。
然后构造损失函数cost函数和j(θ)基于最大似然估计推导得到,通过计算找到J(θ)的最小值,此时说明预测函数越准确
求J(θ)的最小值可以使用梯度下降法,根据梯度下降法可得θ的更新过程:
决策树
决策树是一个树状结构(可以是二叉树或非二叉树)。其每一个非页节点表示一个特征属性上的测试,每个分支代表这个特征属性在某个值域上的输出。每个叶节点存放了一个类别。使用决策树进行决策的过程就是从根节点开始,测试待分类项中相应的特征属性,并按照其值选择输出分支,直到到达子节点,将叶子节点存放的类别作为决策结果
划分原则:将无序的数据变的有序
通过使用ID3算法,ID3算法就是在每次需要进行分裂的时候,计算每个属性的增益,每个属性的增益就可以通过计算属性的熵进行比较,选择其中增益率最大的属性进行分裂,在按照这个思想递归使用这个方法计算字节点的分裂属性,最终就可以得到整个决策树
区别:不同于逻辑斯蒂回归和贝叶斯算法,决策树的构造过程不依赖领域知识,它使用属性选择度来选择将元组最好的划分成不同的类的属性。所谓决策树的构造就是进行属性选择度量确定各个特征之间的拓扑结构
贝叶斯
贝叶斯是用来描述两个条件概率之间的关系,比如 P(A|B) 和 P(B|A)。按照乘法法则,可以立刻导出:P(A∩B) = P(A)P(B|A)=P(B)P(A|B)。如上公式也可变形为:P(B|A) = P(A|B)*P(B) / P(A)。
假设在一个事件中有许多的条件能影响事件的预测结果,那么数据之间的耦合度比较高,例如天气因素和星期几,天气的原因就要和星期几一块进行统计,一天也就只能统计一个数据;假设这两个数据是独立的,这样一天也就可以统计两个数据。于是就假设这些因素之间相互独立,,朴素就是这个原理。朴素贝叶斯就是将每个事件进行独立,通过计算每个事件 的概率在将数据概率带入到贝叶斯公式中进行概率的计算,得出概率较高的事件的可能性。
随机森林
随机森林就是由多个决策树组成的
Bagging(套袋法)
bagging的算法过程如下:
支持向量机SVM
svm支持向量机,主要针对小样本数据、非线性高维模式识别中表现出许多特有的优势,能解决神经网络不能解决的学习问题,而且有很好的泛化能力
支持向量机就是通过支持向量运算的分类器,其主要原理是
线型分类中,在训练数据中,每个数据都有n个的属性和一个二类类别标志,我们可以认为这些数据在一个n维空间里。我们的目标是找到一个n-1维的超平面(hyperplane),这个超平面可以将数据分成两部分,每部分数据都属于同一个类别。 其实这样的超平面有很多,我们要找到一个最佳的。因此,增加一个约束条件:这个超平面到每边最近数据点的距离是最大的。也成为最大间隔超平面(maximum-margin hyperplane)。这个分类器也成为最大间隔分类器(maximum-margin classifier)。 支持向量机是一个二类分类器。
非线性分类中SVM的一个优势是支持非线性分类。它结合使用拉格朗日乘子法和KKT条件,以及核函数可以产生非线性分类器。
SVM的目的是要找到一个线性分类的最佳超平面 f(x)=xw+b=0。求 w 和 b。
首先通过两个分类的最近点,找到f(x)的约束条件。
有了约束条件,就可以通过拉格朗日乘子法和KKT条件来求解,这时,问题变成了求拉格朗日乘子αi 和 b。
对于异常点的情况,加入松弛变量ξ来处理。
非线性分类的问题:映射到高维度、使用核函数。
K均值算法(K-means)聚类
k-means算法属于一种无监督学习的范畴,自动将相似的对象归到同一族中,主要通过不断的取理种子最近均值的算法。k-means的原理就是首先从数据中选择k个对象作为初始聚类中心,计算每一个聚类对象到聚类中心的距离来划分,计算过之后,聚类中心点移动到最优位置;再次计算每个聚类中心,计算标准的测度函数,直到达到最大迭代次数,则停止,确定最优的聚类中心。在确定最优的距离中心距离使用的算法就是欧式距离,差的平方和的平方根进行计算,比较,最终得到最优距离。
k-means现在好多都应用于对文本信息进行分类,例如新闻的分类,这样可以大大减少人工成本。
有多长时间去熟悉工作流程
特征工程
特征是指从数据中抽取出来对结果有用的信息,特征工程是使用专业背景和技巧处理数据,使得特征能在机器学习的算法上发挥更好的作用
特征工程的重要环节就是对数据进行清洗,将不真实的数据进行替换或者删除,或者通过组合或者统计属性进行判定,例如一个人的信息备注国家为美国,但是经常使用中国的ip进行登录,这就可以将这个人的归属地判定为中国。
在数据进行采样时,有时会遇到不同样本数量不均衡的情况,例如电商用户点击、买过的商品和没有点击和买过得商品。大多数的模型对正负样本是比较敏感的,比如逻辑斯蒂回归,如果有99个正样本,1个负样本,那预测时全部预测正,准确率也可以达到99%,这不能反映模型的好坏。对于这种问题,就需要分情况进行采取操作,当样本数量很大的时候,就可以将数据进行切片处理,使得样本数量均衡;数据量不大的情况就需要采集跟多的数据,或者采用oversampling,增加数据量少的一方,再或者更改loss function,例如增加样本量大的样本惩罚权重。
机器学习评价指标
AUC
auc是一个模型评价指标,用于二分类模型的评价。auc是area under curve(曲线下的面积)这条曲线就是ROC曲线,roc称为受试者工作特征曲线,通过计算两个指标的值tpr,fpr (True Positive Rate=TP/(TP+FN),代表将真实正样本划分为正样本的概率 False Positive Rate=FP/(FP+TN),代表将真实负样本划分为正样本的概率 )将tpr作为纵轴,fpr作为横轴作出roc曲线
在机器学习中很多模型对于分类问题的预测结果大多是概率,即属于某个类的概率,如果计算准确的话,就将这个概率转化为类别,这就需要设置一个阈值,概率大于某个阈值就属于一类,概率小于等于阈值就属于另一类,而这个阈值就直接影响了准确率的计算。AUC就是将这几个阈值取平均值,在应用到分类中,这样得出的结论是要比准确率评价中肯。
TensorFlow深度学习
Tensor(张量)意味着N维数组,Flow(流)意味着基于数据流图的计算,TensorFlow为张量从流图的一端流动到另一端计算过程。TensorFlow是将复杂的数据结构传输至人工智能神经网中进行分析和处理过程的系统。
支持CNN(卷积神经网络)、RNN(循环神经网络)和LSTM(长短期记忆网络)算法,是目前在 Image,NLP 最流行的深度神经网络模型
TensorFlow是用数据流图技术进行数值的计算,在有向图中,节点通常代表数学运算,边表示节点之间的某种联系,它负责传输多维数据(Tensors)。
线性回归,使用TensorFlow进行线型回归的数据预测中,创建tensorflow损失函数cost(主要使用最小二乘法)以及梯度下降优化器optimizer(梯度下降法),使用forin进行迭代,最后w和b的值接近最佳
梯度下降,可以将其理解为斜率,要求一个函数的最小值,就可以对其求导,当导数为0 的时候,求得的解就是最小值时的解,给这个梯度一个步进值和初始值,就开始求导,当导数越接近0梯度之间的差值就越小,当差值几乎为0时,就可以得到最小的值
逻辑斯蒂回归,使用的有softmax、交叉熵、
softmax:将数值放入到带入到以自然底数e为底的函数中,将数据进行归一化,同时所有的和为1