最近,Cousera公开课上又多了一门优质的ML课程,尤其对于华语圈的朋友是学习机器学习的福音。由于本人之前对ML有一定的学习和理解,所以从一个观察者or评论者的角度,来看林老师讲的ML课程,客观的评价是,讲的非常清楚,没有国内大学ML相关课程的照本宣科,问题的引入、算法的描述以及推理都很清楚,非常值得好好学习,不管是刚接触ML的朋友,还是有一定ML经验的朋友。
本次Machine Learning Foundations课程主要沿着四个大问题构成的主线来阐述机器学习的,四个大问题分别是:① 何时机器能够学习?② 机器为什么能够学习?③ 机器该如何去学?④ 怎样能让机器学的更好?
第二讲:Learning to Answer Yes/No
本讲主要是使用感知机学习算法(PLA)来解决信用卡是否发放问题?一个典型的Binary Classification问题。
1. Perceptron分类器的构成
就信用卡二分类问题,输入x是用户的特征,用向量表示,x=(x1, x2, ..., xd)
输出y:{+1(approve), -1(deny)}
如何计算? compute a weighted 'score' 使之满足:① approve credit if ∑w'x > threshold; ② deny credit if ∑w'x < threshold;
计算公式:h(x) = sign((∑w'x) - threshold); 其中sign()是符号函数, h是由参数向量w和阈值threshold来确定,不同的w和threshold有不同的h,因此h构成了Perceptron Hypothesis Set。
将计算公式写成向量形式,其中x0=1,最后可写成h(x) = sign(w'x), 每一个w决定了一个假设h。
2. Perceptron如何从H中选择g
课程中举了一个特征向量是二维的例子, 分类器是h(x) = sign(w0 + w1x1 + w2x2), 假设线性可分;
perceptron <==> linear(binary) classifiers
H是所有可能的perceptron, 因为线性可分,每一个perceptron是对应一个lines或者hyperplane,由w确定。
我们想让g≈f(ideal unknown formula), 那我们能做的是至少在已有的data中,使得g≈f,理想的g(xi) = f(xi) = yi;
我们知道假设空间H中的假设有无数个,我们该如何找到一个假设g能更好的接近f,即更好的拟合数据,那不妨先初始化一个g0, 然后在data中去修正g0犯的错误。
3. Perceptron Learning Algorithm
学习的过程就是训练参数w的过程,最终使得w对应的lines/hyperplane能将两类数据分开。
首先初始化w0, 然后循环以下两步,直到no more mistakes
① 寻找w(t)分类错误的点(xi(t), yi(t)), 满足 sign(w(t)' * xi(t)) != yi(t)
② 尝试着修正错误,通过w(t+1) <--- w(t) + yi(t) * xi(t);
4. 关于PLA的一些问题
(1). 学习算法真的可以停止吗?(2). 在data内,g约等于f可能实现,那data之外的数据该如何判定?
解决以上问题,PLA必须要满足的条件是,data必须线性可分(linear separable),唯有如此,算法才有可能halt。
但是假设data线性可分,PLA可否保证总能halt?yes
课程中通过引入w(f)来证明了算法的收敛性(再此略),并给出了循环次数T的解法
5. 关于更多的PLA
之前PLA需保证线性可分且能纠正错误。
但是关于数据不能事先判定其一定线性可分啊;同时无法确定何时算法结束。
另外之前假设数据无噪声,但实际中用的都是noisy data,
因此改变之前的学习算法,容忍Noise的出现,确保其犯错的可能性降到最低,how to do?
w(g) <---- argmin ∑ [y(i) != sign(w'x(i))]