《机器学习--监督学习》(入门3章)

2018-10-09  本文已影响26人  mantch

3.监督学习

3.1.线性回归

我们希望根据房子的居住尺寸来预测房价并得到房价与尺寸之间的线性关系。每个居住尺寸对应一个唯一且给定的住房价格,所以这是一个监督学习问题。我们希望获得居住尺寸和房价两个变量之间的关系,这是个回归问题。由于求取的线性模型,所以得到的是个线性回归问题。


房屋预测.png

令w=θ1,b=θ2。

目标函数.png

3.2多元线性回归

数据表达.png 分类.png 向量表示.png

3.3python代码

3.3.1梯度下降线性回归模型
# 兼容 pythone2,3
from __future__ import print_function

# 导入相关python库
import os
import numpy as np
import pandas as pd

#设定随机数种子
np.random.seed(36)

#使用matplotlib库画图
import matplotlib
import seaborn
import matplotlib.pyplot as plot

from sklearn import datasets


#读取数据
housing = pd.read_csv('kc_train.csv')
target=pd.read_csv('kc_train2.csv')  #销售价格
t=pd.read_csv('kc_test.csv')         #测试数据

#数据预处理
housing.info()    #查看是否有缺失值

#特征缩放
from sklearn.preprocessing import MinMaxScaler
minmax_scaler=MinMaxScaler()
minmax_scaler.fit(housing)   #进行内部拟合,内部参数会发生变化
scaler_housing=minmax_scaler.transform(housing)
scaler_housing=pd.DataFrame(scaler_housing,columns=housing.columns)

mm=MinMaxScaler()
mm.fit(t)
scaler_t=mm.transform(t)
scaler_t=pd.DataFrame(scaler_t,columns=t.columns)



#选择基于梯度下降的线性回归模型
from sklearn.linear_model import LinearRegression
LR_reg=LinearRegression()
#进行拟合
LR_reg.fit(scaler_housing,target)


#使用均方误差用于评价模型好坏
from sklearn.metrics import mean_squared_error
preds=LR_reg.predict(scaler_housing)   #输入数据进行预测得到结果
mse=mean_squared_error(preds,target)   #使用均方误差来评价模型好坏,可以输出mse进行查看评价值

#绘图进行比较
plot.figure(figsize=(10,7))       #画布大小
num=100
x=np.arange(1,num+1)              #取100个点进行比较
plot.plot(x,target[:num],label='target')      #目标取值
plot.plot(x,preds[:num],label='preds')        #预测取值
plot.legend(loc='upper right')  #线条显示位置
plot.show()


#输出测试数据
result=LR_reg.predict(scaler_t)
df_result=pd.DataFrame(result)
df_result.to_csv("result.csv")
3.3.2扩展多项式

使用多项式的方法来进行的,如果有a,b两个特征,那么它的2次多项式为(1,a,b,a^2,ab, b^2),代码为:

#构造多项式特征
from sklearn.preprocessing import PolynomialFeatures
poly_feature=PolynomialFeatures(degree=5,include_bias=False)
poly_housing=poly_feature.fit_transform(scaler_housing)
poly_t=poly_feature.fit_transform(scaler_t)

3.4逻辑回归

逻辑回归是用来做分类算法的,那么分类学习的概念是什么呢?

3.4.1模型
逻辑回归模型.png

3.5过拟合

分类.png
3.5.1过拟合

机器学习中,拟合优度(goodness of fit) 指的是模型预测值与真实值想匹配的程度。学习“噪声”的模型被称为是过拟合(overfit),在训练集上表现良好,但是与新训练集的拟合优度差,如下图绿线所示。


过拟合.png
3.5.2欠拟合

与过拟合相对的拟合曲线被称为是欠拟合(underfit),如下图所示,对已有训练集的拟合程度差,模型表现效果差,没有学习到数据中的信息,这样的拟合曲线被称为欠拟合。


欠拟合.png
3.5.3误差

统计学习和机器学习中模型或者结果的泛化误差通常可以表示为三个不同误差的总和:偏差、方差、残差,也称为噪声。

3.5.4防止过拟合
K折交叉验证

k折交叉验证是评价模型的最好选择之一,也可以在一定程度上减小过拟合。在标准的k折交叉验证中,我们将数据划分为k个子集,称之为折叠(fold),然后迭代的用其中的k-1个子集用于模型训练,同时将剩余的子集用于作为验证集验证模型。一般k=10


k折交叉验证.png
L2正则化

正则化也分为许多种,这里介绍两种正则化方法:L1正则化、L2正则化。L1正则化方法又被称为拉索回归,L2正则化方法又被称为岭回归。L2正则化将需要正则化系数的平方作为惩罚项。这个惩罚项会使梯度下降造成权重更新是更大的。

L2正则化.png
在L2正则化中λ是正则化系数,用于控制对于权重的惩罚。λ越大,权重越接近于0,使得拟合曲线更平缓从而减少过拟合的情况。
L1正则化

L1正则化的惩罚项为系数的绝对值。L2对大数比较敏感,对大数的惩罚力度也大,容易产生均匀解,而L1不会,产生比较稀疏的解,稀疏解就是结果中含0比较多的情况。


L1正则化.png
弹性网络

弹性网络是权衡L1正则化和L2正则化后得出的方法,通过控制混合比率r我们可以实现想要的正则化效果。其中,当r=0时,弹性网络为L2正则化,当r=1时,弹性网络为L1正则化。一般来说,弹性网络比L1正则化更常用一些。


弹性网络公式.png

3.6K临近算法(KNN)

3.6.1原理

K-NN算法的核心思想非常简单:在训练集中选取离输入的数据点最近的k个邻居,根据这个k个邻居出现次数最多的类别(最大表决规则),作为该数据点的类别。
1.计算训练样本和测试样本中每个样本点的距离(常见的距离度量有欧氏距离,马氏距离等)。
2.对上面所有的距离进行排序。
3.选前k个最小距离的样本。
4.根据这k个样本的标签进行投票,得到最后的分类类别。


原理图.png
3.6.2KNN修正

经典k领域的样本点对预测结果的贡献度是相等的。而一个简单的思想是距离更近的样本点应有更大的相似度,其贡献应比距离更远的样本点打。

3.6.3KNN优缺点

3.7支持向量机(SVM)

现在有一个二维平面,平面上有两种不同的数据,分别用圈和叉表示。由于这些数据是线性可分的,所以可以用一条直线将这两类数据分开,这条直线就相当于一个超平面,超平面一边的数据点所对应的y全是-1,另一边所对应的y全是1。SVM要解决的就是如何找到最优的分割超平面。

3.8朴素贝叶斯分类

-朴素贝叶斯分类器原理:对于给出的待分类项,求解在此项出现的条件下各个类别出现的概率,哪个最大,就认为此待分类项属于哪个类别。

分类项.png
也就是说在感冒的情况下,哪种分类项出现的概率高,那么这个分类项就属于盖帽的结果。 流程.png

3.9树模型

3.9.1熵的定义
熵的定义.png
3.9.2决策树生成
3.9.3决策时分类剪枝

实现方式:极小化决策树整体的损失函数或者代价函数。

3.9.4混淆矩阵
混淆矩阵.png
3.9.5分类与回归树-CART
3.9.6决策树优缺点

3.10坦坦尼克号生还者预测

持续更新中........

上一篇 下一篇

猜你喜欢

热点阅读