机器学习笔记

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改进了预测准确率,但损失了解释性;
重点是构建树,两个随机性(与随机森林名称对应):

  1. 对于每颗树,利用bootstrap sample方法,随机有放回地从训练集中的抽取N个训练样本,作为该树的训练集;(注意会有重复样本)
  2. 假设特征维度为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

  1. 存在非线性逻辑回归吗?是否将目标函数改为高次然后训练就行了?如z=w0x0^2+w1x1+w2?
  2. 逻辑回归和线性回归、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/ )

  1. feature engineering is manually designing what the input x’s should be
  2. 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.
  3. Better features means better results;Better features means simpler models;Better features means flexibility;
  4. 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?
  5. 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折交叉验证法;)
(留一法和留出法区别?后者和交叉验证法并列;前者属于交叉验证法;)


打赏一下作者:
机器学习笔记_第1张图片

你可能感兴趣的:(机器学习,人工智能)