logistic回归
@[回归|分类|极大似然|泰勒级数|牛顿法|Hessian矩阵|sigmoid函数]
线性模型可以用来回归学习,若要做分类就要找一个单调可微函数将分类标记y与线性回归预测值联系起来。
如何求w和b?
-
二分类任务中,sigmoid函数即可将预测值z转换为0/1值。其中,sigmoid function:。将线性模型代入,即为。
-
先算再得。令y为后验概率估计p(y=1|x),则。赋值法可得,
-
极大似然估计w,b,最大化
再根据牛顿法解出最优解。
牛顿法利用泰勒级数公式,求经过(x0,f(x0))点斜率为的直线与x轴交点。即得。计算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精确率|查准率 为预测为正例的里面真正例的比例,
召回率|查全率为真实为正例的里面真正例的比例,
ROC曲线 ROC的纵轴为真正例率,横轴为假正例率,分别为:
Tips
- logistic回归广泛应用于流行病学,如判断哪些因素是致病的关键因素,判断得某些病的概率等。
- 一般来说,拓展到多分类问题,OneVOne比OneVRest开销更小。
- 类别不平衡学习的基本策略——“再缩放”,常用SMOTE算法在少的类别中过采样。
决策树
@[信息熵]
划分属性
ID3决策树划分属性的准则为信息增益。
C4.5决策树的准则为增益率。
CART决策树使用基尼系数来选择划分属性,使划分后基尼指数最小。
属性值缺失怎么办?
数据集D关于属性a的信息增益公式可推广为
其中,表示D中属性a上没有缺失值的样本子集,为无缺失值样本所占的比例,a有v个取值。
优缺点
优点:易于理解和解释,数据准备简单。
缺点:对各类别样本数量不一致的数据,信息增益结果偏向于更多数值的特征。结果不稳定,可以使用集成决策树解决。
网友评论