빅 데이터에 대한 로지스틱 회귀


9

약 5000 개의 기능으로 구성된 데이터 세트가 있습니다. 해당 데이터에 대해 먼저 피처 선택에 Chi Square 테스트를 사용했습니다. 그 후 응답 변수와의 유의미한 관계를 나타내는 약 1500 개의 변수를 얻었습니다.

이제 로지스틱 회귀 분석을 적용해야합니다. R에 glmulti 패키지를 사용하고 있습니다 (glmulti 패키지는 vlm에 효율적인 하위 세트 선택을 제공합니다). 한 번에 30 가지 기능 만 사용할 수 있습니다. 그렇지 않으면 데이터 세트의 행 수가 약 20000이므로 성능이 떨어집니다.

위의 문제를 해결하기위한 다른 접근 방법이나 기술이 있습니까? 위의 방법으로 가면 모델을 맞추기에는 너무 많은 시간이 걸립니다.


8
단일 머신의 메모리에 데이터 셋을 맞출 수 있다면, 특히 "제목이 큰 문제"라고 부르지 않을 것입니다. 특히 질문 제목에서이 작업을 수행하는 경우
logc

내가 사용하고 sklearnLogisticRegression와 내 노트북에 약 1 분에 4000 개 기능, 20,000 행의 문제를 해결한다.
Thomas Ahle

답변:


13

피처 스크리닝을 수행 한 다음 남아있는 피처를 이전에 얼마나 많은 데이터 고문이 수행되었는지 이해하지 못하는 방법으로 공급하는 것은 적절하지 않습니다. 모든 잠재적 기능 (예 : 탄성 망)을 처리 할 수있는 방법을 사용하는 것이 좋습니다. 데이터 축소 사용에 대한 다른 사람들의 제안도 훌륭한 아이디어입니다.


이에 대한 증거가 있습니까? O / w는 기능 선별과 마찬가지로 휴리스틱처럼 보입니다.
Zubin

2
페널티 최대 가능성 추정은 컨텍스트를 고려합니다. 예를 들어, 올가미에서 1000 개의 비 선택 변수를 고려하면 변수의 회귀 계수 추정치는 100 개의 비 선택 변수를 고려한 경우보다 작습니다. 그렇지 않으면 변수가 바이어스 방식으로 선택되고 두 번째 단계에서 변수를 다시 입력하면 컨텍스트가 손실됩니다.
Frank Harrell

여기서 편향된 의미에 대해 자세히 설명해 주시겠습니까? 사소한 의미에서 올가미는 항상 편향되어 있기 때문에 궁금합니다. 따라서 추가 편견을 참조해야합니다. 또한 합리적인 속성을 가진 2 단계 접근 방식이 있습니다 (예 : pdfs.semanticscholar.org/d90a/…
jmb

2
올가미 제로 향해 의도적으로 편향 계수 overfitting 방지한다. 처벌되지 않은 매개 변수는 너무 극단적 인 예측 값으로 이어집니다. 비정형 모형에 "선택된"변수를 맞추면 필요한 올가미 편향 이 취소되어 예측 값이 과도하게 적합합니다.
Frank Harrell

10

첫 번째 방법은 데이터 세트의 차원을 줄이기 위해 PCA를 사용하는 것입니다. 총 분산의 ~ 97 %를 유지하려고하면 상당히 도움이 될 수 있습니다.

또 다른 옵션은 확률 적 그라디언트 디센트 (stochastic gradient descent)와 같은 것을 사용하는 것입니다. 이것은 훨씬 빠른 알고리즘 일 수 있으며 R의 메모리에 맞출 수 있습니다.

편집 : R의 한 가지 문제는 RAM 만 사용할 수 있다는 것입니다. 따라서 8GB의 메모리 만 있으면 제한됩니다. 나는 이것에 많은 문제를 겪었고 그 후에 더 큰 데이터 세트를 훨씬 잘 처리하는 것처럼 보이는 파이썬의 scikit-learn을 사용했습니다.

데이터 집합의 크기에 따라 시작하는 장소의 몇 가지 아이디어를 제공 아주 좋은 차트는 여기에서 찾을 수 있습니다 : http://3.bp.blogspot.com/-dofu6J0sZ8o/UrctKb69QdI/AAAAAAAADfg/79ewPecn5XU/s1600/scikit-learn-flow -chart.jpg

여기에 이미지 설명을 입력하십시오


8
이러한 방식으로 PCA를 사용할 때 큰 관심사 는 반응 변수와 독립 변수 사이의 모든 관계가 무시하는 총 분산의 3 %에있을 수 있다는 것입니다. 가장 작은 구성 요소 가 응답 자체에 비례하여 포함 할 변수의 최적 선택을 구성 할 수 있기 때문에 사용할 주요 구성 요소 수를 결정하는 일반적인 방법은없는 것 같습니다.
whuber

1
실제로 주 메모리에 데이터 세트를로드 할 수 있다면 (내가 설명하는 것을 고려하는 경우라고 가정합니다) 확률 적 구배 강하가 차원 축소 기술을 시도하기 전에 취해야 할 첫 번째 단계라고 생각합니다. 파이썬에서 Scikit-learn (또는 R,하지만이 언어의 사용자는 아님)을 사용하면 제대로 작동합니다.
Bertrand R

나는 이것이 유용한 답변이라고 생각하지만, OP는 기능 감소가 아닌 로지스틱 회귀에 대해 묻고 있다고 생각합니다. 에디션에서 질문의 해당 부분을 해결할 수 있습니까?
logc

PCA가 회귀 문제에 얼마나 유용한 지 잘 모르겠습니다. 문제는 이것입니다. PCA는 입력 행렬의 최대 특이 값을 유지하지만 행렬의 의사 역수는 특이 값을 반전 시키므로 원래 값 중 가장 작은 값 을 유지하려고 합니다. 데이터를 스케치하는 것이 좋습니다 : arxiv.org/abs/1411.4357
Thomas Ahle

4

@Frank Harrell이 이미 언급했듯이, 모든 5000 개의 피처 ( p ) 에 대해 불규칙 회귀를 수행하기 위해 탄력적 그물 또는 LASSO를 사용 하는 것이 피처 선택을위한 좋은 시작이 될 것입니다. 종속 관심 변수). R 패키지를 사용하여 이러한 방법 중 하나를 수행 할 수 있습니다 glmnet.

잠재적 인 예측 변수 변수 ( p = 5000) 간에 공유되는 관계를 고려하려면 패키지를 사용하여 임의 포리스트 를 실행 randomForest하거나 패키지를 사용하여 기울기 부스팅을 실행 하여 gbm잠재적 예측 변수의 상대적 중요성을 평가하는 것이 좋습니다. 이진 결과와 관련하여. 이 정보를 사용하면보다 교묘 한 로지스틱 회귀 모델을 작성할 수 있습니다.


3
아니요, 모델에서 제거 할 매개 변수를 결정하기 위해 데이터 준설을 수행하는 것은 올바르지 않습니다. 탄성 그물과 같이 임의의 숲의 가치는 적절한 수축량을 포함한다는 것입니다. 마스킹되지 않은 방식으로 찾은 변수의 하위 집합으로 시작 하면 바이어스가 발생합니다. Y
Frank Harrell

1

나는 당신이 R에 국한되지 않는다고 가정합니다. 이것은 아마 당신이해서는 안되는 큰 데이터 문제이기 때문입니다. Apache Spark의 확장 가능한 기계 학습 라이브러리 인 MLlib 를 사용해 볼 수 있습니다 .

Apache Spark 는 인 메모리 대용량 데이터 처리를위한 빠르고 일반적인 엔진입니다. 이들은 간단한 프로그래밍 모델을 사용하여 컴퓨터 클러스터에서 대규모 데이터 세트를 분산 처리 할 수있는 Hadoop 프레임 워크에서 작동합니다. 단일 서버에서 수천 대의 컴퓨터로 확장 할 수 있도록 설계되었으며 각 컴퓨터는 로컬 계산 및 스토리지를 제공합니다.

'수천 대의 컴퓨터'는 선택 사항입니다! (!), 로컬 업무용 / 홈 데스크톱에서도 설정할 수 있습니다.

MLlib로 돌아 가면 아래 알고리즘이 기본 제공됩니다.

  • K- 평균을 이용한 K- 평균 군집화 || 초기화.
  • L1- 및 L2- 규정 선형 회귀.
  • L1 및 L2 정규화 된 로지스틱 회귀
  • 명시 적 등급 또는 암시 적 피드백을 갖는 교번 최소 제곱 협업 필터링.
  • 나이브 베이 즈 다항식 분류.
  • 확률 적 경사 하강.

빅 데이터를 정기적으로 사용하는 경우 Hadoop 솔루션을 채택해야 할 수도 있습니다.


0

Vowpal Wabbit : Vowpal Wabbit을 사용해보십시오 . 매우 큰 데이터 세트와 많은 수의 기능에서 잘 작동합니다.

웹 사이트에 따르면 :

Yahoo!에서 시작한 프로젝트입니다. 빠르고 확장 가능하며 유용한 학습 알고리즘을 디자인하기 위해 Microsoft Research에서 연구하고 계속합니다. VW는 머신 러닝 속도의 핵심으로 테라피 어 데이터 세트에서 쉽게 학습 할 수 있습니다. 병렬 학습을 통해 학습 알고리즘 중 첫 번째 선형 학습을 수행 할 때 단일 머신 네트워크 인터페이스의 처리량을 초과 할 수 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.