03_d3-回归与非监督学习概述
知识架构
1. 回归问题
- 线性模型
- 试图学得一个通过属性的线性组合来进行预测的函数:
![image.png](https://img-blog.csdnimg.cn/img_convert/bf18a0744299fcd5ab278809aa126253.png#align=left&display=inline&height=64&margin=[object Object]&name=image.png&originHeight=128&originWidth=572&size=39300&status=done&style=none&width=286)
- 线性回归
- 定义:线性回归通过一个或者多个自变量与因变量之间之间进行建模的回归分析。其中特点为一个或多个称为回归系数的模型参数的线性组合(线性回归的一种)
- 一元线性回归:涉及到的变量只有一个
- 多元线性回归:涉及到的变量两个或两个以上
- 通用公式:
![image.png](https://img-blog.csdnimg.cn/img_convert/2e155162d922e738c6e293ff262dd9ab.png#align=left&display=inline&height=94&margin=[object Object]&name=image.png&originHeight=188&originWidth=592&size=51026&status=done&style=none&width=296)
- 损失函数(误差大小)
- ![image.png](https://img-blog.csdnimg.cn/img_convert/2375e239f61ffbeb274bc6671a77594f.png#align=left&display=inline&height=267&margin=[object Object]&name=image.png&originHeight=534&originWidth=846&size=162407&status=done&style=none&width=423)
- 最小二乘法之正规方程(不做要求)
- ![image.png](https://img-blog.csdnimg.cn/img_convert/9ed457559651cce118245e2b00fd832f.png#align=left&display=inline&height=88&margin=[object Object]&name=image.png&originHeight=176&originWidth=548&size=55492&status=done&style=none&width=274)
- 损失函数直观图(单变量举例)
- ![image.png](https://img-blog.csdnimg.cn/img_convert/8ac47e8c68d4a617a824049df5276791.png#align=left&display=inline&height=296&margin=[object Object]&name=image.png&originHeight=592&originWidth=926&size=365532&status=done&style=none&width=463)
- 最小二乘法之梯度下降(理解过程)
- ![image.png](https://img-blog.csdnimg.cn/img_convert/13a128e264c39366a87b6992e48ec99a.png#align=left&display=inline&height=280&margin=[object Object]&name=image.png&originHeight=560&originWidth=960&size=201671&status=done&style=none&width=480)
- ![image.png](https://img-blog.csdnimg.cn/img_convert/d6a14b137d3aa8e3e1c4e544d6c44f6e.png#align=left&display=inline&height=172&margin=[object Object]&name=image.png&originHeight=344&originWidth=550&size=24534&status=done&style=none&width=275)
- ![image.png](https://img-blog.csdnimg.cn/img_convert/3cd517fde6f1aa461c8ac877ad777e77.png#align=left&display=inline&height=193&margin=[object Object]&name=image.png&originHeight=386&originWidth=512&size=192302&status=done&style=none&width=256)
- sklearn线性回归正规方程、梯度下降API
- sklearn.linear_model.LinearRegression()
- 正规方程
- 普通最小二乘线性回归
- coef_:回归系数
- sklearn.linear_model.SGDRegressor()
- 梯度下降
- 通过使用SGD最小化线性模型
- coef_:回归系数
- sklearn.linear_model.LinearRegression()
2. 回归性能评估
![image.png](https://img-blog.csdnimg.cn/img_convert/6345f3e0277ced441c637880ae4bbd34.png#align=left&display=inline&height=141&margin=[object Object]&name=image.png&originHeight=282&originWidth=876&size=96028&status=done&style=none&width=438)
- sklearn回归评估API
- sklearn.metrics.mean_squared_error(y_true, y_pred)
- 均方误差回归损失
- y_true:真实值
- y_pred:预测值
- return:浮点数结果
- sklearn.metrics.mean_squared_error(y_true, y_pred)
注:真实值,预测值为标准化之前的值
- ![image.png](https://img-blog.csdnimg.cn/img_convert/d0dd9633e3eb1ee9e28575f1418c26bd.png#align=left&display=inline&height=200&margin=[object Object]&name=image.png&originHeight=400&originWidth=642&size=262756&status=done&style=none&width=321)
- ![image.png](https://img-blog.csdnimg.cn/img_convert/35e29a0b8811c8b0289c3a456b337a11.png#align=left&display=inline&height=280&margin=[object Object]&name=image.png&originHeight=327&originWidth=636&size=85041&status=done&style=none&width=544)
3. LinearRegression与SGDRegressor评估
- 特点:线性回归器是最为简单、易用的回归模型。从某种程度上限制了使用,尽管如此,在不知道特征之间关系的前提下,我们仍然使用线性回归器作为大多数系统的首要选择。
- 小规模数据:LinearRegression(不能解决拟合问题)以及其它
- 大规模数据:SGDRegressor
4. 过拟合与欠拟合
- 过拟合:一个假设在训练数据上能够获得比其他假设更好的拟合,但是在训练数据外的数据集上却不能很好地拟合数据,此时认为这个假设出现了过拟合的现象。(模型过于复杂)
- 原因:
原始特征过多,存在一些嘈杂特征, 模型过于复杂是因为模型尝试去兼顾各个测试数据点 - 解决办法:
- 原因:
进行特征选择,消除关联性大的特征(很难做)
交叉验证(让所有数据都有过训练)
正则化(了解)
- 欠拟合:一个假设在训练数据上不能获得更好的拟合,但是在训练数据外的数据集上也不能很好地拟合数据,此时认为这个假设出现了欠拟合的现象。(模型过于简单)
- 原因:
学习到数据的特征过少
- 解决办法:
增加数据的特征数量
注:对线性模型进行训练学习会变成复杂模型
- ![image.png](https://img-blog.csdnimg.cn/img_convert/8c9c462c14eb4fc587b97e4762773484.png#align=left&display=inline&height=186&margin=[object Object]&name=image.png&originHeight=372&originWidth=1008&size=230718&status=done&style=none&width=504)
- ![image.png](https://img-blog.csdnimg.cn/img_convert/41a01eb6b3a8ad51fc0c00e394d57f81.png#align=left&display=inline&height=258&margin=[object Object]&name=image.png&originHeight=516&originWidth=864&size=135391&status=done&style=none&width=432)
- L2正则化
- 作用:可以使得W的每个元素都很小,都接近于0
- 优点:越小的参数说明模型越简单,越简单的模型则越不
- 容易产生过拟合现象
5. 领回归
1. 带有正则化的线性回归-Ridge
- sklearn.linear_model.Ridge
- sklearn.linear_model.Ridge(alpha=1.0)
- 具有l2正则化的线性最小二乘法
- alpha:正则化力度
- coef_:回归系数
- sklearn.linear_model.Ridge(alpha=1.0)
![image.png](https://img-blog.csdnimg.cn/img_convert/eb671aff0bb0aec40a19a30079dcdb5a.png#align=left&display=inline&height=215&margin=[object Object]&name=image.png&originHeight=430&originWidth=556&size=64092&status=done&style=none&width=278)
2. 线性回归 LinearRegression与Ridge对比
- 岭回归:回归得到的回归系数更符合实际,更可靠。另外,能让估计参数的波动范围变小,变的更稳定。在存在病态数据偏多的研究中有较大的实用价值。
6. 分类罗辑回归
![image.png](https://img-blog.csdnimg.cn/img_convert/dcd1d89393d2d2fc6d70d6492574b903.png#align=left&display=inline&height=440&margin=[object Object]&name=image.png&originHeight=440&originWidth=705&size=228635&status=done&style=none&width=705)
- 广告点击率
- 是否为垃圾邮件
- 是否患病
- 是否金融诈骗
- 是否为虚假账号
逻辑回归是解决二分类问题的利器
逻辑回归
![image.png](https://img-blog.csdnimg.cn/img_convert/dae99bf27ec6709cf0839a82b7c80f68.png#align=left&display=inline&height=123&margin=[object Object]&name=image.png&originHeight=123&originWidth=437&size=5849&status=done&style=none&width=437)
- sigmoid函数
![image.png](https://img-blog.csdnimg.cn/img_convert/8cdb8fa6c498c03c13064bbeabf68d29.png#align=left&display=inline&height=385&margin=[object Object]&name=image.png&originHeight=385&originWidth=565&size=34194&status=done&style=none&width=565)
逻辑回归公式
![image.png](https://img-blog.csdnimg.cn/img_convert/5fc5d108e012d6695626b741eb057a40.png#align=left&display=inline&height=177&margin=[object Object]&name=image.png&originHeight=177&originWidth=403&size=15925&status=done&style=none&width=403)
- 输出:[0,1]区间的概率值,默认0.5作为阀值
- 注:g(z)为sigmoid函数
逻辑回归的损失函数、优化(了解)
-
与线性回归原理相同,但由于是分类问题,
-
损失函数不一样,只能通过梯度下降求解
-
对数似然损失函数:
![image.png](https://img-blog.csdnimg.cn/img_convert/818054f271ee2039d57d6ed76d1171fa.png#align=left&display=inline&height=101&margin=[object Object]&name=image.png&originHeight=101&originWidth=467&size=17796&status=done&style=none&width=467)
- 完整的损失函数:
![image.png](https://img-blog.csdnimg.cn/img_convert/d7395643bfe4db07aa46930125584945.png#align=left&display=inline&height=116&margin=[object Object]&name=image.png&originHeight=116&originWidth=615&size=18616&status=done&style=none&width=615)
cost损失的值越小,那么预测的类别准确度更高
![image.png](https://img-blog.csdnimg.cn/img_convert/cf7e481b8e38b3e05d27fc9412527ab2.png#align=left&display=inline&height=423&margin=[object Object]&name=image.png&originHeight=423&originWidth=646&size=24459&status=done&style=none&width=646)
![image.png](https://img-blog.csdnimg.cn/img_convert/cf60fab4e1070dc4a611424f04b2818e.png#align=left&display=inline&height=479&margin=[object Object]&name=image.png&originHeight=479&originWidth=741&size=41170&status=done&style=none&width=741)
sklearn逻辑回归API
- sklearn.linear_model.LogisticRegression
- sklearn.linear_model.LogisticRegression(penalty=‘l2’, C = 1.0)
- Logistic回归分类器
- coef_:回归系数
LogisticRegression回归案例
- 良/恶性乳腺癌肿瘤预测
- 数据下载:
原始数据的下载地址:
https://archive.ics.uci.edu/ml/machine-learning-databases/
数据描述
- (1)699条样本,共11列数据,第一列用语检索的id,后9列分别是与肿瘤
相关的医学特征,最后一列表示肿瘤类型的数值。
- (2)包含16个缺失值,用”?”标出。
pandas使用:
-
pd.read_csv(’’,names=column_names)
-
column_names:指定类别名字,[‘Sample code number’,‘ClumpThickness’, ‘Uniformity of Cell Size’,‘Uniformity of Cell Shape’,‘MarginalAdhesion’,
‘Single Epithelial Cell Size’,‘Bare Nuclei’,‘Bland Chromatin’,‘Normal Nucleoli’,‘Mitoses’,‘Class’] -
return:数据
-
replace(to_replace=’’,value=):返回数据
-
dropna():返回数据
-
-
良/恶性乳腺癌肿分类流程
- 网上获取数据(工具pandas)
- 据缺失值处理、标准化
- LogisticRegression估计器流程
![image.png](https://img-blog.csdnimg.cn/img_convert/585fc423d41d20d6ffba254aa7242968.png#align=left&display=inline&height=499&margin=[object Object]&name=image.png&originHeight=499&originWidth=773&size=235694&status=done&style=none&width=773)
LogisticRegression总结
- 应用:广告点击率预测、电商购物搭配推荐
- 优点:适合需要得到一个分类概率的场景,简单,速度快
- 缺点:不好处理多分类问题
多分类问题
- 逻辑回归解决办法:1V1,1Vall
![image.png](https://img-blog.csdnimg.cn/img_convert/5ce1a5de65ddc9ef0eac5acf5ae2231b.png#align=left&display=inline&height=432&margin=[object Object]&name=image.png&originHeight=432&originWidth=508&size=92687&status=done&style=none&width=508)
- softmax方法-逻辑回归在多分类问题上的推广
7. 非监督学习
![image.png](https://img-blog.csdnimg.cn/img_convert/deda3ff9c84a190da0e5c99819fb6d51.png#align=left&display=inline&height=458&margin=[object Object]&name=image.png&originHeight=458&originWidth=794&size=433153&status=done&style=none&width=794)
- 非监督学习(unsupervised learning)
- 主要方法:k-means
![image.png](https://img-blog.csdnimg.cn/img_convert/751c5e0bafa603ad84c322a4f40ff613.png#align=left&display=inline&height=620&margin=[object Object]&name=image.png&originHeight=620&originWidth=559&size=139645&status=done&style=none&width=559)
k-means步骤
- 1、随机设置K个特征空间内的点作为初始的聚类中心
- 2、对于其他每个点计算到K个中心的距离,未知的点选择最近的一个聚类中心点作为标记类别
- 3、接着对着标记的聚类中心之后,重新计算出每个聚类的新中心点(平均值)
- 4、如果计算得出的新中心点与原中心点一样,那么结束,否则重新进行第二步过程
k-means API
- sklearn.cluster.KMeans(n_clusters=8,init=‘k-means++’)
- k-means聚类
- n_clusters:开始的聚类中心数量
- init:初始化方法,默认为’k-means ++’
- labels_:默认标记的类型,可以和真实值比较(不是值比较)
k-means对Instacart Market用户聚类
- 1、降维之后的数据
- 2、k-means聚类
- 3、聚类结果显示
Kmeans性能评估指标
![image.png](https://img-blog.csdnimg.cn/img_convert/663fa3e8adf00121039ddc6ac664a9ac.png#align=left&display=inline&height=144&margin=[object Object]&name=image.png&originHeight=144&originWidth=442&size=6948&status=done&style=none&width=442)
- 注:对于每个点i 为已聚类数据中的样本 ,b_i 为i 到其它族群的所有样本的距离最小值,a_i 为i 到本身簇的距离平均值
- 最终计算出所有的样本点的轮廓系数平均值
![image.png](https://img-blog.csdnimg.cn/img_convert/c3ec6ee19e3c10f4de9fddc2aa9f9595.png#align=left&display=inline&height=590&margin=[object Object]&name=image.png&originHeight=590&originWidth=782&size=70895&status=done&style=none&width=782)
- b_i>>a_i:趋近于1效果最好
- b_i<<a_i:趋近于-1,效果不好
轮廓系数的值是介于 [-1,1] ,越趋近于1代表内聚度和分离度都相对较优
Kmeans性能评估指标API
- sklearn.metrics.silhouette_score
- sklearn.metrics.silhouette_score(X, labels)
- 计算所有样本的平均轮廓系数
- X:特征值
- labels:被聚类标记的目标值
Kmeans总结
- 特点分析:
- 采用迭代式算法,直观易懂并且非常实用
- 缺点:容易收敛到局部最优解(多次聚类)
- 注意:聚类一般做在分类之前