[W3]逻辑回归以及正则化

布尔分类

在这样的分类种,只有两种情况,0或者1,类似于计算机中常用的布尔变量

逻辑回归

前面已经提到过线性回归,那么什么是逻辑回归呢,其实是一个关于自然底数e的函数,其定义和图像如下图

qq%e6%88%aa%e5%9b%be20161118165037

决策边界

有了上面两个部分的介绍,我们可以引出一个新的概念——决策边界
当一个数大于我们的决策边界的时候,其结果就是1,否则为0,具体可以参看下图

qq%e6%88%aa%e5%9b%be20161118165734
在这里我们取决策边界为0.5

逻辑回归的代价函数

那么,对于逻辑回归问题,它的代价函数又是怎样的呢?我们需要分两种情况讨论
y = 1 以及 y = 0
具体见下图

qq%e6%88%aa%e5%9b%be20161118170228
上面的两种情况我们可以合并为同一个公式,如[……]

Read more

[W2]多参数线性回归相关问题

多参数线性回归

通过第一周的学习,我们知道了什么是单参数线性回归,那么多参数线性回归也就不难理解了,就是一个含多个参数的一阶函数,定义公式如下图

qq%e6%88%aa%e5%9b%be20161116173954
这个公式又可以表示为两个矩阵的乘积,如下图
qq%e6%88%aa%e5%9b%be20161116174219

代价函数

类似单变量的代价函数,同样是测量值与实际值之差的平方和的平均值

qq%e6%88%aa%e5%9b%be20161116174829

特征值的规范化

在课程原话中关于特征值的规范化是这样说的

We can speed up gradient descent by having each of our input values in roughly the same range. This is because θ[……]

Read more

[W1]机器学习的概念以及最简单的算法

什么是机器学习

Tom Mitchell provides a more modern definition: “A computer program is said to learn from experience E with respect to some class of tasks T and performance measure P, if its performance at tasks in T, as measured by P, improves with experience E.”
简单翻译一下就是,有任务T,经验E,结果P,当经验E增加时,一个计算机程序[……]

Read more

工厂模式和抽象工厂概述以及二者的区别

工厂模式

什么是工厂模式

顾名思义,工厂模式就是一种生产产品的模式,我们这里的产品就是各种各样的对象

工厂模式的类图


如图所示:
1.我们有一个抽象类,工厂,两个具体实现,NYstore和Bstore,实现了抽象工厂的几个方法
2.我们有一种产品,pizza,并且对于它我们有很多实现,分为ny系和b系,不过他们都是pizza
当我们需要pizza的时候,我们只要用一个store对象的创建方法来点餐就可以了,工厂类会根据其类型的不同创建相应的pizza给我们吃。
调用代码:

抽象工厂

什么是抽象工厂

简单的说,抽[……]

Read more

AndroidStudio插件开发——RemoveButterKnife从构思到实现

ReomveButterKnife插件

这是一个用于移除代码中对ButterKnife使用的AS插件,接下来我们将从头开始讲讲AS插件开发和这个插件的开发过程
地址是RemoveButterKnife
QQ截图20160624161742

什么是AndroidStudio插件

相信能开始阅读这篇文章的朋友都是从事,或者有兴趣从事Android开发的,那么,我们现在最常用的开发工具无疑就是AndroidStudio了。

那么,什么又是AndroidStudio插件呢?

AndroidStudio虽然是Google公司推出的一款很方便的开发环境,但是在实际的使用中,还是有一些功能是我们需要而它没有的,比如对vim输入方式的[……]

Read more

【解题报告】【lintcode28】Search a 2D Matrix

题意

写出一个高效的算法来搜索 m × n矩阵中的值。

这个矩阵具有以下特性:

每行中的整数从左到右是排序的。
每行的第一个数大于上一行的最后一个整数。
性能要求,时间复杂度O(logm+logn)

解答

两次二分,第一次确定所在行,第二次确定所在列

代码

[……]

Read more

【解题报告】【lintcode111】Climbing Stairs

题意

假设你正在爬楼梯,需要n步你才能到达顶部。但每次你只能爬一步或者两步,你能有多少种不同的方法爬到楼顶部?

解答

由于一次只能走一步或者两步,所以我们可以直接获得递归的公式,但是当楼梯太多的时候,递归层次太深,会超时。
我们又想到dp,由于一次走一步或者两步,所以可以从上一个状态或者上两个状态到达当前状态,所以可以得到公式
dp[n] = dp[n-1]+dp[n-2]
因为对于dp[n-1]来说,只能走一步,对于dp[n-2]只能走长度2,所以我们把他们的解的个数加起来,就是我们现在的解数了。

代码

[……]

Read more

【解题报告】【lintcode103】Linked List Cycle II

题意

给出一个链表,可能会有环(从某一点开始,经过一段之后又回到这个点),找出这个环的开始点
使用O(n)的复杂度解决

解答

我们可以设置两个指针,一个每次前进一步,一个每次前进两步
那么,如果有环,这两个指针必定在环里某一个点相遇,这时候
假设环外到环开始点的路程为a
假设慢指针在环内走了b
环剩下的部分距离为c
那么,我们可以得到
(a+(b+c)+b)/2 = a + b
左边是快指针走过的距离除以速度,右边是慢指针距离除以速度
化简之后可以得到
a = c
所以,从相遇点开始,把慢指针放到链表开头,然后和快指针一起以1的速度移动,再次相遇的地方就是环的开始点了
如下图
QQ截图20160520140221

代码[……]

Read more

【解题报告】【lintcode362】Sliding Window Maximum

题意

给出一组数字,一个滑动窗口的大小,窗口从开始滑动到数字结束,返回每次窗口中的最大值

解答

由于时间复杂度的要求,我们不能暴力求解,因为这样的复杂度是n*n级别,而题目要求n级别

我们可以通过记录数组下标来解答这个题目

每次新的数字进入时,把小于它的数字下标全部移除,形成递减的结果数组,每次取这个数组的第一个就是当前窗口最大的数了

由于每一个数字只会被操作两次,一次是进入,一次是弹出,所以时间复杂度是O(n)的

代码

[……]

Read more