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


9

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

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

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


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

내가 사용하고 sklearn의 LogisticRegression와 내 노트북에 약 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.