文章目录

  • 一、数学优化
    • 损失函数
    • SoftMax 损失
  • 二、回归分析
    • 1、最小二乘回归
    • 2、岭回归
    • 3、Logistics 回归
    • 4、Lasso 回归
  • 三、实例
    • 1、Linear Regression
    • 2、Ridge Regression
    • 3、Lasso
    • 4、Logistics Regression

一、数学优化

损失函数

损失函数(Loss function)是用来估量你模型的预测值与真实值的不一致程度,它是一个非负实值函数,通常用。损失函数越小,模型的鲁棒性就越好。损失函数是经验风险函数的核心部分,也是结构风险函数的重要组成部分。模型的风险结构包括了风险项和正则项,通常如下所示:

其中,前面的均值函数表示的是经验风险函数,L 代表的是损失函数,后面的 Φ是正则化项(regularizer)或者叫惩罚项(penalty term),它可以是 L1,也可以是L2,或者其他的正则函数。整个式子表示的意思是找到使目标函数最小时的θ值。

常见的损失误差有五种:

1. 0-1 损失(黑色)

3. 铰链损失(Hinge Loss):主要用于支持向量机(SVM) 中

4. 互熵损失 (Cross Entropy Loss,Softmax Loss):用于 Logistic 回归与 Softmax 分类中(红色);

5. 平方损失(Square Loss):主要是最小二乘法(OLS)中(略);

6. 指数损失(Exponential Loss) :主要用于 Adaboost 算法中(蓝色);


SoftMax 损失

逻辑回归并没有求似然函数的极值,而是把极大化当做是一种思想,进而推导出它的经验风险函数为:最小化负的似然函数(即axF(y,f(x))→min−F(y,f(x)))maxF(y,f(x))→min−F(y,f(x)))。从损失函数的视角来看,它就成了 Softmax 损失函数了。

log 损失函数的标准形式:

利用已知的样本分布,找到最有可能(即最大概率)导致这种分布的参数值;或者说什么样的参数才能使我们观测到目前这组数据的概率最大。


二、回归分析

考虑广义线性模型:

其中 X 表示样本集,W 为待拟合的参数

1、最小二乘回归

2、岭回归

3、Logistics 回归

4、Lasso 回归


三、实例

1、Linear Regression

import matplotlib.pyplot as plt
import numpy as np
from sklearn import datasets, linear_model
from sklearn.metrics import mean_squared_error, r2_score# Load the diabetes dataset
diabetes = datasets.load_diabetes()# Use only one feature
diabetes_X = diabetes.data[:, np.newaxis, 2]# Split the data into training/testing sets
diabetes_X_train = diabetes_X[:-20]
diabetes_X_test = diabetes_X[-20:]# Split the targets into training/testing sets
diabetes_y_train = diabetes.target[:-20]
diabetes_y_test = diabetes.target[-20:]# Create linear regression object
regr = linear_model.LinearRegression()# Train the model using the training sets
regr.fit(diabetes_X_train, diabetes_y_train)# Make predictions using the testing set
diabetes_y_pred = regr.predict(diabetes_X_test)# The coefficients
print('Coefficients: \n', regr.coef_)
# The mean squared error
print("Mean squared error: %.2f"% mean_squared_error(diabetes_y_test, diabetes_y_pred))
# Explained variance score: 1 is perfect prediction
print('Variance score: %.2f' % r2_score(diabetes_y_test, diabetes_y_pred))# Plot outputs
plt.scatter(diabetes_X_test, diabetes_y_test,  color='black')
plt.plot(diabetes_X_test, diabetes_y_pred, color='blue', linewidth=3)plt.xticks(())
plt.yticks(())plt.show()

结果:

('Coefficients: \n', array([938.23786125]))
Mean squared error: 2548.07
Variance score: 0.47

2、Ridge Regression

import numpy as np
import matplotlib.pyplot as plt
from sklearn import linear_model# X is the 10x10 Hilbert matrix
X = 1. / (np.arange(1, 11) + np.arange(0, 10)[:, np.newaxis])
y = np.ones(10)# #####################################################################
# Compute pathsn_alphas = 200
alphas = np.logspace(-10, -2, n_alphas)coefs = []
for a in alphas:ridge = linear_model.Ridge(alpha=a, fit_intercept=False)ridge.fit(X, y)coefs.append(ridge.coef_)# ####################################################################
# Display resultsax = plt.gca()ax.plot(alphas, coefs)
ax.set_xscale('log')
ax.set_xlim(ax.get_xlim()[::-1])  # reverse axis
plt.xlabel('alpha')
plt.ylabel('weights')
plt.title('Ridge coefficients as a function of the regularization')
plt.axis('tight')
plt.show()

结果:


3、Lasso

import numpy as np
import matplotlib.pyplot as pltfrom sklearn.metrics import r2_score# #############################################################################
# Generate some sparse data to play with
np.random.seed(42)n_samples, n_features = 50, 200
X = np.random.randn(n_samples, n_features)
coef = 3 * np.random.randn(n_features)
inds = np.arange(n_features)
np.random.shuffle(inds)
coef[inds[10:]] = 0  # sparsify coef
y = np.dot(X, coef)# add noise
y += 0.01 * np.random.normal(size=n_samples)# Split data in train set and test set
n_samples = X.shape[0]
X_train, y_train = X[:n_samples // 2], y[:n_samples // 2]
X_test, y_test = X[n_samples // 2:], y[n_samples // 2:]# #############################################################################
# Lasso
from sklearn.linear_model import Lassoalpha = 0.1
lasso = Lasso(alpha=alpha)y_pred_lasso = lasso.fit(X_train, y_train).predict(X_test)
r2_score_lasso = r2_score(y_test, y_pred_lasso)
print(lasso)
print("r^2 on test data : %f" % r2_score_lasso)plt.plot(lasso.coef_, color='gold', linewidth=2,label='Lasso coefficients')
plt.plot(coef, '--', color='navy', label='original coefficients')
plt.legend(loc='best')
plt.title("Lasso R^2: %f"% (r2_score_lasso))
plt.show()

结果:

Lasso(alpha=0.1)
r^2 on test data : 0.385982

4、Logistics Regression

import numpy as np
import matplotlib.pyplot as plt
from sklearn.linear_model import LogisticRegression
from sklearn import datasets# import some data to play with
iris = datasets.load_iris()
X = iris.data[:, :2]  # we only take the first two features.
Y = iris.targetlogreg = LogisticRegression(C=1e5, solver='lbfgs', multi_class='multinomial')# Create an instance of Logistic Regression Classifier and fit the data.
logreg.fit(X, Y)# Plot the decision boundary. For that, we will assign a color to each
# point in the mesh [x_min, x_max]x[y_min, y_max].
x_min, x_max = X[:, 0].min() - .5, X[:, 0].max() + .5
y_min, y_max = X[:, 1].min() - .5, X[:, 1].max() + .5
h = .02  # step size in the mesh
xx, yy = np.meshgrid(np.arange(x_min, x_max, h), np.arange(y_min, y_max, h))
Z = logreg.predict(np.c_[xx.ravel(), yy.ravel()])# Put the result into a color plot
Z = Z.reshape(xx.shape)
plt.figure(1, figsize=(4, 3))
plt.pcolormesh(xx, yy, Z, cmap=plt.cm.Paired)# Plot also the training points
plt.scatter(X[:, 0], X[:, 1], c=Y, edgecolors='k', cmap=plt.cm.Paired)
plt.xlabel('Sepal length')
plt.ylabel('Sepal width')plt.xlim(xx.min(), xx.max())
plt.ylim(yy.min(), yy.max())
plt.xticks(())
plt.yticks(())plt.show()

结果:

学习笔记——sklearn监督学习:回归(简单数学知识罗列)相关推荐

  1. Python数据挖掘学习笔记】九.回归模型LinearRegression简单分析氧化物数据

    #2018-03-23 16:26:20 March Friday the 12 week, the 082 day SZ SSMR [Python数据挖掘学习笔记]九.回归模型LinearRegre ...

  2. 【人工智能学习笔记】人工智能里的数学——概述

    系列文章目录 [人工智能学习笔记]人工智能里的数学--概述 [人工智能里的数学]一元函数微分学 [人工智能里的数学]线性代数基础 [人工智能里的数学]多元函数微分学 前言 与软件开发相比,人工智能领域 ...

  3. 吴恩达《机器学习》学习笔记五——逻辑回归

    吴恩达<机器学习>学习笔记五--逻辑回归 一. 分类(classification) 1.定义 2.阈值 二. 逻辑(logistic)回归假设函数 1.假设的表达式 2.假设表达式的意义 ...

  4. 斯坦福大学CS520知识图谱系列课程学习笔记:第三讲高级的知识图谱是什么样的

    这一讲的主题是:一些高级的知识图谱是什么样的.三位讲者分别从他们各自带领的团队构建出来的高质量的知识图谱实例出发,从中我们可以认识到一些大佬们构建的优秀的知识图谱产品有哪些特点和优势,从中对我们自己构 ...

  5. 斯坦福大学CS520知识图谱系列课程学习笔记:第二讲如何构建知识图谱

    上一讲我们学习了知识图谱的一些基本概念: 斯坦福大学CS520知识图谱系列课程学习笔记:第一讲什么是知识图谱 本节课程关于如何构建知识图谱,因为知识图谱的构建是整个知识图谱领域的一个非常核心且基础的工 ...

  6. 吴恩达《机器学习》学习笔记七——逻辑回归(二分类)代码

    吴恩达<机器学习>学习笔记七--逻辑回归(二分类)代码 一.无正则项的逻辑回归 1.问题描述 2.导入模块 3.准备数据 4.假设函数 5.代价函数 6.梯度下降 7.拟合参数 8.用训练 ...

  7. oracle 方泽宇_斯坦福大学CS520知识图谱系列课程学习笔记:第二讲如何构建知识图谱...

    上一讲我们学习了知识图谱的一些基本概念:泽宇:斯坦福大学CS520知识图谱系列课程学习笔记:第一讲什么是知识图谱​zhuanlan.zhihu.com 本节课程关于如何构建知识图谱,因为知识图谱的构建 ...

  8. DeepXDE学习笔记【1】——简单ODE方程求解

    DeepXDE学习笔记[1]--简单ODE方程求解 1.背景 物理信息神经网络(PINN)自从2017年被提出,其应用范围在近两年也被挖掘的越来越广泛,除了可以解决物理方面的问题,信号处理.工程评估等 ...

  9. 【学习笔记】正确写作美国大学生数学建模竞赛论文(已获得国二、美O)

    [学习笔记]正确写作美国大学生数学建模竞赛论文(已获得国二.美O) 第2章 正确使用英文 第3章 写作规范 第4章 数学表达式 第5章 MCM/ICM竞赛论文写作 最近在学习总结如何写作美赛论文,就把 ...

最新文章

  1. Python培训分享:Python新版本中的6个新特性
  2. 屏幕边框闪光_写给想入手21:9的屏幕党,明基 EX3501R 真香跳坑指南
  3. Python 函数缓存 (Function caching)
  4. 谷歌浏览器怎样通过检查验证图片路径问题
  5. 剑指offer之把字符串里面空格替换成百分之20[时间复杂度是O(n)]
  6. vue结合ueditor富文本编辑器(换肤分离)
  7. -bash: mysql_upgrade: command not found
  8. 2009年1月5日 洛基网络教室听课笔记
  9. Comparable与Comparator异同
  10. php 二进制 保存文件,PHP打开一个二进制文件,修改了内容如何再保存回去呢?...
  11. linux攻防比赛_LINUX 遭到SYN FLOOD攻击 LINUX下SYN攻防战
  12. 计算机音乐东京不太热,洛天依 - 东京不太热[FLAC格式]
  13. 《逆龄大脑:保持大脑年轻敏锐的新科学》读书笔记
  14. VOB文件用什么软件打开,VOB文件如何转换成MP4格式
  15. java算法竞赛:StringBuilder更省空间更快速
  16. mysql中vlookup函数_vlookup函数用法示例,如何使用vlookup函数
  17. websocket封装,有心跳和断开重联功能
  18. 计算机物质文化和非物质文化,中国算盘,堪称计算机的鼻祖,中国非物质文化审遗五周年!...
  19. Qt 设计师 designer 登录对话框案例
  20. WGS84地球坐标系,GCJ02火星坐标系,BD09百度坐标系简介与转换,mybatis字段映射原理

热门文章

  1. python pp 库实现并行计算
  2. 133. Leetcode 477. 汉明距离总和 (位运算-汉明距离相关题目)
  3. 推荐系统笔记(常见架构)
  4. 推荐系统笔记(深度学习)
  5. NTU 课程笔记: 网络流
  6. linux实战应用案例: 如何在 Linux 安装 MySQL 8 数据库?(图文详细教程)
  7. python爬虫应用实战-如何爬取表情进行斗图?丰富你的表情库
  8. Flink从入门到精通100篇(二十三)-Apache Flink在滴滴的应用与实践
  9. 运筹学最优化理论系列概念-单纯形法原理解析
  10. Linux中的通配符