清华大学机器学习课程
任何对机器学习有兴趣,想了解基本原理,前沿课题和应用实践的大学计算机系或相关科系的高年级本科生,研究生,以及青年教师,和在高科技企业中从事相关工作的技术人员。
余凯博士与张潼教授
Day 1
lecture 1: Introduction to ML and review of linear algebra, probability, statistics (kai)
lecture 2: linear model (tong)
lecture 3: overfitting and regularization (tong)
lecture 4: linear classification (kai)
Day 3
lecture 9: overview of learning theory (tong)
lecture 10: optimization in machine learning (tong)
lecture 11: online learning (tong)
lecture 12: sparsity models (tong)
Day 5
lecture 17: matrix factorization and recommendations (kai)
lecture 18: learning on images (kai)
lecture 19: learning on the web (tong)
lecture 20: summary and road ahead (tong)
第1课:绪论课
第2课:线性模型
1. 怎样从训练数据估计线性模型的参数?即截距和斜率。
3. 模型中2个参数的重要性怎么估计?
更广义的线性模型并不一定是一个线性方程。只是其参数可能是线性的。线性模型能够模拟非线性函数。
特征向量元素属性的重要性评价常见的有以下2种方法:第一是抽掉一个特征想,然后计算其残差变化值与全部特征都用上的比值,所得到的分数为F-score,F-score越大,说明该属性越重要。第2种方法是采用t分布来假设检验得到Z-score,即假设对应特征属性不存在(即其值为0)时,出现样本数据的概率为Z-score,如果Z-score越大,说明该属性越不重要。
Regularization中文意思是规则,指的是在overfitting和underfitting之间做平衡,通过限制参数空间来控制模型的复杂度。测试误差和训练误差之间差一个规则项,其公式为:
模型越复杂说明模型越不稳定,学习到的目标函数越不光滑,也就越容易over-fitting。所以需要控制模型的复杂度,一般来说有2种方法,即减少模型中参数的个数或者减小参数的空间大小,目前用得最多的就是减小参数的空间大小,是通过规则项达到的。规则项的引入同时也需要引入一个调节的参数,该参数的大小一般通过交叉验证获得。如果规则项是2次的,则也称为ridge回归,规则项是一次的则称为lasso回归。Ridge回归的优点是解比较稳定,且允许参数的个数大于样本的个数。Lasson回归的优点是有稀疏解,不过解不一定稳定。
第4课:线性分类器
据余老师讲,从06年开始,人工神经网络又开始热起来了,主要体现在deep learning领域。
当数据为大样本数据时,用线性SVM模型比较好。
RKHS表示定理:即模型的参数是在训练样本的线性子空间中,是训练样本的线性组合。这不仅适用于svm,对其他的模型,比如感知机,RBF网络,LVQ,boosting,logistic回归等模型都成立。
逻辑回归和svm的区别只是loss函数的不同,logstic回归的loss函数为logstic函数,核svm的loss函数为hinge loss。两者有着相同的性能,逻辑回归是带概率的输出,更容易用于多分类问题。不过目前,这2种方法都是旧方法了。
因此我们在设计一个模型时,需要考虑采用什么样的loss函数?采用什么样的基函数h(x)?h(x)是有限维的还是无限维的?是否需要学习h(x)?用什么样的方法来优化目标函数,QP,LBFGS,还是梯度下降等?
参数模型和非参数模型的区别不是看模型中是否有参数,所有的模型都是有参数的,非参数模型是指随着样本数的增加,其模型中的参数的个数也跟着增加。反之就为参数模型了。常见的非参数模型有高斯过程,核svm,dirichlet过程等。
模型选择在实际应用过程中非常有用,一般把与模型有关的数据分为3部分,训练数据,验证数据和测试数据,如下图所示:
其中训练数据和验证数据都是已有的样本数据,即已观察到了的数据。测试数据是未来实际应用中产生的数据,是事先不知道的。
模型选择问题就是说怎样验证一个模型是否好。模型的好坏最终是要看它在测试数据集上的表现。因此在未观测到测试数据时,我们只能用验证数据集来代替它进行测试。一般采用的方法为交叉验证,比如说LOOCV,即留一法交叉验证,类似的还有k折交叉验证。交叉验证的主要目的是防止训练出来的模型过拟合。但是在当今由于数据都是海量的,交叉验证方法使用越来越少了,因为如果训练数据集非常大的话,一般不会产生过拟合现象。
相关资源