
回归:因变量取连续值。例如一台4核CPU,3G内存的手机,跑分估计会是多少? 分类:因变量取离散值。例如这台手机的性能应分为哪一类 (高性能还是低性能) ?
手机性能与硬件配置表
核心数 | 内存 | 跑分 |
|---|---|---|
1 | 8 | 5020 |
8 | 6 | 200000 |
8 | 4 | 130000 |
8 | 3 | 105000 |
10 | 2 | 30000 |
用回归的方法做分类,可以考虑以下步骤:
关键:阈值取多少合适?

阶跃函数和激活函数对比图
1、Sigmoid函数的数学表达式:
时,
的增大,对应的
值逐渐逼近于1
的减小,对应的
值逐渐逼近于0
2、两个基本性质:
不仅处处光滑可导,而且是任意阶可导的凸函数。
1、思想:基于回归模型做分类
(此处的
示单个样本)
划分为正例或返利
的设计
Sigmoid函数
如果阈值取0.5,可以用于分类。

2、二值分类的基本流程

把一个样本
逻辑回归的函数值
看成是该样本属于正例
的概率值:
一个事件的几率 (odds) 是指该事件发生的概率与该事件不发生概率的比值,即:如果事件发生概率为
,那么该事件的几率等于
。该事件的对数几率 (log odds) 或者 logit (对它取log,即 log it) 函数是:
如果求逻辑回归中正例样本的对数几率,则有:
即:逻辑回归中输出
(正例样本) 的对数几率是输入
的线性函数 (逻辑回归也称为对数几率回归)。
注意另外一个事实:因为非线性函数 (此处是
) 经过一定的变换可以变成线性函数,所以可以把一个非线性问题转化成一个线性问题来处理!
1、最大似然估计 (MLE)
为了下面分析过程的符号统一,把样本分类成正例的概率预测值记为
,则有:
如果已知样本
为正例,即真实的分类标签
,则希望分类的概率预测值
越大越好;反之如果
为反例,即真实的标签
,则希望
越大越好,此时可以将正反例的概率分布统一写成:
其中,
或
。
学习的目标是要求上式中的系数向量
,可以通过最大似然估计来求解。
个样本的最大似然估计 (Maximum Likelihood Estimation) 就是是它们的联合概率分布最大化,即使得右式最大化的系数
就是学习目标:
2、逻辑回归的损失函数
求解公式1等价于求解使对数似然函数最大化的参数向量
:
其中,
或
。
上式也等价于求解使负对数似然函数最小化的参数向量
:
如果令
,则
就是逻辑回归的损失函数,而使
最小化的参数向量
即学习目标。

逻辑回归的损失函数使用了负似然对数函数,而非均方误差函数,原因在于前者是凸函数,存在全局最优解;而后者非凸,可能陷入局部极少值点。
逻辑回归的损失函数
也称为交叉熵损失函数,交叉熵能够衡量两个数据分布的异同程度,在机器学习中就表示为真实概率分布与预测概率分布之间的差异。交叉熵的值越小,模型预测效果就越好。
3、熵增定律及其启示
熵增定律,又称热力学第二定律,指出在一个孤立系统中,如果没有外力做功,熵(代表混乱程度的物理量)总是趋于增加,即系统总是从有序向无序发展。
如果物理学只能留一条定律,我会留熵增定律。——吴国盛 (清华大学的科学史系主任)
如果地球毁灭了,我们怎么能够在一张名片上写下地球文明的全部精髓,让其他文明知道我们曾有过这个文明呢?
吴军老师给出的答案是三个公式:
:代表了数学文明
:爱因斯坦的质能方程
:熵的定义
生命就是对抗负熵的过程。
物质总是向着熵增演化,屋子不收拾会变乱,手机会越来越卡,耳机线会凌乱,热水会慢慢变凉,太阳会不断燃烧衰变……直到宇宙的尽头——热寂。因为事物总是向着熵增的方向发展,所以一切符合熵增的,都非常的容易和舒适,比如懒散。因为所有事物都向着无规律、无序和混乱发展,如果你要变得自律,你就得逆着熵增做功,这个过程会非常痛苦。生命本身就是自律的过程,即熵减的过程。
因为
是参数向量
的非线性函数,导致求解公式2没有解析解,而
对于
又是高阶可导的凸函数,所以可以通过梯度下降法、牛顿法等数值优化的方法求出
的最优解:
梯度下降法迭代求解:
其中,
为
正则项。
正则项系数
是一个超参数,表示对于系数向量的惩罚程度。
sklearn的linear_model模块提供LogisticRegression类用于构建Logistic回归模型。LogisticRegression类的基本语法格式如下:
class sklearn.linear_model.LogisticRegression(penalty='l2', dual=False, tol=0.0001, C=1.0, fit_intercept=True,
intercept_scaling=1, class_weight=None, random_state=None, solver='liblinear', max_iter=100, multi_class='ovr',
verbose=0, warm_start=False, n_jobs=1)1、Logistic回归模型的参数

上面的参数C是正则化系数
的倒数,C值越小正则化越强 (对应
值越大),分类边界越光滑,泛化性能越好 (但训练误差可能变大)。
2、Logistic回归模型的属性和方法


以下两个示例代码中用到的数据集下载地址: 链接:https://pan.quark.cn/s/fbc5e2bb995d 提取码:fUvF
示例1
import pandas as pd
data = pd.read_excel('credit.xlsx')
x = data.iloc[:600,:14].as_matrix()
y = data.iloc[:600,14].as_matrix()
x1= data.iloc[600:,:14].as_matrix()
y1= data.iloc[600:,14].as_matrix()
from sklearn.linear_model import LogisticRegression as LR
lr = LR() #创建逻辑回归模型类
lr.fit(x, y) #训练数据
r=lr.score(x, y); # 模型准确率(针对训练数据)
R=lr.predict(x1)
Z=R-y1
Rs=len(Z[Z==0])/len(Z)
print('预测结果为:',R)
print('预测准确率为:',Rs)
示例2
import pandas as pd
from sklearn.linear_model import LogisticRegression
from sklearn.model_selection import train_test_split
from sklearn.metrics import classification_report
data = pd.read_csv('LogisticRegression.csv')
data_tr, data_te, label_tr, label_te = train_test_split(data.iloc[:, 1:], data['admit'], test_size=0.2)
clf = LogisticRegression()
clf.fit(data_tr, label_tr)
pre = clf.predict(data_te)
res = classification_report(label_te, pre)
print(res)