kNN计算距离测试样本最近的k个训练样本,统计k个样本类别的出现频率或次数,返回最大的那个类别作为该样本类别。其中距离采用欧式距离。没有显式的训练过程,是‘惰性学习’的代表。
(注意有两个排序,第一个是对距离排序,从小到大,选择前k个;第二个是对返回的类别计数容器,从大到小,选择最大的作为最终类别;另外,对于返回的k个样本,认为同等重要,即当k为20,第1名和第20名,都是一票)
决策树的核心是递归创建树、建立分类器,而每次选取哪个特征作为判断模块需要量化的方式度量,因划分目的是“无序”变“有序”,因此采用信息熵,每次选择信息增益最大的特征(原始数据集的信息熵与划分后的信息熵的差越大越好,划分后的多个数据集用比例作为系数相乘相加),是一种贪心算法,其中非叶子节点是label或者特征,叶子节点是最后的class或分类值,可以不是二叉树(取决于特征的取值种类),也可以不是二分类(取决于数据集的分类数,例如yes、no、maybe),这种贪心使得决策树的高度最低,决策效率最高,决策树分为id3 c4.5 cart等,其中c4.5使用增益率,cart使用基尼指数(cart既可以用来分类,也可以回归)
(注意左右子树互不干扰,假设有ABCD四个特征,根节点用特征B,左子树用特征C划分,右子树可以用C划分,也可以先用其他特征划分,一旦用了某特征,就将该特征从原矩阵去除,保证不会再次利用)
(构造的决策树的叶子节点个数不一定和训练集类别数一样,比如yes、no、maybe,可以重复出现在不同叶子节点,但是种类是一样的)
(更直观的说,选择一个特征进行划分,是看根据该特征值划分后的几个部分,属于同一类的倾向有多少,越属于同一类越好,即混乱程度越低越好)
(递归结束条件:所有特征遍历完,或每个分支下所有样本属于同一个分类)
(如果特征全部使用完,但类别仍然不是唯一的,此时将采用多数表决的方式定义该叶子节点的分类)
(创建子树时,子树的数目取决于以该特征划分时,不同的取值数目,通过用set得到)
(id3使用熵Entropy,c4.5使用信息增益Information gain,后者也是用熵定义的,并支持连续的特征)
(id3可能‘收敛’到局部最优点;可能‘过拟合’,树越小越好)
https://en.wikipedia.org/wiki/ID3_algorithm
https://en.wikipedia.org/wiki/C4.5_algorithm
随机森林是一个包含多个决策树的分类器;它的本质属于机器学习的一大分支——集成学习;虽然利用bagging改进了预测准确率,但损失了解释性;
重点是构建树,两个随机性(与随机森林名称对应):
- 对于每颗树,利用bootstrap sample方法,随机有放回地从训练集中的抽取N个训练样本,作为该树的训练集;(注意会有重复样本)
- 假设特征维度为M,对每颗树,随机从M个特征中选取m个特征子集
随机性的引入,使得随机森林不容易过拟合;并且有很好的抗噪能力(如对缺省值不敏感)
如何选择最优的m是随机森林唯一的参数;
https://en.wikipedia.org/wiki/Random_forest
http://scikit-learn.org/dev/modules/ensemble.html (集成学习)
https://www.stat.berkeley.edu/~breiman/RandomForests/cc_home.htm#inter
https://www.cnblogs.com/maybe2030/p/4585705.html
https://www.cnblogs.com/fionacai/p/5894142.html
knn、决策树和朴素bayes默认支持多分类!!!
朴素bayes的核心是,根据训练数据和标记,确定每个元素对“好”的贡献或概率和“坏的”贡献或概率的向量,基于这样的认识,测试数据代入即可求解是“偏好”还是“偏坏”
(贝叶斯概率和频数概率;前者基于先验知识和逻辑推理,后者不考虑;贝叶斯是对条件概率的变形;贝叶斯决策理论是指计算类别的条件概率,哪个高就属于哪个类别;利用已知的3个概率计算未知的1个概率;)
(朴素bayes的假设:1. 特征互相独立,如文本分类中单词出现与相邻词无关(有时并不成立);2. 每个特征同等重要(有时并不成立),但据说实际效果不错 )
(事情还没发生,求这件事情发生的可能性的大小,是先验概率。事情已经发生,求这件事情发生的原因是由某个因素引起的可能性的大小,是后验概率。)
(关于频率主义学派和贝叶斯学派区别,参见 https://blog.csdn.net/u012116229/article/details/24636001 、https://www.zhihu.com/question/20587681)
(两个学派最大区别:频率派认为参数客观存在,不会改变,虽然未知,但却是固定值;贝叶斯派则认为参数是随机值)
(频率学派最常见的就是最大似然估计(MLE);此外还有似然学派、折衷经验贝叶斯;)
(问题:机器学习有没有用到频率学派?答案:整个概率论都用了频率学派,更别说机器学习)
(multinomal event model比普通贝叶斯模型更好,因为考虑单词出现次数,但都没有考虑词序)
(贝叶斯概率也属于指数分布族)
训练过程就是对样本简单的统计(矩阵运算),计算出P(w|c)(注意这里是每个词wi,所以是向量,对于c0和c1各有一个向量),同时计算出P©(即统计正负样本各占总样本多少),没有优化,也没有梯度和sgd;
测试阶段就是,首先把要分类的句子表示为向量(如不累计词频的句子向量,非0即1),结合训练得到的P(w|c)、P©,根据贝叶斯公式分别计算P(w|c0)*P(c0)和P(w|c1)*P(c1),然后看哪个大,就属于哪个类别,
注意无需计算P(w),因为分母会约去,另外由于对训练返回的概率进行了log化,所以测试阶段直接使用内积(即各个词的条件概率直接相加,这个也和P(w|c)=πP(wi|c)对应,即累乘变累加);此外,为了避免P(wi|c)=0
导致整个P(w|c)=0,训练时使用了拉普拉斯平滑;
可以把词集模型(基于伯努利)改为词袋模型(基于多项式),即考虑词频;
判别学习算法和生成学习算法:
常见的生成模型有:隐马尔可夫模型HMM、朴素贝叶斯模型、高斯混合模型GMM、线性判别分析模型LDA、高斯判别分析模型GDA等;
常见的判别模型有:逻辑回归、SVM等;
如果已知样本是高斯分布,那么使用GDA比逻辑回归好(能充分利用样本信息);
https://www.cnblogs.com/czdbest/p/5771500.html
https://blog.csdn.net/matrix_space/article/details/44704241
拉普拉斯平滑是为了对朴素贝叶斯模型,未出现的特征,我们赋予一个小的值而不是0(如分子分母都加1)
LDA(线性判别分析)要点:
LDA能分类,也能降维;是一种经典的线性学习方法;
给定训练样例集,设法将样例投影到一条直线上,使得同类样例的投影点尽可能接近,异样样例的投影点尽可能远离;
LDA的基本假设是自变量是正态分布的;
PCA无需样本标签,属于无监督学习降维;LDA需要样本标签,属于有监督学习降维;PCA选择样本点投影具有最大方差的方向,LDA选择分类性能最好的方向;
https://www.cnblogs.com/pinard/p/6244265.html
https://www.cnblogs.com/engineerLF/p/5393119.html
GDA和GMM啥关系?
前者是监督学习算法,有label,后者是无监督算法,无label,含隐变量用到EM
参见 https://blog.csdn.net/ustceduruixing/article/details/49277319
逻辑回归的核心是求直线的方程(即确定一条直线分割平面,二分类),也就是确定weight向量(sigmoid的参数),用最优化方法(梯度上升或下降),训练后用测试数据代入公式即可判断该数据属于哪个类别;有sgd但没有bp,有学习率衰减,minibatch,收敛,欠过拟合等
(逻辑回归假设数据服从伯努利分布,通过极大化似然函数的方法,运用梯度下降求解参数,来达到将数据二分类目的。)
(二项分布,是重复n次的伯努利试验;当试验次数为1时,二项分布服从0-1分布、“两点分布”、也就是伯努利分布;以概率p和1-p取1和0为值。EX=p,DX=p(1-p))
(逻辑回归采用sigmod作为概率,是在伯努利分布假设和对数几率假设下联合推导过来的;使用MSE代价函数会很复杂,使用对数几率函数很简单,即发生与不发生的概率比率取对数;最大似然估计MLE或参数估计问题)
(高斯分布对应最小二乘法,伯努利分布对应逻辑回归;二者是更广义的Generalized linear model即GLM的特例;指数分布族:多项式分布例如softmax回归、泊松分布等都属于;)
(最大似然函数和普通代价函数的区别,前者是在分布已知但参数未知,比如服从伯努利分布但p未知,利用样本来求分布或概率密度函数,而后者是完全未知,虽然最终都是用最优化方法,后者对样本要求更宽松;一般取对数似然,方便求偏导)
(对数几率假设可这样理解,让ln p/1-p,即样本是1的概率与是0的概率对率,如此取决于样本x,即wx+b,即线性取决于x )
(极大化似然估计要基于所有样本对参数进行估计,这个很关键,只有这样才需要把单个样本的伯努利概率累乘起来)
(为啥极大化似然估计简单粗暴的对概率累乘求极大值就行了,因为我们假设了一个分布,然后已经观察到所有由该分布产生的样本,那么参数取何值能导致这些样本发生的概率最大呢,这就是MLE的道理)
https://baike.baidu.com/item/logistic回归/2981575?fr=aladdin
https://blog.csdn.net/zouxy09/article/details/20319673 !!!
https://blog.csdn.net/hustlx/article/details/51153029
https://www.youtube.com/watch?v=zAULhNrnuL4
https://www.youtube.com/watch?v=gNhogKJ_q7U
注意:一般机器学习或深度学习都会要求数据或样本(包括训练集和测试集)独立同分布,但并没有强调究竟是什么分布(事实上也不知道),但是逻辑回归给人一种‘一句惊醒梦中人’的感觉,它居然主动假设数据必须满足0-1分布;而SVM或其他二分类没有这种要求,那么为啥在比较LR和SVM时,从来没有突出它们的前提区别呢?
逻辑回归可以看作只有一层网络的前向神经网络,并且参数连接的权重只是一个值,而非矩阵。公式为:y_predict=logistic(X*W+b),其中X为输入,W为输入与隐含层之间的权重,b为隐含层神经元的偏置,而logistic为激活函数,一般为sigmoid或者tanh, y_predict为最终预测结果。
参见 https://blog.csdn.net/u013206066/article/details/60146654
- 存在非线性逻辑回归吗?是否将目标函数改为高次然后训练就行了?如z=w0x0^2+w1x1+w2?
- 逻辑回归和线性回归、SVM、神经网络的关联?
在西瓜书中,第3章名为线性模型,3.3节为对数几率回归,即逻辑回归,因此可看出,作者认为逻辑回归是线性的,一般不考虑非线性版本
ML实战中,第8章说,回归一般指线性回归,但也有非线性回归,但作者没有深入讨论;第9章的树回归就是一种非线性回归?还有西瓜书说的:对数线性回归,以及广义线性模型
线性回归一般用最小二乘法(基于均方误差最小化来进行模型求解的方法称为"最小二乘法",欧几里得距离 )?可以使用矩阵的数值求解方法(如linalg.solve),也可以用训练的方法?迭代法和非迭代法
线性回归中还有一种叫局部加权线性回归LWLR,是使用了类似SVM的核的概念,如高斯核,但拟合得到的不是直线,而是曲线;还有lasso回归、岭回归、前向逐步回归
树回归与决策树的关系?id3算法不能处理连续型特征。CART利用二元切分法,能处理连续型特征。回归树是一种既能分类又能回归的树,当作为回归时,它不是线性的,所以可称为非线性回归。
SVM核心,也是最优化方法(带约束条件,拉格朗日乘子法),思想是max(min),即最大化最小间隔(找到最小间隔的点,即支持向量),目标就是求解参数alpha、w、b,确定超平面,然后就能正常的二分类(和逻辑回归类似);其中最著名的实现方法是SMO或Platt SMO;确定目标函数,严格推导发现,最终只和所有点的向量内积有关;和kNN对比,只需保留少量样本,占用内存小
(经典MIT课程 https://www.youtube.com/watch?v=_PwhiWxHK8o )核函数是对于无法直接二分类进行的函数转换,使得可以二分类(用曲线或曲面代替直线或超平面);可以把核函数看成包装器或接口,在高维空间解决线性问题,等价于在低维空间解决非线性问题;把‘内积’替换成‘核函数’叫做核技巧;径向基核函数(以及高斯版本)是常见的核函数;另外一种SVM实现:v-SVM(考虑C的优化)
(kkt与拉格朗日乘子法参见 https://www.cnblogs.com/ooon/p/5721119.html )
(吴恩达SVM使用了对偶方法求解,即max(min)变为min(max),也提到kkt,最后求出w和b的公式,也是内积的和)
(任何线性分类器,若能写成内积的形式,都能用核函数替换它,如逻辑回归等)
(soft margin解决非线性可分问题;坐标下降法,是一种非梯度优化算法,每次只更新一个参数)
(SMO每次同时更新两个alpha,迭代以满足kkt条件)
支持向量回归(Support Vector Regression,简称 SVR)是SVM的回归版本?
adaboost算法核心,组合多个弱分类器构建强分类器(其中弱分类器最流行的是单层决策树,它是一种决策树的简化版本,只基于单个特征,只有一次分裂过程,核心是一个三重循环),弱分类器之间的样本权重D通过迭代得到(后一个D依赖前一个D计算得到,D是概率分布向量,所有样本的元素加起来为1),可以使用任意其他分类器,因此,书中难度最大的buildStump方法完全可以被代替。注意:D是样本权重,alpha是弱分类器的权重。训练得到最后的分类器数组后,依次代入样本计算累加得到最后的分类向量(使用sign得到符号向量,1或-1)
(adaboost是Adaptive Boosting的缩写,是一种集成方法或元算法;)
(bagging方法指有放回抽样构造S个数据集,再将某个算法作用于每个数据集,随机森林就是其一)
(Boosting不同弱分类器使用相同的数据集,即不存在从数据集采样的过程)
(Boosting与bagging其他不同在于,Boosting模型是串行的,bagging模型是并行的;boosting加权求和,权重不相等,bagging权重相等;boosting关注错分,基于错误提升分类器;)
(Boosting与bagging相同点,内部分类器类型都是一样的)
(adaboost中使用单层决策树作为弱分类器,事实上,任意分类器都可以;作为弱分类器,简单分类器的效果更好)
(adaboost默认是二分类;否则需要像SVM那样修改;)
(对每个样本赋予权重,所有样本构成一个权重向量D,初始值相同,上一次对的样本权重下降,错的样本权重提高;)
(为每个分类器赋予权重alpha取决于错误率,具体是正确率与错误率的比值对数)
(单层决策树的构造很关键,是根据特征、步长、符号的不同构造的不同决策树,并选择加权错误率最低的;即虽然作为弱分类器,也要选错误率最低的)
(AdaBoost算法训练时,每次迭代调用buildStump构造最佳单层决策树,计算alpha和D,直到错误率为0退出迭代;不过这种以训练错误率降为0为目的的训练是挺奇怪,不考虑过拟合?)
解决非均衡问题的三种方法
(1. 进行欠抽样和过抽样,对数据进行改造,前者删除样本,后者复制样本,二者结合效果更好;过采样的一种方法是加入插值点)
(2. 叫代价敏感的学习,cost-sensitive learning,如基于代价函数对权重向量D进行改造)
(3. 混淆矩阵、PR曲线、ROC曲线,调节分类器阈值)
https://en.wikipedia.org/wiki/AdaBoost
http://scikit-learn.org/dev/modules/ensemble.html
Gradient boosting(GB)、GBDT、xgboost区别:
gbdt全称梯度下降树,以决策树(CART)为基学习器的GB算法;是GB和DT的结合;
xgboost扩展和改进了GDBT,算法更快,准确率更高;
xgboost的基学习器除了CART也可以是线性分类器;
gbdt在优化时只用到一阶导数,xgboost对代价函数进行二阶泰勒展开;
https://en.wikipedia.org/wiki/Gradient_boosting
https://en.wikipedia.org/wiki/Xgboost
https://xgboost.readthedocs.io/en/latest/
https://www.cnblogs.com/ModifyRong/p/7744987.html
https://www.cnblogs.com/wxquare/p/5541414.html
https://www.zhihu.com/question/41354392/answer/98658997
树回归或者CART算法,与一般决策树不同,是一种二元切分或二叉树,它既能分类,也能回归。树剪枝是为了避免过拟合,分为预剪枝和后剪枝(也是递归),可以同时使用效果更好。回归树节点是单个值,模型树节点是线性方程,模型树利用分段线性函数的思想。通常,有效性:模型树>回归树>标准线性回归,CART作为回归算法未用到基尼指数?
k均值聚类,寻找k个族(族内相似,距离最近),可以使用任意距离度量方法,评价指标可以为SSE(误差平方和)。普通k均值算法存在收敛于局部最小值的问题,因此推出二分k均值算法,思想是从一个大族,一分为二,依次划分,直到达到指定的族数目或质心不再改变。此外还有层次聚类等算法。
(聚类或无监督没有训练过程?词向量经常说训练词向量。。)
(kmean有局部极小值的说法?它的目标函数是SSE?没有用到梯度、sgd;虽然普通kmean最大问题就是收敛于局部极小值)
(可以使用SSE进行后处理,即对较大SSE的族继续划分为2个族,为保持族数不变,需要合并某2个族;但是不如直接用二分kmean算法)
GMM算法(做clustering):
和kmean一样,都属于EM算法;数据属于哪个Component的概率是一个隐变量;GMM的K个Component就对应K个cluster;
一种流行做法是先用K-means得到粗略结果,再将其作为初值用GMM细致迭代;
https://blog.csdn.net/u014665013/article/details/78970184
https://www.cnblogs.com/zhangchaoyang/articles/2624882.html
HMM算法(隐马尔可夫模型):
从名字看出,是含有未知参数的马尔可夫过程,它的状态不能直接观察到,但能通过观测序列观察到;
两个假设:1. 齐次马尔科夫链假设,即任意时刻的隐藏状态只依赖于它前一个隐藏状态 2. 观测独立性假设,即任意时刻的观察状态只依赖当前时刻的隐藏状态;
一个HMM模型,可以由隐藏状态初始概率分布Π, 状态转移概率矩阵A和观测状态概率矩阵B决定,由一个三元组λ表示如下:λ=(A,B,Π);
HMM模型有三个基本问题:1. 评估观测序列概率(easy) 2. 模型参数学习问题(hard,使用Baum-Welch算法,包含EM算法) 3. 预测问题(middle,根据观测序列,求最可能的状态序列,使用Viterbi算法)
https://www.cnblogs.com/pinard/p/6945257.html
https://www.cnblogs.com/skyme/p/4651331.html
(HMM基于马尔可夫过程,后者是一类随机过程;满足马尔可夫性或无记忆性的随机过程,叫做马尔可夫过程;青蛙跳跃、布朗运动等都可视为马尔可夫过程)
CRF算法(条件随机场算法):
遵循马尔可夫性的概率图模型,结合了最大熵模型和隐马尔可夫模型的特点,是一种无向图模型;
CRF模型是最大熵模型的sequence扩展、HMM的conditional求解;HMM是有向图,CRF是无向图;
应用场景:分词、词性标注和命名实体识别等序列标注任务;
HMM是生成式模型?CRF是判别式模型?
CRF基于逻辑回归(是其时序版本,都无向),HMM基于朴素贝叶斯(是其时序版本,都有向);
CRF和LSTM怎么结合的?如biLSTM-CRF,参见:
https://www.jianshu.com/p/97cb3b6db573、
https://www.zhihu.com/question/46688107?sort=created、https://www.zhihu.com/question/46688107/answer/136928113
https://www.cnblogs.com/en-heng/p/6214023.html
https://en.wikipedia.org/wiki/Conditional_random_field
https://www.zhihu.com/question/35866596/answer/236886066
马尔可夫随机场MRF:
随机场就是随机过程在空间上的推广;随机过程的基本参数是时间变量,随机场的变量是位置向量;MRF就是空间上的马尔科夫链;
相比之下,有向图模型也叫贝叶斯网络;
MEMM,即最大熵马尔科夫模型,是判别式模型,也是有向图
机器学习模型和概率图模型的区别:
ML models通过直接预测得出label;Sequential models是给每个token预测得出label还没完,还得将他们每个token对应的labels进行组合,具体的话,用viterbi来挑选最好的那个组合。
EM算法:
EM要解决的问题比MLE多了一个隐变量,如假设有一些样本,四川人和东北人的身高,已知各自服从高斯模型,估计均值和方差,但不清楚每个样本来自哪个类别,就不能直接用MLE做,可假设来自四川的概率为theta,这个就是隐变量;
可以先随机初始化隐变量,虽然不能直接最大化目标函数,但可以不断建立下界(E步),然后优化下界(M步);
对凸函数有Jensen不等式;
https://www.cnblogs.com/bigmoyan/p/4550375.html
https://www.cnblogs.com/Gabby/p/5344658.html
https://blog.csdn.net/zhihua_oba/article/details/73776553
https://www.jianshu.com/p/1121509ac1dc
降维技术,主要有PCA、ICA、FA,作为预处理步骤,可以去除噪声、清洗数据,其中PCA最广泛,核心是通过选择方差最大的特征作为第一条轴,第二条与第一条正交且具有最大方差(想象空间一条直线和与它垂直的平面,在该平面选取最大的),该过程一直重复,重复次数为原始特征数目,由于大部分方差都包含在最前面的坐标轴,可以忽略余下的,可以用协方差矩阵解释,协方差矩阵特征向量最大的N个值,就对应N个主成分,可以达到1/100甚至更多压缩比。注意:空值用均值代替比0更合适;
(PCA会把数据从原坐标系转换到新坐标系;选择第一主成分为方差最大的维度,第二主成分为第二大方差的维度,且与第一主成分正交;最后能保证剩下的两两正交?)
(从剩下维度中找同时满足误差最大以及正交的维度,可以认为先直接在正交的里面找误差最大的,或先按误差排序再找正交的,不正交的跳过)
(实际做法是直接利用矩阵运算,计算协方差矩阵的特征向量,选择最大的N个特征向量,最后才转换到新空间)
(注意特征向量本身就是正交的)
(经过PCA分解以后的分量都是正交的,因此是不相关的,但是不能保证独立。)
https://www.cnblogs.com/hadoop2015/p/7419087.html
https://www.cnblogs.com/zy230530/p/7074215.html
(ICA即independent component analysis,用于分离多变量信号)
中心极限定理告诉我们,多个独立的自由变量的和近似服从高斯分布。这是ICA估计的重要依据。
独立一定不相关,不相关不一定独立;
ICA用不相关来估计独立成分,以达到减少参数和简化问题的目的;
找到一个线性变换,使得变换后的结果具有最强的独立性;
一种ICA不适用的情况,那就是信号不能是高斯分布的;(和GMM刚好互补?)
https://en.wikipedia.org/wiki/Independent_component_analysis !!!
https://baike.baidu.com/item/ICA/4972405?fr=aladdin
https://blog.csdn.net/u014485485/article/details/78452820
https://blog.csdn.net/edogawachia/article/details/78886626
https://www.cnblogs.com/Crysaty/p/6137043.html
SVD也是一种降维技术,本质是矩阵分解,发现规律、知识,可以用3个小矩阵对一个大矩阵进行近似,应用:可以帮助推荐系统提高性能,推荐系统采用相似度来衡量,向量之间距离越短相似度越高(余弦、皮尔森、欧拉);可以图像压缩
(推荐系统、图像压缩、信息检索)
(将一个矩阵分解为3个矩阵,中间矩阵是对角矩阵,每个值为奇异值)
(推荐系统中,只有先对大矩阵SVD分解,减少特征空间,才能发现属性之间的相似性,如菜肴之间的相似性或人之间的相似性;而相似性用余弦、皮尔森、欧拉度量)
(信息检索即LSA/LSI,通过对单词-文档矩阵进行分解,就能分析单词之间的相似性以及文档之间的相似性,所以叫潜在语义分析)
(图像压缩是指,假如原图为32x32,利用SVD分解为32x2,2x2,2x32,那么总像素从1024减少为64+2+64,注意,中间矩阵只需要对角元素,压缩比将近10)
(SVD在整个过程中,只是起到矩阵分解的作用,但它的应用却很牛B,但最重要的还是相似性度量吧)
(SVD和PCA一样都是无监督的)
https://en.wikipedia.org/wiki/Singular_value_decomposition
Latent Semantic Analysis 和(Latent Semantic Indexing)是一回事?LSA(LSI)
LSA(LSI)使用SVD来对单词-文档矩阵进行分解;
LSA(LSI)也能用PCA做;
LSI is based on the principle that words that are used in the same contexts tend to have similar meanings.
应用于information retrieval(信息抽取)
https://blog.csdn.net/data_scientist/article/details/51953680
https://en.wikipedia.org/wiki/Latent_semantic_analysis !!!
协同过滤算法:
Collaborative Filtering, 简称 CF;分为基于用户和基于物品;推荐系统冷启动(用户有一个购买记录就可以推荐相似商品了);
https://blog.csdn.net/u012995888/article/details/79077681
https://blog.csdn.net/xiaokang123456kao/article/details/74735992
https://www.cnblogs.com/baihuaxiu/p/6617389.html
https://www.jianshu.com/p/d03fb6d68716
ALS(Alternating Least Squares)算法是基于矩阵分解的协同过滤算法中的一种,它已经集成到Spark的Mllib库中
https://blog.csdn.net/qq_33626989/article/details/82011481
机器学习与数据挖掘的区别?
数据挖掘从已有的历史数据中挖掘、总结知识,这个知识是已经碎片化存在的,和你是否进行挖掘无关。
机器学习同样基于已有历史数据,但不同的是机器学习是从已有的知识中产生新的知识。
线性回归,可以用解析法套公式求解(最小均方误差的无偏估计),也可用最优化方法(代价函数一般是二次函数),使用sgd,但没有bp;最后用相关系数判断好坏(预测值和真实值);局部加权线性回归(LWLR)利用类似SVM的核函数(如高斯核),对附近的点赋予更高的权重;
岭回归是解决数据特征比样本数多的问题,通过在矩阵添加一项使得矩阵非奇异,能够求逆;lasso法、前向逐步回归;
最大熵模型 Maximum Entropy Model
基本思想:所有可能(满足已知约束的条件下)的模型中熵最大的模型是最好的模型;(未知的情况不做任何主观假设)
(和逻辑回归类似,都是对数线性模型?)
https://www.cnblogs.com/ooon/p/5677098.html
https://www.jianshu.com/p/e7c13002440d
https://blog.csdn.net/szq34_2008/article/details/79186664
https://blog.csdn.net/jiaoyangwm/article/details/81276921
什么是特征工程:(参见 https://machinelearningmastery.com/discover-feature-engineering-how-to-engineer-features-and-how-to-get-good-at-it/ )
- feature engineering is manually designing what the input x’s should be
- Feature engineering is the process of transforming raw data into features that better represent the underlying problem to the predictive models, resulting in improved model accuracy on unseen data.
- Better features means better results;Better features means simpler models;Better features means flexibility;
- Feature Engineering is a Representation Problem;feature engineering asks: what is the best representation of the sample data to learn a solution to your problem?
- Feature Engineering is an Art(It is an art like engineering is an art, like programming is an art, like medicine is an art.)
learning theroy:
http://blog.csdn.net/myarrow/article/details/50610411
https://blog.csdn.net/kinbosong/article/details/60874007
https://www.cnblogs.com/Kazusa/p/3500890.html
误差(error)、偏差(bias)、方差(variance)的关系:误差 = 偏差+方差
泛化误差和训练误差啥关系?
(对二分类,有一个混淆矩阵;对于多分类,可以每两两组合,构成多个混淆矩阵;混淆矩阵的4个值和为样本总数!)
召回率也叫查全率(recall),准确率也叫查准率(precision)
准确率就是找得对,召回率就是找得全
准确率就是,这东西就确实是的概率,召回率就是, 它说是,但它漏说了(1-召回率)这么多
准确率和召回率是互相影响的,理想情况下肯定是做到两者都高,但是一般情况下准确率高、召回率就低,召回率低、准确率高,两者都低,那是什么地方出问题了
如果是做搜索,那就是保证召回的情况下提升准确率;如果做疾病监测、反垃圾,则是保准确率的条件下,提升召回
P-R曲线怎么来的?
通过对所有样本按照是正例的概率从大到小排序,第一轮认为只有第一个是正例,其他都是负例,则准确率很高(为100%),而召回率很低(几乎为0);
然后第二轮认为只有前两个是正例,那么准确率会下降,召回率会上升;直到最后,认为所有样本都是正例,准确率达到最低,召回率达到最高(接近1);
(其中排序是根据学习器对样本预测结果进行排序的;)
P-R曲线是对一个分类器或分类算法的衡量?(即一条P-R曲线对应一个分类器或分类算法)
如果A分类器的P-R曲线被B分类器的包住,说明B更好,但若发生交叉,则无法比较;
(若一定要比个高低,可使用mAP或包围的面积进行比较;)
(但面积一般不太好估算,所以才有了平衡点、F1;)
平均准确率mAP其规范的定义如下:(其中P,R分别为准确率与召回率),即P-R曲线包围的面积
mAP=∫P( R )dR,R∈(0,1)
平衡点((Break-Event Point,简称 BEP):
P=R的点,即与直线y=x的交点处,BEP越大性能越好
F1 = 2 * P * R / (P + R) 或 2*TP/(样本总数+TP-TN) ,以及一般形式Fβ
(F1如何比较不同的P-R曲线?因为像map、平衡点都是一条曲线对应一个值,而F1貌似不是一条曲线只有一个值的?)
(因为F1和map、平衡点不是一个来源的,F1不需要‘所有样本按照是正例的概率从大到小排序’,即F1不是通过P-R曲线获得的;)
(F1是直接根据分类器进行一次分类,得到混淆矩阵,从而得到P、R的值;不需要像P-R曲线那样,做那么多次分类!!!)
(事实上,多分类中的宏F1和微F1才是需要多次计算并求平均的指标;)
(Fβ是考虑到不同应用中,查全率和查准率的相对重要性不同,可以设置P、R的偏好,是F1的一般形式;)
ROC全称是‘受试者工作特征’;
(ROC曲线的横纵坐标与P-R曲线不同,它的横坐标是FPR,纵坐标是TPR;计算公式与P、R类似,但稍有区别;)
(FPR代表样本中所有负例被正确识别的比例,TPR代表样本中所有正例被正确识别的比例;二者正相关,即一个越大,另一个也越大;)
(ROC曲线的对角线,即y=x,对应随机猜测;)
(ROC曲线的坐标(0,1)代表最理想情况,即‘所有正例排在负例之前’;注意:这里的排序和P-R曲线的排序一样;)
(与P-R曲线类似,当一个ROC被另一个包住,则后者优于前者;当发生交叉,则很难判断哪个好;此时可用ROC包围的面积即AUC来比较,面积越大越好;)
ROC曲线绘制过程和P-R曲线类似,先将样本预测结果排序,将阈值设为最大,此时所有样本被预测为反例,此时绘制点(0,0),然后依次将阈值设为每个样例的预测值,即依次将每个样例划分为正例;
AUC衡量的是样本预测的排序质量;
代价曲线是指‘将正例预测为负例’和‘将负例预测为正例’的代价不同,从而得到混淆矩阵对应的代价矩阵;
(这块不是重点,不用细究;)
留一法是对学习器进行评估的一种方法,属于交叉验证法的一个特例;
(交叉验证法还包括简单交叉验证法、S折交叉验证法;)
(留一法和留出法区别?后者和交叉验证法并列;前者属于交叉验证法;)
打赏一下作者: