机器学习

西瓜书笔记01:logistic回归、决策树

2018-08-15  本文已影响0人  叫我e卵石

logistic回归

@[回归|分类|极大似然|泰勒级数|牛顿法|Hessian矩阵|sigmoid函数]

线性模型可以用来回归学习,若要做分类就要找一个单调可微函数将分类标记y与线性回归预测值联系起来。

如何求w和b?

牛顿法利用泰勒级数公式,求经过(x0,f(x0))点斜率为f^{'}(x_{0})的直线与x轴交点。即f(x)=f(x_{0})+f^{'}(x_{0})\Delta x+...=0x_{n+1}-x_{n}=-\frac{f(x_{n})}{f^{'}(x_{n})}。计算hessian矩阵开销大,所以有了拟牛顿法。

优缺点

优点:计算代价不高,易于理解和实现。
缺点:容易欠拟合,分类精度可能不高。

sklearn实现

# logistic分类
import pandas as pd
import numpy as np
from sklearn.linear_model import LogisticRegression
from sklearn.model_selection import train_test_split,cross_val_score
#from sklearn.metrics import roc_curve #二元分类
#import matplotlib.pyplot as plt

# txt也可以用read_csv读成dataframe,.loc取出需要的列 行数表示到某一行
iris = pd.read_csv('E:\\study\\data\\iris.txt',sep=',',skiprows=[1])
X = iris.loc[:,['sepal length','sepal width']]
y = iris.loc[:,['class']]

X_train,X_test,y_train,y_test = train_test_split(X,y,test_size=0.3)
logreg = LogisticRegression(C=1e5)
logreg.fit(X_train,y_train)
#y_pred = logreg.predict(X_test)
scores = cross_val_score(logreg,X_train,y_train,cv=5)
#scooing='recall' 召回率
print '准确率:%s' % np.mean(scores) # 0.78

二元分类模型评估

图片1.png
精确率|查准率 为预测为正例的里面真正例的比例, P=\frac{TP}{TP+FP}。
召回率|查全率为真实为正例的里面真正例的比例, R=\frac{TP}{TP+FN}。
ROC曲线 ROC的纵轴为真正例率,横轴为假正例率,分别为:
TPR=\frac{TP}{TP+FN},
FPR=\frac{TP}{TP+FN},

Tips

决策树

@[信息熵]

划分属性

ID3决策树划分属性的准则为信息增益。
C4.5决策树的准则为增益率。
CART决策树使用基尼系数来选择划分属性,使划分后基尼指数最小。

属性值缺失怎么办?

数据集D关于属性a的信息增益公式可推广为
Gain(D,a)=\rho *Gain(\widetilde{D},a) =\rho *(Ent(\widetilde{D})-\sum_{v=1}^{V}Ent(\widetilde{D}^{v}))
其中,\widetilde{D}表示D中属性a上没有缺失值的样本子集,\rho为无缺失值样本所占的比例,a有v个取值。

优缺点

优点:易于理解和解释,数据准备简单。
缺点:对各类别样本数量不一致的数据,信息增益结果偏向于更多数值的特征。结果不稳定,可以使用集成决策树解决。

上一篇 下一篇

猜你喜欢

热点阅读