01 机器学习原理与背景
1、机器学习分类:
有监督学习: 有标签的数据
无监督学习:无标签的学习(如:聚类算法)——探索杂乱的数据内部的规律
在nlp里面,词向量模块:
强化学习:定义了环境,agent,动作,奖励。通过与环境进行交互得到奖励,经过若干次迭代后学习到规律
输入,输出,评价指标
2、回归与分类
1) 线性回归
训练过程:
拓展到多元线性回归:
2) 代码实战
from numpy import *
import matplotlib.pylab as plt
加载数据:
def loadDataSet(filename):
datamat=[]
labelmat=[]
fr=open(filename)
for line in fr.readlines():
lineArr=[]
curline=line.strop().split('\t')
for i in range(2):
lineArr.append(float(curLine[i]))
dataMat.append(lineArr)
labelMat.append(float(curLine[-1]))
return dataMat,labelMat
矩阵计算:
对应的代码如下:
def starRegres(xArr,yArr):
xMat=mat(xArr)
yMat=mat(yArr).T
xTx=xMat.T*xMat
if linalg.det(xTx)==0:
return
ws=xTx.I*(xMat.T *yMat)
return ws
最后画图:
def regression1():
xArr, yArr = loadDataSet("./data/data.txt")
xMat = mat(xArr)
yMat = mat(yArr)
ws = standRegres(xArr, yArr)
fig = plt.figure()
ax = fig.add_subplot(111) #add_subplot(349)函数的参数的意思是,将画布分成3行4列图像画在从左到右从上到下第9块
ax.scatter(xMat[:, 1].flatten().tolist(), yMat.T[:, 0].flatten().A[0].tolist()) #scatter 的x是xMat中的第二列,y是yMat的第一列
xCopy = xMat.copy()
xCopy.sort(0)
yHat = xCopy * ws
ax.plot(xCopy[:, 1], yHat)
plt.show()
3)简单回归
1、逻辑回归
损失函数:
使用极大似然函数:
值越大越好(采用梯度上升法)
3 机器学习评价
1)模型过拟合与正则化
如何预防模型过拟合:
尽量避免参数过大,将参数约束在一定范围
数据归一化
2)数据集划分
3)机器学习评价体系
recall:召回率,类似于医学中的敏感度