week3 归一化
来源:互联网 发布:js定义数组的方法 编辑:程序博客网 时间:2024/06/14 18:36
逻辑回归 logistic regression
5.1 分类问题
在分类问题中,我们尝试预测新出现的物体是否属于某个类,从二元分类开始,我们将两个种类分为负向类和正向类,则因变量
回顾乳腺癌问题,我们用线性回归方法求出合适的方法求出适合数据的一条直线,如果对于
- 当
- 当
对于上面这个例子,似乎这条直线可以很好的解决这个问题,但是,如果我们这时候又观测到一个非常大的恶性肿瘤,加入数据,得到一个新的直线,此时,0.5的标准就不那么合适了。
我们这里引入一个新的模型,称为逻辑回归模型,该模型的输出范围始终处于0到1之间:
其中:
- X代表特征向量
- g代表逻辑函数,是一个非常常用的s形函数 Sigmoid function,
图像如下:
合起来,有:
如果用此模型,则对于给定的输入变量,根据选择的参数计算输出变量=1的可能性
例如,对于给定的x,通过已经确定的参数计算出
5.2判定边界
在逻辑回归中,我们预测:
- 当
- 当
既
- 当
- 当
现在假设我们有一个模型
当
也有可能我们的分割线不是直线,二是曲线,例如下面这个,分割线我们可以设为
5.3 代价函数
对于线性回归模型,我们定义的代价函数是所有模型误差的平方和,但对于逻辑回归来说,此时
所以,我们将对逻辑回归的例子重新定义代价函数,
从上图可以看出,当实际y=1时,
将构造的新
带入代价函数中,得到新的代价函数为:
得到新的代价函数以后,我们可以继续用梯度下降算法来求得能使代价函数最小的参数:
循环,直到收敛:
看起来与线性回归的结果是一致的,但这里的
fminunc是matlab中自带的最小值优化函数,具体使用如下:
function[jval,gradient]=costfunction(theta) jval=[求出J(theta)的代码] gradient=[求出J(theta)倒数的代码]endoptions=optimset('GradOBJ','on','MaxIter','100');inittheta=zeros(2,1);[opttheta,functionval,exitflag]=fminunc(@costfunction,inittheta,options)
5.4 多类分类
多类分类中,我们有多个最后的类别,无法使用二元变量(0 or 1)来分类,解决这种问题通常采用一对多的方法来做,我们将多类分类问题转化为二元分类问题,将多个类的其中一个类标记为正向类(y=1),此外其他的标记为负向类,当训练完成后,我们将另外一个类标记为正向类(y=2), 其他都为负向类,以此类推。
最后当我们需要预测时,每个分类机都运行一遍,得到每种正向类的概率,得到概率最高的那个。
6 归一化
6.1 过拟合问题 overfitting
下面三个分别是低度拟合,正常拟合,过度拟合:
在分类问题中也有这种情况发生:
在低度拟合中,我们不能很好的利用训练集来得到准确的结果,而如果是过度你和,虽然我们拟合的结果非常适应训练集,但往往用它进行预测的时候效果不好,或者所花时间过长。
我们可以采取的措施有:
- 丢弃一些无关特征
- 保留特征,但是减小参数的大小
6.2 归一化代价函数 regularization cost function
如果是上一节中第一种预测的过拟合,此时我们的模型是:
我们要做的就是减少
我们可以做的是在代价函数中加重
如果
6.3 归一化线性回归
归一化线性回归的代价函数为:
如果我们要进行梯度算法,因为我们未对
其中第二式子可以写为:
可以看出,归一化线性回归的算法在于每一次递减的基础上再额外令
同样我们可以用正规解方程的方法来解决归一化的问题。
6.4 归一化逻辑回归
- 对于逻辑回归,我们也可以增加一个归一化表达式,其代价函数可以写为:
J(θ)=−1m[∑i=1myilog(hθ(xi))+(1−yi)log(1−hθ(xi))]+λ2m∑j=1iθ2j
如果此时用梯度下降算法,有:
循环直至收敛:θ0=θ0−α1m∑i=1m((hθ(xi)−yi)·xi0) θj=θj−α1m∑i=1m((hθ(xi)−yi)·xij+λmθj) - 与线性回归一致,但此时
hθ(x)=g(θTX)
- week3 归一化
- Week3
- week3
- week3
- week3
- week3
- 归一化
- 归一化
- 归一化
- 归一化
- 归一化
- 归一化
- 归一化
- 归一化
- 归一化
- 归一化
- 归一化
- 归一化
- 仗剑走天涯
- 【Android】Splash的使用
- C++虚函数指针虚函数表
- CLIPS专家系统基本编程手册(一)
- ?: %04d snprintf string(type char) setw(int n) setfill(*)
- week3 归一化
- CSS position 属性
- JS编程训练 | 题1:查找数组元素位置
- [cmake] 制作一个静态库archive
- MyBatis中Like语句使用方式
- 数组相关概念
- LeetCode--Two Sum
- 数组中有一个数字出现的次数超过数组长度的一半
- 常用shell命令(一)