统计学习方法学习笔记
感知机模型
感知机模型是线性二分类模型,输出Y取二值-1,+1
y = sign(w*x+b)
分类超平面 w*x+b = 0,超平面因为输入是多维特征
loss:
1.误分类点的个数:不好,不可导,不易优化
2.误分类点的到超平面的距离,常用
3.感知机模型loss可计算至0,线性平面将两类完全分开
学习过程
1.梯度下降,每次只随机选取一个误分类点
2.对loss求导,简单线性求导:
w = w+learning_rate * yx
yx为对x的偏导
b = b + learning_rate * y
y为loss对b求导
loss原则:大于零,连续可导
注意
为了得到唯一超平面,需对分离超平面增加约束条件,即线性支持向量机?
训练集不可分时,感知基学习算法不收敛,迭代结果会发生震荡
误分类点数k
k <= (R/γ)^ 2
其中:R是样本最大值L2范数
γ是比样本到超平面最短距离还近的一个点
所以样本距离超平面越近,迭代次数越多
感知机算法另一种形式:对偶形式
计算过程与感知机模型类似,另一种形式
∵ w = w+learning_ratenixi
b = b+learning_rate*yi
替换w,b即得到感知机的对偶形式。
对偶形式学习时计算Gram矩阵,即 xi 与 xj 的内积(所有向量内积)
感知机扩展学习方法
包括口袋算法、表决感知机、带边缘感知机等。
每日一学
AUC函数计算:
由model得到二分类的y_pred,提取为“1”的列预测结果计算AUC
利用sklearn中的metrics
```python
from sklearn import metrics
y_pred_model = model.predict(x_test_scaled)
print(type(y_pred))
y_pred = y_pred_model[:,1]
aucs = []
fpr,tpr,thresholds = metrics.roc_curve(y_test,y_pred,pos_label=1)
print(fpr,'\n','\n',tpr,'\n','\n',thresholds)
aucs.append(metrics.auc(fpr,tpr))
print(np.around(np.average(aucs),decimals=5)*100,'%')