BAT机器学习面试1000题系列(71-75题)

71.请写出一段Python代码实现删除一个list里面的重复元素 @Tom_junsong,cnblogs.com/tom-gao/p/6
1,使用set函数,set(list)
2,使用字典函数,
>>>a=[1,2,4,2,4,5,6,5,7,8,9,0]
>>> b={}
>>>b=b.fromkeys(a)
>>>c=list(b.keys())
>>> c


72.编程用sort进行排序,然后从最后一个元素开始判断 a=[1,2,4,2,4,5,7,10,5,5,7,8,9,0,3]
@Tom_junsong,cnblogs.com/tom-gao/p/6
a.sort()
last=a[-1]
for i inrange(len(a)-2,-1,-1):
if last==a[i]:
del a[i]
else:last=a[i]
print(a)


73.Python里面如何生成随机数? @Tom_junsong,cnblogs.com/tom-gao/p/6
random模块
随机整数:random.randint(a,b):返回随机整数x,a<=x<=b
random.randrange(start,stop,[,step]):返回一个范围在(start,stop,step)之间的随机整数,不包括结束值。
随机实数:random.random( ):返回0到1之间的浮点数
random.uniform(a,b):返回指定范围内的浮点数。更多Python笔试面试题请看:python.jobbole.com/8523


74.说说常见的损失函数

对于给定的输入X,由f(X)给出相应的输出Y,这个输出的预测值f(X)与真实值Y可能一致也可能不一致(要知道,有时损失或误差是不可避免的),用一个损失函数来度量预测错误的程度。损失函数记为L(Y, f(X))。

常用的损失函数有以下几种(基本引用自《统计学习方法》):




如此,SVM有第二种理解,即最优化+损失最小,或如@夏粉_百度所说“可从损失函数和优化算法角度看SVM,boosting,LR等算法,可能会有不同收获”。关于SVM的更多理解请参考:blog.csdn.net/v_july_v/


75.简单介绍下logistics回归

Logistic回归目的是从特征学习出一个0/1分类模型,而这个模型是将特性的线性组合作为自变量,由于自变量的取值范围是负无穷到正无穷。因此,使用logistic函数(或称作sigmoid函数)将自变量映射到(0,1)上,映射后的值被认为是属于y=1的概率。

假设函数


其中x是n维特征向量,函数g就是logistic函数。

的图像是



可以看到,将无穷映射到了(0,1)。

而假设函数就是特征属于y=1的概率。



从而,当我们要判别一个新来的特征属于哪个类时,只需求

即可,若

大于0.5就是y=1的类,反之属于y=0类。

此外,

只和

有关,

>0,那么

,而g(z)只是用来映射,真实的类别决定权还是在于

。再者,当

时,

=1,反之

=0。如果我们只从

出发,希望模型达到的目标就是让训练数据中y=1的特征

,而是y=0的特征

。Logistic回归就是要学习得到

,使得正例的特征远大于0,负例的特征远小于0,而且要在全部训练实例上达到这个目标。

接下来,尝试把logistic回归做个变形。首先,将使用的结果标签y = 0和y = 1替换为y = -1,y = 1,然后将

)中的

替换为b,最后将后面的

替换为

(即

)。如此,则有了

。也就是说除了y由y=0变为y=-1外,线性分类函数跟logistic回归的形式化表示

没区别。

进一步,可以将假设函数

中的g(z)做一个简化,将其简单映射到y=-1和y=1上。映射关系如下:

发布于 2017-11-22

文章被以下专栏收录