Ch15 support vector machines and machine learning on documents
Download
1 / 97

Ch15 Support Vector Machines and Machine Learning on documents - PowerPoint PPT Presentation


  • 424 Views
  • Uploaded on
  • Presentation posted in: General

Ch15 Support Vector Machines and Machine Learning on documents. 2010. 1. 25. 최성빈. Introduction. 최근 20 년 간 , 분류기의 효과성을 향상시키기 위한 연구의 결실로 , support vector machine, boosted decision tree, regularized logistic regression, neural network, random forest 와 같이 새로운 분류기들이 등장했다 .

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha

Download Presentation

Ch15 Support Vector Machines and Machine Learning on documents

An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -

Presentation Transcript


Ch15 support vector machines and machine learning on documents

Ch15 Support Vector Machines andMachine Learning on documents

2010. 1. 25. 최성빈


Introduction

Introduction

  • 최근 20년 간, 분류기의 효과성을 향상시키기 위한 연구의 결실로,

    support vector machine, boosted decision tree, regularized logistic regression, neural network, random forest와 같이 새로운 분류기들이 등장했다.

  • 이러한 방법론 중 다수는, 정보검색문제 특히 문헌분류에 적용되어,

    성공적인 모습을 보여왔다.

  • SVM은 large-margin classifier의 하나이다.

  • SVM은 vector space기반의 machine learning 기법이다.

  • SVM의 목적

    training data에서, 두 클래스의 어떤 point로부터도 최대한 멀리 떨어져 있는, 두 클래스 간의 decision boundary를 찾는 것


Introduction1

Introduction

  • 다른 machine learning기법이 이 작업에 적용된바 있음에도,

    SVM의 사용이 두드러져 왔다.

  • SVM이 항상 다른 machine learning기법보다 좋은 것은 아니지만,

    가장 최신의 성능을 보여주고 있으며,

    현재 이론적 및 실험적인 측면에서 많은 매력을 가지고 있다.


Introduction2

Introduction

  • 15.1 Support vector machines: The linearly separable case

    : two-class data sets, separable by a linear classifier

  • 15.2 Extensions to the SVM model

    : multiclass problem, non-separable data, nonlinear models, other issues

  • 15.3 Issues in the classification of text documents

  • 15.4 Machine learning methods in ad hoc information retrieval


15 1 support vector machines the linearly separable case

15.1 Support vector machines:The linearly separable case

  • 14.8의그림에서와 같이

    two-class의 분리가능한 training data set에서

    많은 수의 선형 분류기가 존재한다.

  • 직관적으로, 두 클래스의 data item들 가운데를 지나는 decision boundary가,

    하나 혹은 두 클래스와 매우 가깝게 지나가는 decision boundary보다 좋아 보인다.


15 1 support vector machines the linearly separable case1

15.1 Support vector machines:The linearly separable case

  • 퍼셉트론, Naïve Bayes와 같은 학습기법들은, 특정 기준에 따라

    가장 성능이 좋은 어떤 선형분류기를 찾는다.

  • 특히 SVM은, 그 기준을, 어떤 data point로부터도 가장 멀리 떨어져 있는 결정면(decision surface)을 찾는 것으로 정의한다.


15 1 support vector machines the linearly separable case2

15.1 Support vector machines:The linearly separable case

  • 결정면에서 가장 가까운 data point와 결정면과의 거리가,

    분류기의 margin이 된다.

  • SVM의 분류기의 위치를 정의하는 decision function은,

    data point의 일부분으로 특정지을 수 있다.

    - 이 data point들을 support vectors라고 한다.

  • support vector외의 다른 data point들은

    결정면을 선택하는데 있어

    아무 역할을 하지 못한다.


15 1 support vector machines the linearly separable case3

15.1 Support vector machines:The linearly separable case

  • 결정면 근처에 data point가 위치한다는 것이

    매우 불확실한 분류 결정을 의미하기 때문에,

    margin을 최대화하는 것은 좋은 것이다.

  • 큰 margin을 가지는 분류기는,

    확실성이 낮은 분류 판단을 내릴 가능성이 없어진다.

  • 이것은 classification safety margin을 제공한다.

    : slight error in measurement나 slight document variation이 있더라도,

    이것이 오분류로 이어지지 않는다.


15 1 support vector machines the linearly separable case4

15.1 Support vector machines:The linearly separable case

  • SVM분류기는 결정면 근처에서 large margin을 제공한다.

  • decision hyperplane과 비교해서,

    클래스 사이에 fat separator를 위치한다면

    그것을 어디에 위치할지에 대해

    적은 가지 수의 선택권을 가지게 된다.

  • 그 결과로, 모델의 memory capacity가 감소하고,

    따라서 test data로의 정확하게 일반화하는 능력이

    증가할 것을 기대할 수 있다.

    (bias-variance tradeoff에 대한 14장의 논의와 같이)


15 1 support vector machines the linearly separable case5

15.1 Support vector machines:The linearly separable case

  • SVM을 수식으로 정형화해 보자

  • 14장(278page)에서 말했듯이,

    decision hyperplane은

    intercept term b와 decision hyperplane의 normal vector w

    로 정의될 수 있다.

    ( w 는 machine learning문헌에서 종종 weight vector로 언급된다)

  • normal vector w 에 수직인 모든 hyperplane중 하나를 선택하기 위해,

    intercept term b를 특정한다.

  • hyperplane은 normal vector와 수직이므로, hyperplane의 모든 벡터 x는

    를 만족한다.


15 1 support vector machines the linearly separable case6

15.1 Support vector machines:The linearly separable case

  • training data의 집합 을 가지고 있다고 가정하고

  • 두 데이터 클래스는 +1, -1으로 이름 붙인다.

  • intercept term은 에 합쳐서 넣지 않고, 외부로 떼어내어 b로 표현한다.

    (rather than being folded into the weight vector w

    by adding an extra always-on feature)

  • 이 경우, 선형분류기는,

  • 의 값이 1이 나오면 +1 클래스

    의 값이 -1이 나오면 -1 클래스

    로 분류된다.


15 1 support vector machines the linearly separable case7

15.1 Support vector machines:The linearly separable case

  • point를 분류하는데 있어,

    결정면에서 멀리 떨어져 있는 point를 분류하는 것은

    확신을 가질 수 있다.

  • 주어진 data set과 decision hyperplane에서

    i번째 예 벡터의

    hyperplane으로부터의functional margin을 정의하고

    이것은값을 가진다.


15 1 support vector machines the linearly separable case8

15.1 Support vector machines:The linearly separable case

  • decision surface에 대한 data set의 functional margin은,

    minimal functional margin을 가지는 data set의 어떤 point보다

    2배의 값을 가진다.

    The functional margin of a data set with respect to a decision surface is then twice the functional margin of any of the points in the data set with minimal functional margin

    (the factor of 2 comes from measuring across the whole width of the margin, as in Figure 15.3)


15 1 support vector machines the linearly separable case9

15.1 Support vector machines:The linearly separable case

  • decision surface에 대한 data set의 functional margin은,

    minimal functional margin을 가지는 data set의 어떤 point보다

    2배의 값을 가진다.

    The functional margin of a data set with respect to a decision surface is then twice the functional margin of any of the points in the data set with minimal functional margin

    (the factor of 2 comes from measuring across the whole width of the margin, as in Figure 15.3)


15 1 support vector machines the linearly separable case10

15.1 Support vector machines:The linearly separable case

  • 앞의 Functional margin의 정의를 그대로 사용하기에는 문제가 있다.

    : The value is underconstrained.

  • w벡터와 b 에 임의의 수를 곱해줌으로서,

    functional margin을 마음대로 조절할 수 있다.

    ex> 를 로 하고, b를 5b로 하면

    functional margin이 되어

    5배가 된다

  • w 벡터의 크기에 제약을 줄 필요가 있다.

    이 말을 이해하기 위해, 실제 geometry를 살펴보자


15 1 support vector machines the linearly separable case11

15.1 Support vector machines:The linearly separable case

  • r : decision hyperplane과 간의 실제 거리 (Euclidean distance)

  • data point와 decision hyperplane간의 최단거리는

    decision hyperplane에 수직이다.

    따라서 에 평행하다.

  • 이 방향에서, 단위 벡터는 이다.


15 1 support vector machines the linearly separable case12

15.1 Support vector machines:The linearly separable case

  • 에 가장 가까운 decision hyperplane의 접점 부위를


15 1 support vector machines the linearly separable case13

15.1 Support vector machines:The linearly separable case

  • Geometric margin은 scaling of parameter에 따라 변하지 않는다.

  • functionalmargin은 마음대로 scaling할 수 있으므로,

    큰 SVM문제 풀이의 편의를 위해,

    모든 data point의 functional margin이 최소한 1 이상이 되도록 선택한다.

    적어도 하나의 data point는 functional margin이 1이어야 한다.

  • Geometric margin


15 1 support vector machines the linearly separable case14

15.1 Support vector machines:The linearly separable case

  • SVM의 목표는 다음을 충족하는 와 b를 찾는 것이다.

  • 최대화 문제를 최소화 문제로 변형

  • 선형 조건을 가진 2차 함수의 최적화 문제

    : Quadratic Optimization problem


15 1 support vector machines the linearly separable case15

15.1 Support vector machines:The linearly separable case

  • Quadratic Optimization problem은

    잘 알려진 수학적인 최적화 문제이며,

    많은 solving algorithm이 존재한다.

  • Standard quadratic programming library를 이용해서 SVM을 만들 수도 있지만, 최근 이 부분에 많은 연구가 있어왔고, 그에 따라 보다 섬세하면서도 빠르고 확장 가능한 library들도 사용 가능하다. 이러한 알고리즘의 세부 사항에 대해서는 여기서 다루지 않겠다.

  • However, it will be helpful to what follows to understand the shape of the

    solution of such an optimization problem.


15 1 support vector machines the linearly separable case16

15.1 Support vector machines:The linearly separable case

  • Solution:

  • Lagrange multiplier 가 primal problem의 각 constraint 와 연관되어 있는 dual problem,을구성한다.


15 1 support vector machines the linearly separable case17

15.1 Support vector machines:The linearly separable case


15 1 support vector machines the linearly separable case18

15.1 Support vector machines:The linearly separable case

  • 는 대부분 0의 값을 가진다.

  • xi가 supporting vector인 경우만 non-zero값을 가진다.

  • 최적화 문제 및 결정 함수에서, 두 point간의 내적 계산을 포함한다.

    - point를 사용해서 계산하는 유일한 방법


15 1 support vector machines the linearly separable case19

15.1 Support vector machines:The linearly separable case

Overview

  • Training data set에서 시작

    Data set은 특이적으로 best separating hyperplane을 정의함

  • quadratic optimization procedure에 data를 줘서,

    이 hyperplane을 찾아낸다.

  • 새로 분류할 data point가 주어지면

    분류함수를 이용 계산을 수행한다.

    분류함수 결과값의 부호가, data point의 class를 결정한다.


15 1 support vector machines the linearly separable case20

15.1 Support vector machines:The linearly separable case

  • 포인트가 분류기의 마진 (혹은 오분류를 피하기 위해, 사전에 임의로 정한 confidence threshold t) 내에 위치하는경우, 분류기는 “알 수 없음” 결과를 낼 수 있다.

  • 분류함수의 결과값은 probability of classification으로 변환될 수 있다.

    : 값을 Sigmoid로 변환하는 것이 일반적인 표준이다.(Platt 2000)

  • margin이 일정하기 때문에, 만약 모델이 다양한 소스로부터 얻은 차원을 가지고 있다면, 섬세한 rescaling이 요구될 수 있다.

    (However, this is not a problem

    if our documents (points) are on the unit hypersphere)


15 1 support vector machines the linearly separable case21

15.1 Support vector machines:The linearly separable case


15 1 support vector machines the linearly separable case22

15.1 Support vector machines:The linearly separable case

Example 15.1

  • Figure 15.4의 매우 작은 data set에서 SVM을 생성하는 것을 생각해본다.

    yi : x (x1, x2)

  • 1 : (2,3)

  • -1 : (1,1), (2,0)


15 1 support vector machines the linearly separable case23

15.1 Support vector machines:The linearly separable case

Example 15.1

  • Figure 15.4의 매우 작은 data set에서 SVM을 생성하는 것을 생각해본다.

    yi : x (x1, x2)

  • 1 : (2,3)

  • -1 : (1,1), (2,0)

    SVM decision boundary

  • y = x1 + 2x2 – 5.5


15 1 support vector machines the linearly separable case24

15.1 Support vector machines:The linearly separable case

Example 15.1

  • Figure 15.4의 매우 작은 data set에서 SVM을 생성하는 것을 생각해본다.

    yi : x (x1, x2)

  • 1 : (2,3)

  • -1 : (1,1), (2,0)

    SVM decision boundary

  • y = x1 + 2x2 – 5.5


15 2 extensions to the svm model

15.2 Extensions to the SVM model

15.2.1 Soft margin classification

  • 텍스트 분류와 같이 high dimensional problem이 흔한 경우, 데이터가 linearly separable한 경우도 있지만, 일반적으로 그렇지 않은 경우가 대부분이다.

    설사, 선형 분리 가능한 경우라도, 몇몇 특이한 noise document를 무시해서

    데이터를 더 잘 분리할 수 있는 해법을 찾는 것이 낫다.

  • training data가 선형 분리 불가능한 경우,

    decision margin이 몇 개의 mistake를 만들 수 있도록 허용한다.

  • 그리고 오분류된 사례에는 >1 방정식의 margin 요구조건에서 얼마나 멀리 떨어져 있는 가에 대해 비용을 매긴다.

  • 여기에 이란 개념을 도입한다.


15 2 1 soft margin classification

15.2.1 Soft margin classification

  • Slack variable의 개념을 포함하는 SVM optimization problem

  • 최적화 문제는 이제,

    얼마나 margin을 두텁게 할 수 있는가 vs

    이 margin을 허용하기 위해 얼마나 많은 점을 이동시켜야 하는가

    간의 trade off이다.

  • 을 0보다 크게 함으로서,margin이 1보다 작은 값을 가질 수 있지만,

    최소화 문제에서 그만큼 더 더해짐으로써, penalty를 받게 된다.

  • soft margin classifier는 margin에 대해 교환된 training error를 최소화한다.

  • Parameter C는 overfitting을 통제하기 위한 regularization term이다.


15 2 1 soft margin classification1

15.2.1 Soft margin classification

  • soft margin classification의 dual problem

  • dual problem의 답

  • 의 값을 명시적으로 알 필요는 없다.

    (data point들과의 dot point로 할 수 있다)


15 2 1 soft margin classification2

15.2.1 Soft margin classification

  • 일반적으로, training data의 작은 일부분만이 support vector이다.

  • 하지만, linearly nonseparable하거나, small margin을 가지는 문제의 경우, 오분류된 데이터 포인트나 margin안에 있는 포인트는 0이 아닌 값을 가지게 될 것이다. 이러한 포인트 집합이 늘어날 수록, SVM의 testing time에 큰 지연을 가져온다.


15 2 1 soft margin classification3

15.2.1 Soft margin classification

  • 선형 SVM의 training 및 testing의 complexity는 Table 15.1에 나와있다.

  • SVM의 training time은

    대부분 QP(Quadratic Programming)을 푸는 데 들어간다.

    따라서, 풀이 방식에 따라 이론적 및 경험적 complexity는 다를 수 있다.

  • Kozlov(1979)에 의하면, QP를 푸는데 표준 시간은

    data set 크기의 세제곱에 비례한다.

  • 최근 SVM의 연구는 이러한 복잡도를 줄이기 위해 노력했으며,

    approximate solution에 의해 만족스러운 결과를 내고 있다.

  • 표준적으로 실험적인 complexity는 정도 이다.

  • 하지만 전통적인 SVM의 superlinear training시간은, 매우 큰 dataset을 가지는 경우에는 SVM의 사용을 어렵거나 불가능하게 하고 있다.


15 2 1 soft margin classification4

15.2.1 Soft margin classification

  • training example의 숫자에 선형인 Alternative traditional SVM solution 알고리즘은, text와 같이 큰 가지 수의 feature를 가지는 경우에 확장이 어려워진다.

  • 하지만 cutting plane technique에 기반한 새로운 training algorithm은,

    running time을 training example의 수 및 nonzero feature의 수에

    선형으로 가짐으로서, 희망적인 답을 내고 있다.

  • 그럼에도, quadratic optimization을 하는 실제 속도는,

    단순히 term을 세기만 하는 Naïve Bayes model보다 매우 늦다.

  • svmalgorithm을 비선형 SVM으로 확장하는 경우, 표준적으로 training complexity가 factor 만큼 증가되어, 비실용적이다.

  • 실제로는, higher order feature를 직접 계산(materialize)해서 선형 SVM을 훈련시키는 것이 종종 더 저렴하다.


15 2 2 multiclass support vector machines

15.2.2 Multiclass support vector machines

  • SVM은 본래 two-class 분류기이다. SVM을 multi-class classification에 사용하는 전통적인 방법은 Section 14.5에 소개된 바 있다.

  • build |C| one-versus-rest classifier (one-versus-all classification)

    : class 개수 만큼의 분류기를 생성한 뒤,

    테스트 데이터가 가장 큰 마진을 가지는 class를 선택한다.

  • build a set of one-versus-one classifiers

    : |C| ( |C| -1 ) / 2 분류기를 생성한 뒤,

    가장 다수의 분류기에 의해 선택된 class를 선택

    : 분류기 수는 많지만, 각 분류기 별 training set의 크기는 감소하므로,

    실제 training시간은 더 적을 수 있다.


15 2 2 multiclass support vector machines1

15.2.2 Multiclass support vector machines

  • 보다 나은 대안: Structural SVM

  • (input feature, 데이터의 class) 의쌍으로 구성된, feature vector

    에 대하여 two-class classifier를 생성한다.

    margin during training :

    correct class의 값과 nearest other class의 값 간의 차이

    constraint:

  • testing시에, 하는 분류기를 선택한다.


15 2 2 multiclass support vector machines2

15.2.2 Multiclass support vector machines

  • 이러한 방법은,

    다양한 선형 분류기의 multiclass formulation으로 확장될 수 있다.

  • 이것은 또한,

    class가 독립적인, categorical label이 아닌,

    그들 사이의 관계를 가지고 있는 임의의 구조화된 객체들

    에 대한 분류의 일반화이다.


15 2 3 nonlinear support vector machines

15.2.3 Nonlinear support vector machines


15 2 3 nonlinear support vector machines1

15.2.3 Nonlinear support vector machines

  • General idea : 원래 feature space를,

    training set이 분리 가능한 higher dimensional feature space로 mapping

  • SVM과 몇몇 선형 분류기들은, higher dimensional space로 mapping을 수행하는 데 있어, kernel trick이라 불리는 쉽고 효율적인 방법을 제공한다.

  • 커넬 함수 K는, 확장된 feature space에서 doc product에 해당하는 함수이다.


15 2 3 nonlinear support vector machines2

15.2.3 Nonlinear support vector machines


15 2 3 nonlinear support vector machines3

15.2.3 Nonlinear support vector machines

  • 기능적으로 분석할 때(In the language of functional analysis),

    어떤 커넬 함수가 유효한(valid) 커넬 함수인가?

  • 커넬함수는, Mercer’s condition을 만족해야 하므로,

    보다 정확히는 Mercer kernels라고 불리운다.

  • 커넬 함수 K는 연속적이고(continuous), 대칭적이며(symmetric),

    positive-definite gram matrix를 가져야 한다.

  • 그러한 K는, 함수 K와 같은 값을 가지는 doc product가 있는,reproducing Hilbert space로의 mapping이 존재한다는 것을 의미한다.


15 2 3 nonlinear support vector machines4

15.2.3 Nonlinear support vector machines

  • 커넬이Mercer’s condition을 만족하지 못하면,

    Quadratic Programming은 해답이 없을 수 있다.

  • 이러한 Issue들에 대해 더 잘 이해하고자 한다면,

    References의 SVM관련 서적을 참고하라.

  • 그렇지 않다면, 이 사실에 안도해도 된다.

    커넬과 관련된 일의 90%는,

    다음에 소개할 두 가지 함수를 사용한다.

  • 가장 흔히 사용되는 두 가지 커넬은,

    Polynomial kernel과 radial basis function이다.


15 2 3 nonlinear support vector machines5

15.2.3 Nonlinear support vector machines

Polynomial Kernel

  • d = 1 인 경우, linear kernel

  • d = 2 인 경우, quadratic kernel


15 2 3 nonlinear support vector machines6

15.2.3 Nonlinear support vector machines

Radial basis function 가운데 가장 흔한 형태는,

Gaussian distribution이다.

  • radial basis function은,

    무한 차원의 Hilbert space로 data를 mapping하는 것과

    동일(equivalent)하다.

    그래서 radial basis function을 구체적으로 표현하는 것은 불가능하다.

  • 이 두 함수 외에도, 커넬 개발과 관련해 흥미 있는 연구들이 있었으며,

    일부는 텍스트 영역에 유망한 것이다.

    그 중에서도 특히,string kernel에 대한 연구가 있었다.


15 2 3 nonlinear support vector machines7

15.2.3 Nonlinear support vector machines

  • SVM의세계는 자신만의 언어를 가지고 있으며,

    다른 machine learning 분야의 언어와 다른 부분이 있다.

  • Terminology의 깊은 뿌리는 수학에 두고 있다.

  • 하지만 terminology 때문에 지나치게 두려워 하지 않는 것이 중요하다.


15 2 3 nonlinear support vector machines8

15.2.3 Nonlinear support vector machines

  • Polynomial kernel은,

    (다항계수에 따라) feature conjunction을 모델할 수 있게 해준다.

    Topic 분류와 관련해서,

    개별 단어로서는 정보를 주지 못하지만,

    pair of words로서 고유의 정보를 주는,

    단어 쌍의 출현을 모델링하고자 하는 경우,

    ex> operating AND system , ethnic AND cleansing

    Quadratic Kernel을 사용할 필요가 있다.


15 2 3 nonlinear support vector machines9

15.2.3 Nonlinear support vector machines

  • 만약 세 단어의 쌍이 고유의 정보를 주는 경우,

    cubickernel을 사용할 필요가 있다.

  • radial basis function은 원(hypersphere)을 골라낼 수 있는 feature를 제공한다. 단, decision boundary는 다중의 feature들이 interact하면서 훨씬 복잡해질 수 있다.

  • string kernel은 term의 character subsequence를 feature로 가질 수 있게 해 준다.

    이 모든 것들은,

    다른 많은 영역에서 이미 쓰여왔던, 간단한 개념들이다.


15 2 4 experimental results

15.2.4 Experimental Results

  • 13장에서 살펴본 대로, SVM은 텍스트 분류에 매우 효과적이다.


15 2 4 experimental results1

15.2.4 Experimental Results

  • Joachims, Thorsten, Learning to classify Text Using Support vector machines

  • With increased dimensionality, the likelihood of linear separability increases rapidly.


15 3 issues in the classification of text documents

15.3 Issues in the classification of text documents

  • 상업적인 부분에서 텍스트 분류의 응용이 다수 존재한다.

  • Jackson and Moulinier(2002),

    ‘문서를 content에 따라 자동으로 분류할 수 있는 것이 가지는 상업적 가치는 의심의 여지가 없다. 기업 인트라넷, 정부 부서, 인터넷 출판업자등 무수히 많은 응용 가능성이 있다’

  • 분류에 대한 우리의 논의에서, classification과 관련해 text문서의 특이한 feature를 논의하기보다, 대부분 다양한 machine learning 기법들을 소개하는 데 주안점을 두었다.

  • 이런 편중은 textbook으로서는 적절한 것이지만,

    application개발자에게 있어서는 잘못된 것이다.


15 3 issues in the classification of text documents1

15.3 Issues in the classification of text documents

  • 많은 경우 성능의 개선은,

    서로 다른 machine learning 기법을 하나씩 바꿔가며 적용해 보는 것보다, 도메인 특이적인 텍스트의 특성의 발굴을 통해 얻어진다.

  • Jackson and Moulinier(2002)

    “ 데이터를 이해하는 것은 성공적인 분류의 핵심이지만,

    대부분의 분류 tool vendor들이 매우 취약한 부분이기도 하다

    시장에 존재하는 ‘one size fits all’ 방식의 많은 도구들이,

    여러 종류의 content type에서 테스트되지 않았다 ”

  • 이번 장에서는 텍스트 분류의 응용, 가능한 solution,

    application-specific heuristic에 대해 살펴본다.


15 3 1 choosing what kind of classifier to use

15.3.1 Choosing what kind of classifier to use

  • 텍스트 분류기를 생성하는 데 있어, 첫 번째 질문

    어느 정도 양의 training data가 가용 가능한가?

  • 기계학습 분류기의 실제 응용에서 가장 큰 도전은,

    충분한 양의 training data를 생성 혹은 획득하는 것이다.

  • 많은 문제와 알고리즘에서, 좋은 성능을 위해서는

    각 class별로 수백 수천개의example이 필요하다.

  • 실제 적용에서는 카테고리 수가 많이 있다.

  • 분류기 구현에 많은 시간이 가용 가능하다면,

    그 중 대부분이 데이터 자원을 모으는데 쓰일 것이다.


15 3 1 choosing what kind of classifier to use1

15.3.1 Choosing what kind of classifier to use

  • 만약 label된 training data가 없고, 데이터의 도메인에 해박한 지식을 가진 직원이 있다면, hand-written rule을 사용하는 solution을 잊지 말라.

    - standing query를 작성하는 것

    ex > (wheat OR grain ) AND NOT (whole OR bread) THEN c = grain

  • 실제 적용에서는, 규칙이 훨씬 커지고, boolean표현식보다 훨씬 더 복잡한 쿼리 언어를 사용하며, 숫자점수를 사용하기도 한다.

  • 세심한 솜씨( development data에 적용할 rule을 사람이 tuning )로,

    그러한 rule의 정확도는 매우 높아진다.

  • Jacobs와 Rau (1990)는 takeover(기업 인수)와 관련된 기사를 식별하는데 92%의 precision, 88.5%의 recall을 보여준 바 있다.


15 3 1 choosing what kind of classifier to use2

15.3.1 Choosing what kind of classifier to use

  • Haynes와 Weinstein(1990)은 Reuter newswire 문서의 675개 카테고리를 대상으로, 94% recall 및 84%의 precision을 보여주었다.

  • 그럼에도 불구하고, 그렇게 잘 튜닝된rule을 만드는 데 들어가는 노력은 매우 크다.

  • 대략 class 당 이틀이 들어가며, rule의 유지관리에 추가 시간이 들어간다. class의 문서의 내용이 변할 수도 있다.

  • 만약 매우 적은 데이터만 가지고 supervised classifier를 훈련해야 하는 경우, machine learning 이론에 의하면,high bias를 가지는 분류기를 고집해야 한다. (Section 14.6에서 토의한 내용대로)


15 3 1 choosing what kind of classifier to use3

15.3.1 Choosing what kind of classifier to use

  • 예를 들어, 그러한 경우에 Naïve Bayes가 적합하다는 이론적 및 실험적 결과(Ng and Jordan 2001; Forman and Cohen 2004)가 있다.

  • text데이터를 대상으로 한 regularized model의 실제 적용에서는, 이런 효과가 관찰되지 않기도 했다. (Klein and Manning 2002)

  • 아무튼 nearest neighbor model과 같이, 매우 낮은 bias를 갖는 모델은 금기이다.

  • 어느 쪽이든, 모델의 질은 제한된 training data로 인해 부정적 영향을 받게 된다.


15 3 1 choosing what kind of classifier to use4

15.3.1 Choosing what kind of classifier to use

  • 여기서, 이론적으로 재미있는 답은, semisupervised training method를 적용해보라는 것이다. 이것은 boostrapping이나 expectation-maximization algorithm과 같은 방법을 포함한다.(이것은 16.5장에서 소개)

  • 이러한 방법론들은, 시스템이 일부의 labeled document와,

    학습을 시도하기 위한 더 많은 양의 unlabeled document가 주어진다.

  • Naïve bayes의 큰 장점중 하나는, semisupervised learning algorithm으로 직접적인 확장이 가능하다는 것이다.

  • SVM의 경우는, Transductive SVM이라는 이름 하에,

    별도의 semisupervised learning 연구가 있다.


15 3 1 choosing what kind of classifier to use5

15.3.1 Choosing what kind of classifier to use

  • 많은 경우, 가장 실용적인 대답은, 어떻게 더 많은 labeled data를 최대한 빨리 가져오는가 이다.

  • 최적의 방법은, 누군가가 그들 업무의 과정으로써 data에 label할만한 부분에 집중하는 것이다.

  • 예를 들어, 사람들이 자신의 목적에 따라 email을 sort하거나 route한다.

    -> 이러한 행동들이 클래스에 대한 정보를 준다.

  • 분류기 training에 human labeler를 쓰는 것에 비교해서 단점은,

    labeling이 실질적인 업무 선상에 있지 않으므로,

    organize하기 어렵고, labeling의질이 종종 더 낮다는 것이다.


15 3 1 choosing what kind of classifier to use6

15.3.1 Choosing what kind of classifier to use

  • 사람이 모든 문서혹은 랜덤으로 추출한 문서를 label하는 것 보다,

    어떤 문서를 label할지 시스템이 결정하는 방식인,

    active learning에 대해 많은 연구가 있어왔다.

  • 이것은 대부분 어느 쪽으로 분류해야 할지 불확실한 것들이다.

  • annotation cost를 2배 내지 4배 정도 줄이는 효과가 있다.

  • 문제는, 한 분류기에서train이 필요하다고 생각하는 문서가,

    다른 종류의 분류기에서는 아닐 수 있다는 것이다.


15 3 1 choosing what kind of classifier to use7

15.3.1 Choosing what kind of classifier to use

  • 만약 적당한 양의 labeled data가 있다면, text분류에 대해 우리가 제시한 것들을 이용해 볼 수 있는 완벽한 위치에 있는 것이다.

  • 만약 선형 SVM을 배치하고자 한다면, 아마도 machine learning 분류기 위에 boolean rule-based 분류기를 덮어씌우는 application을 디자인해야 할 것이다.

  • 사용자들은, 맞지 않는 결과들에 대해, 종종 그것을 조정하고 싶어한다. 만약 경영자가 이를 실행에 옮겨, 특정 문서의 분류를 고정하길 원하는 경우, 이것을 전체적인 분류의 정확도에 손상이 없게 하면서 SVM의 weight을 조정하는 것보다,hand-writing rule에 의하는 것이, 훨씬 쉽다.

  • 이것이, 사용자가 해석가능한boolean like model을생성하는 decision tree와 같은 모델이 대중성이 있는 이유이다.


15 3 1 choosing what kind of classifier to use8

15.3.1 Choosing what kind of classifier to use

  • 만약 매우 많은 양의 데이터가 가용 하다면, 결과에 분류기의 선택은 별 영향이 없으며, 무엇이 best choice인지는 불분명하다.

    (cfBanko and Brill 2001)

  • training의 scalability나 runtime efficiency에 기반해 분류기를 선택하는 것이 최상일 수 있다 <- 이 정도 시점에 이르려면, 매우 많은 양의 데이터가 있어야 한다.

  • 경험적으로, training data의 크기가 두 배가 될 때마다, 분류기의 성능은 선형으로 증가한다.

  • 하지만 매우 많은 양의 데이터가 있는 경우, 향상 은 sublinear해진다.


15 3 2 improving classifier performance

15.3.2 Improving classifier performance

  • 특정 응용에 있어, domain 혹은 document collection에 특이적인 feature의 활용을 통해 분류기 성능을 향상시킬 여지가 있다.

  • 최적의 분류 성능을 위해, 특별한 조치를 필요로 하는

    특수한 subvocabulary들이 종종 있다.


15 3 2 improving classifier performance1

15.3.2 Improving classifier performance

Large and difficult category taxonomies

  • 만약텍스트 분류 문제가, 소수의 잘 분류된 카테고리로 구성되어 있다면, 많은 분류 알고리즘이 잘 동작할 것이다.

  • 하지만 현실적인 분류 문제는 종종,

    매우 많은 수의, 유사한 카테고리로 구성되어 있다.

  • 예 : web directories(the Yahoo! Directory or the Open Directory Project), library classification schemes (Dewey Decimal or Library of Congress), classification schemes used in legal or medical applications

  • Yahoo! Directory는 200,000개 이상의 카테고리와 deep hierarchy로 구성되어 있다. 가까이 연관되어있는 매우 큰 카테고리에서, 정확한 분류는 매우 어렵다.


15 3 2 improving classifier performance2

15.3.2 Improving classifier performance

  • 대부분의 큰 카테고리 집합은 hierarchical structure를 가지고 있다.

    hierarchy를 활용한, hierarchical classification은 유망한 접근법이다.

  • 하지만, 각 hierarchy의 말단 노드를 class로 활용하는 것과 비교할 때,

    현재로서는 성능 개선이 미미하다.

  • 하지만 이 방법은, 매우 큰 hierarchy에 대하여, 단순히 분류기 생성의 scalability를 향상시키는 데 유용할 수 있다.

  • 분류기 생성의 scalability를 향상시키는 또 하나의 단순한 방법은 aggressive feature selection에 의한 것이다.

  • References


15 3 2 improving classifier performance3

15.3.2 Improving classifier performance

  • machine learning의 일반적인 결과:

    다중의 분류기를 혼합하는 경우, 각각의 분류기가 생성하는 오류가 독립적이라는 가정하에, 분류기 정확도에 약간의 향상을 보인다.

  • voting, bagging, boosting 기법 들에 대한 많은 연구 논문들이 있다.

    -> reference

  • 최종적으로, hybrid의 automatic / manual solution 이

    충분한 분류 정확도를 달성하는데 필요할 수 있다.


15 3 2 improving classifier performance4

15.3.2 Improving classifier performance

  • 그런 상황에서 일반적인 접근법은, 분류기를 먼저 실행하고,

    high confidence decision을 받아들인 뒤, low confidence decision은 manual review하는 것이다.

  • 이러한 과정은 자동적으로, 나중에 새로운 버전의 machine learning 분류기에서, 새로운 training data의 생성으로 이어지게 된다.

  • 하지만 이것은, 생성된 training data가 document space에서 랜덤하게 샘플된 경우가 아닌 경우에 한해 성립한다.


15 3 2 improving classifier performance5

15.3.2 Improving classifier performance

Features for text

  • ad hoc retrieval과 text classification은 모두 term을 feature로 활용한다.

    하지만 텍스트 분류의 경우, 특정 문제에 맞춤화된 추가적인 feature를 디자인할 수 있다.

  • IR query language의 경우와 달리, 이러한 feature들은 분류기 내부에 있기 때문에, 최종 사용자에게 이러한 feature를 communicating해야 하는 문제가 없다.

  • 이러한 과정을 일반적으로 feature engineering이라 한다.


15 3 2 improving classifier performance6

15.3.2 Improving classifier performance

  • 현재 feature engineering은 machine learning에 의해 되기보다, human craft로 남아있다.

  • 좋은 feature engineering은 텍스트 분류기의 성능을 크게 향상시킨다.

  • 텍스트 분류의 가장 중요한 응용인, spam 혹은 pornography등에서,

    특히 유용하다.


15 3 2 improving classifier performance7

15.3.2 Improving classifier performance

  • 분류 문제는, 텍스트 분류에서 같은 그룹으로 묶일 수 있는 많은 수의 term을 가지고 있다.

    예 > 연도에 대한 언급, 느낌표를 포함한 string, ISBN, 화학식

  • 이것을 분류기에서 직접적으로 활용하는 것은

    vocabulary를 매우 증가시키지만,

    그것이 아는 것 (예: 그것이 화학식이다) 이상으로,

    classificatory power를 제공하지는 않는다.

  • 그러한 경우, 정규표현식과의매칭 및 구분된 다른 token으로의 전환을 통해, feature의 수 및 feature의 sparseness를 줄일 수 있다.

    -> 따라서 분류기의 성능 및 속도가 대개 향상된다.


15 3 2 improving classifier performance8

15.3.2 Improving classifier performance

  • 어떤 경우, 모든 숫자가 한 가지 feature로 전환될 수도 있지만,

    다른 종류의 숫자를 구분함으로써, 그렇지 않을 수도 있다.

    four digit number -> 대개 연도를 말함

    cardinal number

    real number with decimal point

  • 같은 방식으로 dates, ISBN number, 스포츠 게임 점수등에

    응용 가능하다.


15 3 2 improving classifier performance9

15.3.2 Improving classifier performance

다른 방향을 생각해 보자.

  • part of word matching, selectedmultiword pattern matching과 같이

    feature의 수를 증가시키는 것도 유용할 수 있다.

  • part of word matching : k-gram features

    -> 분류를 몰랐던 단어의 경우 특히 유용할 수 있다.

    예 > -rase로 끝나는 단어의 경우, training data에 없던 단어라도,

    enzyme으로 분류될 것이다.

  • selected multiword pattern matching :

    예> ethnic cleansing

    ethnic : food and art cleansing : home ethnic cleansing : word news

  • 몇몇 텍스트 분류기는,

    named entity recognizer에서 생성된 feature를 이용하기도 한다.


15 3 2 improving classifier performance10

15.3.2 Improving classifier performance

stemming 혹은 lowercasing과 같은 기법이 텍스트 분류에 도움을 주는가?

  • 항상 최종적인 테스트는, 적절한 collection에 대한 실험적인 평가지만, 그런 기법은 분류에 유용성이 제한적이다.

  • IR에서는 종종, oxygenate, oxygenation과 같은 단어를 collapse할 필요가 있다. 문서에서 두 단어가 등장한다는 것이, oxygenation에 대한 쿼리가 주어질 때, 문서가 쿼리에 relevant하다는 단서일 수 있다.


15 3 2 improving classifier performance11

15.3.2 Improving classifier performance

  • 방대한 training data가 주어질 때, stemming은 텍스트 분류에 아무 가치를 주지 못한다. 만약 한 stem의 다른형태가 같은 신호를 가지는 것이라면, 모든 parameter들이 같은 weight를 가질 것이다.

  • Stemming과 같은 기법은 data sparseness를 보상하는 경우에서만 유용하다.

  • 하지만 종종, 단어의 형태는 문서 분류에 다른 의미의 단서를 주곤 한다.

  • 지나치게 aggressive한 stemming은 분류 성능을 떨어뜨릴 수 있다.


15 3 2 improving classifier performance12

15.3.2 Improving classifier performance

Document zones in text classification

  • 6.1장에서 논의된 바 대로, 문서는 대개 zone을 가진다.

    예 > mail message header : subject, author

    research article : title, keyword

  • 텍스트 분류기는, training 및 분류 작업에서

    이러한 zone을 활용할 수 있다.


15 3 2 improving classifier performance13

15.3.2 Improving classifier performance

Upweighting document zones :

  • 서로 다른 zone에 대하여 차등적으로 weighting함으로서,

    성능의 향상을 가져올 수 있다.

  • 경험적으로, title word의 weight를 두 배로 하는 것이 효과적이었다.

  • 텍스트의 일부분 중, 명확히 zone이 정의되어 있지 않지만, 문서의 구조 혹은 내용 상 중요하다는 증거가 있는 경우, 그 부분을 upweighting하는 것도 도움이 될 수 있다.

  • Murata et al(200)에 의하면, ad hoc retrieval의 관점에서,

    (newswire) 문서에서 첫 문장을 upweighting하는 것이 도움이 될 수 있다.


15 3 2 improving classifier performance14

15.3.2 Improving classifier performance

Separate feature spaces for document zones:

  • document zone에 대한 두 가지 전략이 있을 수 있다.

  • upweighting words that appear in certain zones

    : 같은 feature를 사용하지만, 특정 zone에서 등장한 term에 좀 더 관심을 기울인다.

  • 서로 다른 zone에서 등장한 단어에 대해,

    완전히 분리된 feature set 및 parameter를 사용

    : 원칙적으로는 더 강력하다.

  • Title에서 추출한 단어는 topic이 Middle East라고 말하고,

    본문에서 추출한 단어는 topic이 Commidity라고 말할 수 있다.


15 3 2 improving classifier performance15

15.3.2 Improving classifier performance

  • 하지만 실제로는, parameter를 연관해 묶는 것이 더 효과적이다.

  • 분리된 feature set을 구성하는 것은 두배 혹은 그 이상의 parameter를 가지는 것인데, 이 경우 training data에서 보다 sparse하게 될 것이다. 이것이 평가에 나쁜 영향을 끼친다.

  • 반면, upweighting방법은 그러한 부작용이 없다.

  • 또한 단어가 다른 존에 쓰인다고 해서 다른 preference를 가지는 경우는 드물다. 단지 strength of vote만 조정하면 된다.

  • 하지만최종적으로 이것은 contingent result이다.

    - training data의 속성이나 양에 의존적인 것이다.


15 3 2 improving classifier performance16

15.3.2 Improving classifier performance

Connections to text summarization

  • 8.7장 에서 text summarization에 대해 언급한 바 있다.

  • 이 분야에서, 대부분의 연구는, 문장의 위치 및 내용과 같은 feature에 기반해서, 원본 텍스트에서 중심에 해당하는 일부분을, 추출 및 조합하는 것에 대해 목표를 두고 있다.

  • 이러한 연구들은, 특정 zone이 각각 텍스트 분류에 유용한지를 판단하는 데 이용될 수 있다.


15 3 2 improving classifier performance17

15.3.2 Improving classifier performance

  • Kolcz et al(2000)는

    특정 zone에서의 단어에만 기초해 문서를 분류하는

    feature selection의 방식을 생각함

    text summarization연구에 기반하여,

  • only the title

  • only the first paragraph

  • only the paragraph with the most tittle words or keywords

  • the first two paragraphs or the first and last paragraph

  • all sentences with a minimum number of title words or keywords

    를 이용


15 3 2 improving classifier performance18

15.3.2 Improving classifier performance

  • 일반적으로, 이러한 positional feature selection 방법은 mutual information방법 만큼의 좋은 결과를 냈다.

  • Ko et al(2000)은 text summarization에서 영감을 얻어,

    title과 문서 내용의 중심에 해당하는 문장을 upweighting하는 방법으로,

    분류기 정확도를 1% 향상시켰다.


15 4 machine learning methods in ad hoc information retrieval

15.4 Machine-learning methods in ad hoc information retrieval

  • cosine 점수, title match 등을 relevance signal을 learning problem의 feature로 생각할 수 있다.

  • 각각의 쿼리 마다 relevant, nonrelevant document들이 주어지면,

    분류기는 각 signal 들의 상대적인 weight를 계산할 수 있다.

  • 쿼리와 relevance judgment가 된 문서가 주어진다면 이것 또한 텍스트 분류 문제로 생각할 수 있다.

  • 이런 분류 기법은 최상의 것은 아니다.

    15.4.2에서 그 대안을 제시하겠다.

  • 일단은 이 작업을 분류 문제로 보고, relevant decision과 관련해서 분류기가 생성한 confidence에 따라 document를 정렬한다.


15 4 1 a simple example of machine learned scoring

15.4.1. A simple example of machine-learned scoring

  • 6.1.2장에서 다루었던 방법론을 , scoring function의 machine learning 기법으로 일반화해 본다.

  • 기본 세팅: scoring function은 두 가지 factor의 선형 결합이다.

    i. query 와 document간의 vector space cosine similarity

    ii. query term이 있는 minimum window width

  • 7.2.2에서 언급했듯, 특히 웹에서와 같이 긴 문서의 경우, query termproximity는 문서가 topic에 대한 것인지를 말해주곤 한다.

  • 한 가지 factor는, bag of word 로서의,

    문서 내 쿼리 단어의 통계량에 관련이 있고,

  • 다른 factor는 proximity weighting에 관련있다.

  • 이 두 feature만 이용하는 것은 보여주기 간편하기 때문이다.

    다른 feature들에게도 이 방식을 적용할 수 있다.


15 4 1 a simple example of machine learned scoring1

15.4.1. A simple example of machine-learned scoring

  • Error minimization 방식으로 구할 수도 있지만,

  • 이것을 geometric하게 풀어본다.


15 4 1 a simple example of machine learned scoring2

15.4.1. A simple example of machine-learned scoring

  • Thresholding기법을 적용, θ값 이상이면 relevant,

    그렇지 않으면 nonrelevant로 정의한다.


15 4 2 result ranking by machine learning

15.4.2. Result ranking by machine learning

  • 이러한 방법론은 두 가지 이상의 변수를 가지는 함수로 일반화 될 수 있다. 문서의 길이, 나이, zone contribution 등을 활용할 수 있다.

  • decision boundary로부터의 거리에 의해 probability of relevance를 계산할 수 있다.


15 4 2 result ranking by machine learning1

15.4.2. Result ranking by machine learning

  • 하지만 IR 결과 랭킹을 이런 식으로 접근하는 것은,

    문제를 바르게 생각 하는 것이 아니다.

  • 통계학자들은 보통 문제를 분류 문제혹은 회귀 문제로 나눈다.

    분류 문제 ( categorical variable is predicted )

    회귀 문제 ( real number is predicted )

  • 그 사이에 위치한 분야가 ordinal regression이다.

    : ranking is predicted

  • ad hoc retrieval에 대한 machine learning은 ordinal regression problem으로 생각할 수 있다.


15 4 2 result ranking by machine learning2

15.4.2. Result ranking by machine learning

  • 목적은, training data가 주어져 있을 때, query에 대해 문서의 집합을 랭크하는 것이다.

  • 이것은 추가적인 강점을 제공하는데,

    문서를 global scale of goodness로 mapping할 필요 없이,

    다른후보 문서들 과의 상대적인 평가만 수행하면 된다.

    : relevance에 대한 절대값을 구할 필요없이 ranking만이 요구된다.

  • ranking에 대한 이슈는 웹 검색과 밀접한 관련이 있다.

    상위 검색 리스트를 rank하는 것은 매우 중요한 일이지만,

    query에 대한 relevance를 구하는 것은 훨씬 덜 중요한 일이다.

  • 이런 작업은 structural SVM framework를 이용해 할 수 있다.

    쿼리에 대한 결과를 rank하는 작업은, 클래스를 예측하는 것에 대응함


15 4 2 result ranking by machine learning3

15.4.2. Result ranking by machine learning

  • 여기서는 보다 쉬운 ranking SVM방식에 대해 제시하고자 한다.

  • ranking SVM의 생성은 다음과 같다.

  • 판단이 되어 있는 쿼리의 집합을 가지고 시작한다.

    각 training query q마다, 쿼리에 대해 리턴된 문서의 집합을 가지고,

    이것은 사람에 의해 정렬되어 있다.

  • 모든 문서-쿼리 쌍마다, vector of feature를 생성

  • 15.4.1장에서처럼, 이때 feature는 더 많은 것을 쓸 수 있다.


15 4 2 result ranking by machine learning4

15.4.2. Result ranking by machine learning

  • 두 문서 di, dj가 주어질 때, vector of feature difference를 생성할 수 있다.

  • di가 dj보다 더 relevant 하다고가정하면 로 표시할 수 있고,

    class yijq = +1 ; otherwise -1

  • 분류기는


15 4 2 result ranking by machine learning5

15.4.2. Result ranking by machine learning

  • 한 방향으로의 정렬만 생각하므로,

    제약조건에서 yijq는 생략할 수 있다.

  • 위 수식에서 선형 분류기를 생성할 수 있다.

  • 이러한 방법론은 정규data set에서의 IR evaluation에서 standard hand-built ranking function보다 성능이 우월한 ranking function을 생성해 냈다.


15 4 2 result ranking by machine learning6

15.4.2. Result ranking by machine learning

  • 우리가 살펴본 방법론 둘은, 이 영역에서 다른 연구들과 마찬가지로, 모두 document feature의 선형 weighting방식을 사용하였다.

  • 대부분의 IR weighting 방식은 basic measurement에 대하여 nonlinear scaling을 사용하였다는 점이 흥미롭다. ( 예> logweighting of tf, idf )

  • 지금 현재, machine learning 기법은 feature의선형 결합에 있어 최적의 weight를 생성하고 있다. 하지만 basic measurement의 좋은 nonlinear scaling생성에는 그렇지 못하다. 이 부분은 human feature engineering의 영역으로 남아있다.

  • ranking function을 학습하는 일은 최근 수년간 등장한 개념이다.

    : 최근 들어서야 충분한 machine learning 지식, training document collection, computationalpower이 같이 모아져 이 방법이 실용적이 되었다.


15 4 2 result ranking by machine learning7

15.4.2. Result ranking by machine learning

  • ranking function을 학습하는 일은 최근 수년간 등장한 개념이다.

    : 최근 들어서야 충분한 machine learning 지식, training document collection, computationalpower이 같이 모아져 이 방법이 실용적이 되었다.

  • 따라서 IR의 ranking에 관한 machine learning 접근법에 대해 확정적인 내용을 전달하기는 어렵다.

  • 하지만 machine learned ranking approach가 시간에 따라 증가할 것이라는 것은 충분히 기대할 수 있다.

    : 숙련된 개인이 매우 좋은 ranking function을 수동으로 만들 수 있지만, handtuning이 어려운 일이고, 새로운 document collection이 생길 때마다 작업을 반복해야 한다.


ad
  • Login