学习理论:
看完NG的公开课之后,最大的感触就是,所谓经验风险最小化就是指训练出来的分类器可以尽可能的将正负样本进行分隔,SVM和Logistic regression,分别是从直观的分隔角度和概率的角度对经验风险最小化进行的近似。
VC维将样本数量和特征数量进行了约束,让人们在进行算法调试的时候对特征数量有一个大概的估计。
对于一个特定的机器学习问题,一定要深入地去挖掘学习问题的本质,才能理解所用的概率模型和特征是否达到最优。例如:当学习算法效果不好的时候,先判断是方差还是偏差,再判断优化算法是否收敛,优化目标是否合适。
参数的选择可以从交叉验证的方式进行估计,特征的选择包括启发式的前向搜索和后向搜索,再有就是根据特征和类别之间的概率相关性进行特征的选择。
聚类:
通过自己手敲,K-means和GMM,对于聚类有了比较深的感触!K-means是通过简单粗暴的计算各个特征之间的欧氏距离来计算每个样本属于哪一类,通过迭代计算类中心和每个样本属于哪一类,达到最终的收敛;GMM作为EM的一种应用,给每一种类赋予概率的意义,达到了组建任意形状概率分布的目的。
EM的重要性,大概就在于能够使得最大似然估计变成一种可以实际应用的优化解法,因为不是所有的样本都具有书上说的标准分布规律,实际情况下很有可能,样本点的分布是一种奇怪的分布(引用NG的话),这样的话你用标准分布去进行假设,就使得拟合出来的效果不会特别好。使用GMM之后,通过特征各个维度之间相似性变化,可以实现高斯分布进行任意形状的变化,这样就能更贴切的拟合样本点的概率分布。
还有就是对于协方差矩阵的理解,协方差矩阵是一个N*N的方阵,N是特征的维数,对角线表示维度自己的方差,其它代表各个维度之间的相关性,所以是个对称矩阵,例如,(1,2),代表,特征第一个维度和特征第二个维度之间的相似性,(2,1)代表特征第二个维度和第一个维度之间的相似性,(1,2)=(2,1)。特征各个维度之间的相似性是高斯分布进行形态变化的原因。协方差矩阵是个奇异矩阵,代表它是非满秩状态,特征值包含0。关于协方差矩阵的性质和它在机器学习里面的意义还有待进一步学习。
再有就是对于C++和Opencv的感触,K-means写了一个小时,调了两个小时,写GMM代码花了一天时间,调bug花了两天时间,期间出现各种错误,有逻辑上的,有对C++容器理解不透彻,还有Mat类运用不熟练,还需要更多的敲代码。